Computer Science Course Description

(Unless otherwise specified, all are 3-unit term courses of three hours of lecture and one hour of tutorial per week.)
CSC1010 Hands-on Introduction to C
1U; 1 Lect. 2 Lab.
This course aims to provide an intensive hands-on introduction to the C programming language. Topics include the basic C language syntax, variable declaration, basic operators, program flow and control, defining and using functions, file and operating system interface. Specific key features of the C programming language such as structured-programming methodology, complex data-type, pointers, etc. will be highlighted. (Not for students who have taken CSC1110 or 1140 or 1510)
CSC1020 Hands-on Introduction to C++
1U; 1 Lect. 2 Lab.
This course aims to provide an intensive hands-on introduction to the C++ programming language. Topics include the basic C++ language syntax, variable declaration, basic operators, program flow and control, defining and using functions, file and operating system interface. Specific key features of the C++ programming language such as object-oriented methodology, class templates, encapsulation, inheritance, polymorphism, etc. will be highlighted. (Not for students who have taken CSC1120 or 1520)
CSC1030 Hands-on Introduction to Java
1U; 1 Lect. 2 Lab.
This course aims to provide an intensive hands-on introduction to the Java programming language. Topics include the basic Java language syntax, variable declaration, basic operators, program flow and control, defining and using functions, file and operating system interface. Specific key features of the Java programming language such as object-oriented methodology, class templates, encapsulation, inheritance, polymorphism, etc. will be highlighted. (Not for students who have taken CSC1130 or 1530)
CSC1110 Introduction to Computing Using C
Computer-oriented problem-solving methods and algorithm development; structured programming concepts; concepts of abstract data types; simple data structures such as array, pointers and linked lists; illustrative applications. The C programming language will be used. (Not for students who have taken CSC1010 or 1120 or 1130 or 1510 or 1520 or 1530.)
CSC1120 Introduction to Computing Using C++
Computer-oriented problem-solving methods and algorithm development; object oriented programming concepts; concepts of abstract data types; simple data structures; illustrative applications. The C++ programming language will be used. (Not for students who have taken CSC1020 or 1110 or 1130 or 1510 or 1520 or 1530.)
CSC1130 Introduction to Computing Using Java
This course aims at providing students with the basic knowledge of computer programming. In particular, programming methodologies such as object-oriented programming and structured programming, and the use of abstract data types will be illustrated using high-level programming languages such as Java. (Not for students who have taken CSC1030 or 1110 or 1120 or 1510 or 1520 or 1530.)
CSC1140 Programming Laboratory
1 U; 1 Lab.
Students will practise the programming principles they learn using different high-level programming languages. Prerequisite: CSC1130 or with the consent of the instructor. (Not for students who have taken CSC1010.)
CSC1410 Digital Logic
Number representation. Boolean algebra and logic gates. Combinational circuit minimization. Sequential circuit analysis and synthesis, sequential circuit state minimization, hazards and races. Digital circuit technology: digital integrated circuits, PLA and ROM. (Not for students who have taken CSC2510.)
CSC1510 Computer Principles and C Programming
3 U; 2 Lect. 1 Tut.
This course introduces computer programming in C. Students will learn the functional elements of a computer system, modern programming concepts, problem solving and creation of computer applications. Students will be able to apply these computing skills in various disciplines. This course also provides a foundation to further study in advanced computing topics. (Not for Majors of Faculty of Engineering, and students who have taken CSC1010 or 1110 or 1120 or 1130 or 1520 or 1530.) (This course is equivalent to CSC1500 offered in 2007-08 and before.)
CSC1520 Computer Principles and C++ Programming
This course introduces computer programming in C++. Students will learn the functional elements of a computer system, object-oriented programming concepts, problem solving and creation of computer applications. Students will be able to apply these computing skills in various disciplines. This course also provides a foundation to further study in advanced computing topics. (Not for Majors of Faculty of Engineering, and students who have taken CSC1020 or 1110 or 1120 or 1130 or 1510 or 1530.)
CSC1530 Computer Principles and Java Programming
3 U; 2 Lect. 1 Tut.
This course introduces computer programming in Java. Students will learn the functional elements of a computer system, modern programming concepts, problem solving and creation of computer applications. Students will be able to apply these computing skills in various disciplines. This course also provides a foundation to further study in advanced computing topics. (Not for Majors of Faculty of Engineering, and students who have taken CSC1030 or 1110 or 1120 or 1130 or 1510 or 1520.)
CSC1580 Visual Programming
This course introduces computer application programming using a visual programming environment. Students will learn visual programming principles, modern programming concepts, and problem solving techniques. There will be learning examples and hands-on exercises for the understanding and creation of GUI-based computer applications in areas such as data processing, statistical analysis, financial reporting, etc. Students will be able to apply these computing skills in building practical computer applications for various disciplines. (Not for Majors of Faculty of Engineering.)
*CSC1720 Building Web Applications
CSC1740 Modern Computer Systems
The course aims to provide an overview of modern computer technologies. Computing systems concepts such as modern computer architecture and network. System security issues such as virus protection, Internet security using firewalls and data encryption are also introduced. (Not for S7 entrants of Engineering Majors.)
CSC2100 Data Structures
The concept of abstract data types and the advantages of data abstraction are introduced. Various commonly used abstract data types including vector, list, stack, queue, tree, and set and their implementations using different data structures (array, pointer based structures, linked list, 2-3 tree, B-tree, etc.) will be discussed. Sample applications such as searching, sorting, etc., will also be used to illustrate the use of data abstraction in computer programming. Analysis of the performance of searching and sorting algorithms. Application of data structure principles. Prerequisite: CSC1110 or 1120 or 1130 or its equivalent. (Not for students who have taken CSC2520.)
CSC2110 Discrete Mathematics
Set theory, functions, relations, combinatorics, graph theory, algebraic systems, propositional and predicate logic.
CSC2120 Introduction to Software Engineering
2 U; 2 Lect. 1 Lab.
This course aims to introduce students to software engineering concepts. Software life cycles and processes: requirements analysis and specifications; design techniques, functional design, object oriented design; implementation methodology, software testing and maintenance; application of CASE tools; documentation. Software Engineering laboratory: a series of exercises to practise the principles of software engineering. Prerequisite: CSC1110 or 1120 or 1510 or 1530. (Not for Majors of Computer Science and Computer Engineering.)
CSC2510 Computer Organization
This course is designed to provide the basic knowledge of computer organization and assembly language programming. Functions and structures of the basic building blocks: CPU, memory unit and input/output units will be introduced. Assembly language programming is used as a tool to study the internal coding of information, number representation, arithmetic operations and the flow of information within a microcomputer. Prerequisite: CSC1110 or 1120 or 1130 or 1510 or 1530. (Not for Majors of Computer Science and Computer Engineering, and students who have taken ELE3230.)
CSC2520 Data Structures and Applications
This course formally examines the relationship between abstract data types and data structures. The implementation of abstract data types using various data structures will be discussed. Abstract data types including list, stack, queue, symbol table, tree and graph will be introduced. Introductory complexity analysis and big-O notation will be illustrated with simple algorithms such as searching and sorting. Prerequisite: CSC1110 or 1120 or 1130 or 1510 or 1530. (Not for Majors of Computer Science, Computer Engineering and students who have taken CSC2100.)
CSC2720 Building Web Applications
The course is concerned with the development of web applications. The major topics include 1) Building blocks of web applications, 2) Client-side technologies, 3) Server-side technologies, and 4) Web application design and securities issues. Prerequisite: CSC1110 or 1120 or 1130 or 1510 or 1530 or its equivalent. (Not for Majors of Computer Science, Computer Engineering, Information Engineering, Internet Engineering, and students who have taken INE2720 or CSC1720.)
CSC2800 Numerical Computation
This course aims at introducing the computational techniques on numerical methods. Course contents include computational error analysis; algorithms for roots finding; solutions of linear and non-linear equations, and their sensitivity to computational errors; constrained and unconstrained optimization; curve fitting; applications examples. Prerequisite: CSC1110 or 1120 or 1130 or 1510 or 1530 or its equivalent.
CSC3100 Software Engineering
Software lifecycles: system modelling, requirements analysis and specifications, design techniques, implementation methodology, testings, maintenance and engineering laboratory. Analytical tools: software metrics, system performance measurement and evaluation. Management techniques: estimations, planning, project management, communication skills and documentations. Introductions to CASE tools and security. Prerequisite: CSC1110 or 1120 or 1130. (Not for students who have taken ERG3820 or IEG3080 .)
CSC3120 Compiler Construction
The course aims at teaching students about compiler development methodology and its associated technology to modern applications. The course contents included formal aspects, lexical analysis, syntax analysis, syntax-directed translation, run-time environments, intermediate code generation, code generation and code optimization. Prerequisite: CSC3130 or 3640.
CSC3130 Formal Languages and Automata Theory
Deterministic and nondeterminisitic finite automata, regular expressions, context-free grammars, pushdown automata, context-sensitive grammars, parsing of LR(O) and LR(K) languages, introduction to Turing machines and computability. Prerequisite: CSC2110.
CSC3150 Introduction to Operating Systems
Principles of operating systems: process management, memory management, file system, protection and security. Design and implementation methodology, performance evaluation. Case studies. Concurrent Programming. Prerequisite: CSC2100.
CSC3160 Design and Analysis of Algorithms
Basics of algorithm analysis: correctness and time complexity. Techniques for designing efficient algorithms: greedy method, divide and conquer, and dynamic programming. Fundamental graph algorithms: graph traversals, minimum spanning trees and shortest paths. Introduction to complexity theory: polynomial-time reductions and NP-completeness. Prerequisites: CSC2100 and 2110. (Not for students who have taken CSC3190.)
CSC3170 Introduction to Database Systems
Concepts and principles of database management systems. Subjects include: basic concepts, system structures, data models, database languages (SQL in particular), relational database normalization, file systems, indexing, query processing, concurrency control and recovery schemes. Prerequisites: CSC2100 or 2520. (Not for students who have taken ITM3010.)
CSC3180 Principles of Programming Languages
This course introduces, analyses and evaluates the important concepts found in current programming languages. The concepts are illustrated by contrasting their appearances in different languages. Major topics include: concepts, paradigms and implementation techniques. Prerequisites: CSC2100 or 2520.
CSC3190 Introduction to Discrete Mathematics and Algorithms
Introduction to logic, combinatorics, recurrence relations and graph theory. Design and analysis of algorithms: greedy method, divide and conquer, and dynamic programming. Fundamental algorithms including sorting, graph algorithms, number-theoretic algorithms and numerical algorithms. Introduction to NP-completeness. Prerequisite: CSC2100. (Not for students who have taken CSC3160.)
CSC3210 Principles of Multiagent Systems
This course discusses the principles of multiagent systems. Topics include interactions, coordination, organizations and communications in multiagent systems; agent actions and behaviours; artificial minds and task distribution. Prerequisite: CSC1110 or 1120 or 1130.
CSC3220 Algorithms for Bioinformatics
First, introducing basic knowledge of DNA, genes, genomes, proteins, RNA, replication, transcription and translation. Then, introducing basic algorithms, such as dynamic programming, tree/graph searching and matching, context free grammar, etc, and applications to bioinformatics for sequence comparison, alignment and motifs; gene recognition and microarray; phylogenetic trees, protein structure and motif recognition.
CSC3230 Fundamentals of Artificial Intelligence
Basic concepts and techniques of artificial intelligence. Knowledge representation: predicate logic and inference, semantic networks, scripts and frames, and object-oriented representation. Searching: such as A*, hill-climbing, minimax and alpha-beta pruning. Planning: the frame problem and the STRIPS formalism, representation schemes and planning strategies. Neural networks: learning algorithms, neural architecture and applications. Natural language processing. Knowledge acquisition and expert systems: properties, techniques and tools of expert systems. Prerequisite: CSC2100.
CSC3250 Computers and Society
2 U; 2 Lect. 1 Tut.
This course studies social, legal, ethical issues of information technology in society. Problems related to privacy, computer crimes, freedom of speech, intellectual property, professionalism, health, safety will be discussed. Local and global examples will be used to illustrate the issues.
CSC3260 Principles of Computer Graphics
Fundamental computer graphics techniques and algorithms will be introduced. Topics to be covered include: graphics hardware and interaction devices, transformation of coordination systems, scan conversion algorithms, hidden surface algorithms, illumination models and shading, rendering, texture mapping, computer animation and visualization. Prerequisite: CSC2100 or 2520.
CSC3270 Advanced Programming Laboratory
2 U; 1 Lect. 1 Lab.
The course will mainly focus on programming exercises for advanced data structures and algorithms. Topics include dynamic programming, computational geometry, number theory, simulation, combinatorial problems, optimization techniques, graph theory, etc. Prerequisite: CSC2100. Corequisite: CSC3160.
CSC3280 Introduction to Multimedia Systems
This course covers the design and implementation of modern multimedia systems. Topics include multimedia systems design, multimedia data representation, multimedia hardware and software, multimedia communication and networking, multimedia programming and multimedia information systems.
CSC3290 Computational Photography
Computational Photography is an emerging new field created by the convergence of computer graphics, computer vision and conventional photography. Its main purpose is to overcome the limitations of the traditional camera by using computational techniques to produce a richer, more vivid, perhaps more perceptually meaningful representation of our visual world. The content of this course is to study ways in which samples from the real world (images and video) can be used to generate compelling computer imagery. We will learn how to acquire, represent, and render scenes from digitized photographs. The following topics will be covered: cameras, image formation and models; image manipulation (warping, morphing, mosaicing, matting, compositing); data-driven synthesis; visual perception; high dynamic range imaging and tone mapping; image-based lighting; non-photorealistic rendering; and other applications in photography. Prerequisite: CSC2100.
CSC3420 Computer System Architectures
This course provides a foundation for understanding and evaluating the design principles incorporated in modern computer systems with particular emphasis on architectural features required to support high-level languages and system software: design methodology and descriptive tools; instruction set design; memory system design; control system design; input/output systems design; parallel processing concepts and future trends. Prerequisite: ERG2020. (Not for students who have taken CEG3420.)
CSC3510 Computer Game Software Development
3 U; 2 Lect. 1 Lab.
This course aims at providing an overview on the role of computer technologies in creating interactive computer games. Categorization of different game genres is first introduced, followed by examination of various stages throughout the development of computer games. The concept of a game engine and workflow in using game engines to develop computer games are studied. Online games with the emphasis on the network and user management issues are discussed. The students are expected to be able to develop their own computer games using a game engine after studying this course. Prerequisite: CSC1110 or 1120 or 1510 or 1530. (Not for Majors of Computer Science and Computer Engineering.)
CSC3530 Software Technology
This course introduces the main concepts of modern software technology with special emphasis on contemporary middleware, Web Services, platforms, and service-oriented architecture issues. The topics of this course continually evolve as new technologies and approaches emerge. The key middleware services and Web technologies such as XML and its variants are covered. Emerging application servers and approaches to build Web applications are examined to illustrate practical applications. Prerequisite: CSC2520. (Not for Majors of Computer Science, Computer Engineering, and students who have taken CSC3100 or IEG3080.)
CSC3550 Introduction to Computer Graphics
This course aims to provide students from all disciplines with an opportunity to learn about computer graphics. Topics of this course include basic geometry for computer graphics, transformation of coordinate systems, scan conversion, shading and illumination, user interactions and animation. Prerequisite: CSC1110 or 1120 or 1130 or 1510 or 1530 or its equivalent. (Not for Majors of Computer Science and Computer Engineering.)
CSC3640 Introduction to Theoretical Computer Science
Basic set theory, relation and function, countable and uncountable sets, finite automata and regular languages, pushdown automata and context-free languages, turing machines, computability theory, basics of complexity theory. Prerequisite: CSC2100 or 2520. (Not for Computer Science Majors.)
CSC4010, 4020 Final Project I, II
4 U each; 4 Lect. 1 Lab.
This course involves a significant project in any area of computer science. The project may be taken individually or in small group. A project report has to be written under the supervision of the teaching staff.
CSC4120 Principles of Computer Game Software
This course aims at establishing the principles, techniques and tools in the design and development of computer game software with focus on the real time performance consideration. Topics include: stages in computer game development, concept of game engine, rendering considerations, physics effects, artificial intelligence (AI), audio effects, scripting and environment for game project development. Prerequisite: CSC2100 or 2520. Prerequisite/Corequisite: CSC3260 or 3550.
CSC4130 Introduction to System Administration Laboratory
1 U; 1 Tut. 3 Lab.
The purpose of this course is to introduce the basic knowledge of system administration. Sample laboratory work include system installation, system upgrade, resource configuration and security setup. Prerequisites: CSC3150 or CEG3150, and CSC4430 or CEG4430. (Not for Computer Science Minors.)
CSC4140 Open-source Software Project Development
This course is to introduce techniques in developing software projects. Topics include leveraging the web server, the database server, and the scripting languages, such as the LAMP (Linux, Apache, MySQL, PHP) platform, to develop software projects, advanced debugging techniques, and performance tuning techniques. Also, this course will introduce the knowledge on software licensing, such as the GNU public license (GPL) and the Berkeley Software Distribution (BSD) license. Last but not least, this course emphasizes in arousing the creativity and fun in developing software projects. Prerequisite: CSC2100.
CSC4160 Distributed and Parallel Computing
This course introduces concepts, models and implementations related to distributed and parallel computing. Topics include parallel and distributed system architectures, concurrent languages, synchronization and concurrency control techniques, and applications in distributed databases.
CSC4260 Current Topics in Computing Techniques
This course aims at providing the students with the latest knowledge of advancements in pure or applied computer science. Topics covered in this course will vary from year to year, subject to the availability and speciality of the teachers.
CSC4430 Data Communication and Computer Networks
This course is designed to present a systematic approach to the study of data communication and computer networks. The ISO OSI seven layered protocols are accepted as the framework for the course. Physical layer includes digital data transmission, data encoding and data communication techniques. Medium access sublayer includes ALOHA control protocols, IEEE 802 local area network protocols and fiber optic network protocols. Data link layer design issues, error detection and correction, sliding window protocols, network layer design issues, routing algorithms and internetworking. Transport layer and session layer design issues and examples on application layer protocols.
CSC4510 Programming Languages and Compilers
A systematic study of computer languages, the interplay between their designs and implementations, and an introduction to compilation. Classifications of languages and comparison of paradigms. Data types and structures, control structures and data flow, and flexibility and efficiency considerations. An introduction to all phases of compilers, grammars, lexical analysers and parsers. Prerequisite: CSC3510. (Not for Majors of Computer Science and Computer Engineering.)
CSC4640 Computer Structures
This course aims at providing an understanding of the design of a typical computer system. An overview of earlier generations of computer systems will be followed by detailed discussions of the principles and designs of the von Neumann computer and its derivatives. Topics covered will include data representations, computer arithmetic and ALU, machine instruction formats, memory hierarchy concept and implementation, I/O management, control unit and overlapped execution. Comparisons of modern computer systems will also be presented. Prerequisite: CSC2510. (Not for Majors of Computer Science and Computer Engineering.)
CSC5110 Advanced Topics in Software Engineering
Formal and advanced quantitative approaches in software engineering. Formal specifications: algebraic and model-based specifications, reasoning and proving, formal refinements and transformations from specifications to programmes. Software security: encryption theory and systems, viruses and other software attacks, controls and protections. Software reliability: models, theory and applications.
CSC5120 Advanced Topics in Database Systems
This course will introduce to students advanced topics in database systems including advanced data structures, concurrency control, deadlock resolutions, recovery schemes, distributed database systems, multimedia database indexing techniques and data mining. Prerequisite: CSC3170. (Not for students who have taken SEG5010.)
CSC5150 Learning Theory and Computational Finance
This course aims to introduce the computational learning theory for applications to various areas of finance. This course consists of two parts. The first part gives an introduction of basic mathematical methods in finance. The second part deals with nonlinear computing models, Bayesian Ying-Yang unified learning theory, other computational learning techniques and their applications to FOREX or stock forecasting, portfolio optimization and programmed trading.
CSC5160 Topics in Algorithms
This course will introduce to students topics in algorithms. The detailed contents may be changed from year to year depending on the current development and teacher specialty.
CSC5170 Theory of Computation Complexity
Deterministic and non-deterministic Turing machine, Church's thesis, uncomputability and intractability, NP-completeness, polynomial time hierarchy, probabilistic computation, predicate calculus and incompleteness.
CSC5180 Techniques for Data Mining
Data mining provides useful tools for the analysis, understanding and extraction of useful information from huge databases. These techniques are used in business, finance, medicine and engineering. This course will introduce the techniques used in data mining. Topics will include clustering, classification, estimation, forecasting, statistical analysis and visualization tools.
CSC5210 Advanced Topics in Computer Graphics and Visualization
Provide in-depth treatment of the following advanced computer graphics and visualization topics: radiosity rendering and global illumination, procedure texturing and modelling, imagebased rendering, stereo imaging, real-time volume graphics and interactive visualization. Prerequisite: CSC3260 or its equivalent.
CSC5230 Advanced Topics in Compiler Construction
Advanced topics in compiler construction, including code optimization, partial evaluation, supercompilers, compilation techniques for multiparadigm languages, concurrent compilers, etc.
CSC5240 Combinatorial Search and Optimization with Constraints
Students will be exposed to various constraint-based combinatorial search and optimization techniques that arise in artificial intelligence, operations research, etc. Topics include, but are not limited to, local propagation, consistency algorithms, Boolean constraint solving, numerical constraint solving, linear programming, search, and their applications.
CSC5250 Information Retrieval and Search Engines
This course surveys the current research in information retrieval for the Internet and related topics. This course will focus on the theoretical development of information retrieval systems for multimedia contents as well as practical design and implementation issues associated with Internet search engines. Topics include probabilistic retrieval, relevance feedback, indexing of multimedia data and applications in e-commerce.
CSC5280 Image Processing and Computer Vision
Image processing: enhancement technique, image compression, segmentation, morphology, color image processing and restoration. Computer vision: representation, decision models, structural methods and image understanding.
CSC5310 Topics in Biometrics
This course introduces the fundamentals of biometrics the technology for secure identification and personal verification. The course is designed with a balance between the basic theoretical background and practical application. It examines pattern recognition, discriminant analysis, classification methods and other techniques used in designing and implementing biometric systems. In particular, the course investigates several key biometric features, e.g., face related processing, fingerprint analysis, handwriting verifications, speaker recognition, etc.
CSC5320 Topics in Graph Algorithms
A course on graph theory and graph algorithms with emphasis on the algorithmic aspects of graph theory. The course will cover classical topics such as search techniques, connectivity, colouring, matching and covering, network flows, planarity, traversability, perfect graphs and NP-completeness of graph problems. It will also cover recent advances in graph minors and fixed-parameter tractability of graph problems. Prerequisite: CSC3160 or its equivalent.
CSC5330 Advanced Algorithms for Bioinformatics
This course introduces the computational issues and algorithms in bioinformatics. Topics include algorithms for pairwise sequence comparison and alignment for DNA and protein sequences, multiple sequence alignment, analysis and prediction of protein secondary structure, etc. Techniques such as dynamic programming, Hidden Markov models, neural networks and their applications in bioinformatics will also be covered.
CSC5340 Advanced Topics in Distributed Software Systems
This course will provide knowledge of basic architectural features of distributed systems, including client-server systems, network systems, middleware systems and their main advantages, challenges, design issues and current solutions. Current object-oriented distributed system and software platforms (CORBA, DCOM, and Java/RMI) will be studied in detail. Topics include: distributed systems characteristics and design issues, distributed software engineering, communication and remote procedure calls, building distributed systems, generosity and interoperability, naming and trading services, concurrent processes and threads, transactions and distributed transactions, reliability and availability, and security problems and solutions. Laboratory of a series of distributed system projects will be assigned and conducted.
CSC5350 Game Theory in Computer Science
This course aims at introducing the theory and application of game theory in the context of Computer Science, in particular, decision making in multiagent systems. The course first focuses on rational behaviour of agents in strategic games and the existence of pure and mixed strategy Nash equilibrium. Then extensive games with and without perfect information, including bargaining games and repeated games will be introduced. The concepts of subgame perfect equilibrium and sequential equilibrium will be discussed. Finally, the course covers coalitional games and the concepts of cores and kernels.
CSC5360 Grid Computing
This course is designed to give a broad overview of the concepts, technologies and open research areas of Grid computing along with the state-of-the-art in Grid software. Topics include architecture, programming, resource management, information infrastructure, security, data management, Grid middleware and tools, Web services, Grid services, current applications and research.
CSC5390 Advanced Topics in GPU Programming
The evolution of consumer graphics hardwares leads to the introduction of parallel, programmable GPUs (Graphics Processing Units). The strong parallel computational power of GPUs not only supports real-time and realistic rendering, but also the cost-effective platform for scientific computing, such as physical simulation, numerical analysis, evolutionary computation, image processing, and computer vision, etc. This course introduces the evolution of shading language and GPU, the basic concept in GPU programming, and the recent advanced usage of GPU in computer graphics and general-purpose computing. Topics covered include: shader programming, procedural texture and modelling, programmable graphics pipeline, modern shading language, GPGPU (general-purpose computing on GPU), limitations of GPU, and case studies of advanced usages of GPU. Prerequisite: CSC3260 or equivalent.
CSC5420 Computer System Performance Evaluation
Computer system performance evaluation through analytical and simulation studies. Brief overview of queueing theory, computational algorithms, sequential and parallel simulation techniques. Performance evaluation in distributed resource allocation, computer interconnection architecture, multiprocessing and multithreads computation, parallel I/O architectures, distributed database concurrency control protocols, multiple access protocols in communication network, and parallel programming models, etc. Students are expected to have knowledge in probability, stochastic processes and computer architecture.
CSC5430 Autonomous Agents and Multiagent Systems
Characteristics of autonomous agents. Agent architectures: BELIEF-DESIRE-INTENTION architecture, purely reactive architectures and hybrid architecture. Multiagent systems: speech acts theory, agent communication and agent cooperation protocols. Agent-oriented programming. Distributed hierarchical planning. Distributed rational decision making: protocols and strategies, Nash equilibrium and Pareto optimality, auctions, voting, Clarke tax, OCSMcontracts. Argumentation and negotiation. Prerequisite: CSC2110.
CSC5460 Virtual and Augmented Reality
This course introduces the fundamental and advanced research topics in virtual and augmented reality (VR/AR), including VR/AR tools and metaphors, multi-sensory interactions, geometric and behavior modeling, touch-enabled interfaces, real-time immersive navigation, human factors in VR/AR, augmented reality systems, internet-based VR/AR applications. The webbased virtual reality interfaces plus other graphics engines build up the developing tools for testing the alternative ideas/solutions for the advanced VR/AR research and real-time applications. Prerequisite: CSC3260 or its equivalent.
CSC5470 Computer and Network Security
Issues of computer and network security. Security protocols. Firewalls. Computer viruses. Audit trails. System security threats. Applications of cryptography. Prerequisite: CSC4430 or CEG4430 or IEG3310 or its equivalent. (Not for students who have taken IEG5240.)

* Course offered in 2005-06 and before.


CUHK   |   Engineering Faculty   |   CSE Webmail   |   Search   |   Sitemap   |   Privacy Statement   |   Contact Us
Copyright © 2008 Department of Computer Science and Engineering, The Chinese University of Hong Kong. All rights reserved.
Email: dept@cse.cuhk.edu.hk       Tel: (852) 26098440       Fax: (852) 26035024