HKU-Tsinghua Dual Degree Programme Course Descriptions


Candidates will be required to do the coursework in the respective courses selected. Not all courses are offered every semester.


Engineering Core Courses

MATH1851 Calculus and ordinary differential equations (6 credits)

MATH1853 Linear algebra, probability and statistics (6 credits)

ENGG1300 Fundamental mechanics (6 credits)

ENGG1310 Electricity and electronics (6 credits)

ENGG1320 Engineers in the modern world (6 credits)

ENGG1330 Computer programming I (6 credits)

ENGG1340 Computer programming II (6 credits)

Please refer to the Engineering Core Courses in the syllabus for the degree of BEng for details.

University Requirements on Language Enhancement Courses


CAES1000. Core University English (6 credits)

Please refer to the University Language Enhancement Courses in the syllabus for the degree of BEng for details.


CAES9542. Technical English for Computer Science (6 credits)

Running alongside Computer Science project based courses, this one semester, 6-credit course will build and consolidate final year CS and Computing and data analytics students’ ability to compose technical reports, and make technical oral presentations. The focus of this course is on helping students to report on the progress of their Final Year Project in an effective, professional manner in both written and oral communication. Topics include accessing, abstracting, analyzing, organizing and summarizing information; making effective grammatical and lexical choices; technical report writing; and technical presentations. Assessment is wholly by coursework.

Co-requisite: COMP4801 or COMP4802 or COMP4804
Assessment: 100% continuous assessment.

University Common Core Curriculum

Successful completion of 24 credits of courses in the Common Core Curriculum, comprising at least one from each Area of Inquiry with not more than 24 credits of courses being selected within one academic year except where candidates are required to make up for failed credits:

  • Scientific and Technology Literacy

  • Humanities

  • Global Issues

  • China: Culture, State and Society



COMP2119. Introduction to data structures and algorithms (6 credits)

Arrays, linked lists, trees and graphs; stacks and queues; symbol tables; priority queues, balanced trees; sorting algorithms; complexity analysis.

Prerequisite: ENGG1340 or COMP2113 or COMP2123

Assessment: 40% continuous assessment, 60% examination



COMP2121. Discrete mathematics (6 credits)

This course provides students a solid background on discrete mathematics and structures pertinent to computer science. Topics include logic; set theory; mathematical reasoning; counting techniques; discrete probability; trees, graphs, and related algorithms; modeling computation.

Mutually exclusive with: MATH3600

Assessment: 50% continuous assessment, 50% examination



COMP2396. Object-oriented programming and Java (6 credits)

Introduction to object-oriented programming; abstract data types and classes; inheritance and polymorphism; object-oriented program design; Java language and its program development environment; user interfaces and GUI programming; collection class and iteration protocol; program documentation.

Prerequisite: ENGG1340 or COMP2113 or COMP2123

Mutually exclusive with: ELEC2543

Assessment: 50% continuous assessment, 50% examination



COMP3231. Computer architecture (6 credits)

Introduction to computer design process; performance and cost analysis; instruction set design; data-path and controller design; pipelining; memory system; I/O design; GPU architecture and programming; introduction to advanced topics.

Prerequisite: COMP2120

Assessment: 40% continuous assessment, 60% examination



COMP3250. Design and analysis of algorithms (6 credits)

The course studies various algorithm design techniques, such as divide and conquer, and dynamic programming. These techniques are applied to design novel algorithms from various areas of computer science. Topics include: advanced data structures; graph algorithms; searching algorithms; geometric algorithms; overview of NP-complete problems.

Prerequisite: COMP2119 or ELEC2543

Assessment: 50% continuous assessment, 50% examination



COMP3258. Functional programming (6 credits)

The course teaches the basics of functional programming using the language Haskell. The main goal is introduce students to fundamental programming concepts such as recursion, abstraction, lambda expressions and higher-order functions and data types. The course will also study the mathematical reasoning involved in the design of functional programs and techniques for proving properties about functions so defined. With the adoption of lambda expressions recent versions of Java, C++ or C#, functional programming and related programming techniques are becoming increasingly more relevant even for programmers of languages that are not traditionally viewed as functional. This course is important to introduce students to such techniques.

Prerequisite: COMP2121

Assessment: 50% continuous assessment, 50% examination



COMP3270. Artificial intelligence (6 credits)

This is an introduction course on the subject of artificial intelligence. Topics include: intelligent agents; search techniques for problem solving; knowledge representation; logical inference; reasoning under uncertainty; statistical models and machine learning.

Prerequisite: COMP2119

Mutually exclusive with: IIMT3688

Assessment: 50% continuous assessment, 50% examination



COMP3271. Computer graphics (6 credits)

Overview of graphics hardware, basic drawing algorithms, 2-D transformations, windowing and clipping, interactive input devices, curves and surfaces, 3-D transformations and viewing, hidden-surface and hidden-line removal, shading and colour models, modelling, illumination models, image synthesis, computer animation.

Prerequisite: COMP2119

Assessment: 50% continuous assessment, 50% examination



COMP3278. Introduction to database management systems (6 credits)

This course studies the principles, design, administration, and implementation of database management systems. Topics include: entity-relationship model, relational model, relational algebra, database design and normalization, database query languages, indexing schemes, integrity and concurrency control.

Prerequisite: COMP2119 ELEC2543

Mutually exclusive with: IIMT3601

Assessment: 50% continuous assessment, 50% examination



COMP3297. Software engineering (6 credits)

This course introduces the fundamental principles and methodologies of software engineering. It covers the software process, and methods and tools employed in the modern software development, with focus on the analysis, design, implementation and testing of contemporary object-oriented systems. The use of the UML and contemporary frameworks are emphasized. The course includes a team-based project in which students apply their new knowledge to a full lifecycle of iterative and incremental development.

Prerequisite: ENGG1340 or COMP2113 or COMP2123

Assessment: 50% continuous assessment, 50% examination



COMP3311. Legal aspects of computing (6 credits)

To introduce students to the laws affecting computing and the legal issues arising from the technology. Contents include: the legal system of Hong Kong; copyright protection for computer programs; intellectual property issues on the Internet; data privacy; computer-related crimes; codes of professional conduct for computer professionals.

Prerequisite: ENGG1340 or COMP2113 or COMP2123

Assessment: 30% continuous assessment, 70% examination



COMP3314. Machine learning (6 credits)

This course introduces algorithms, tools, practices, and applications of machine learning. Topics include core methods such as supervised learning (classification and regression), unsupervised learning (clustering, principal component analysis), Bayesian estimation, neural networks; common practices in data pre-processing, hyper-parameter tuning, and model evaluation; tools/libraries/APIs such as scikit-learn, Theano/Keras, and multi/many-core CPU/GPU programming.

Prerequisite: MATH1853 or MATH2101; and COMP2119 ELEC2543

Assessment: 50% continuous assessment, 50% examination



COMP3316. Quantum information and computation (6 credits)

This course offers a gentle introduction to the interdisciplinary field of quantum information and computation. We will start from the basic principles of quantum theory and become familiar with the counterintuitive notions of quantum superposition and entanglement. Once the basics have been covered, we will explore the cornerstones of quantum information theory: quantum cloning machines, quantum teleportation, quantum state discrimination, quantum error correction, quantum cryptography and data compression. Finally, we will provide an overview of quantum computation and of the main quantum algorithms, including Shor’s algorithm for prime factorization in polynomial time and Grover's quantum search algorithm.

Prerequisite: MATH1853 or MATH2101 or equivalent (e.g., PHYS2155)

Assessment: 50% continuous assignment, 50% examination



COMP3317. Computer vision (6 credits)

This course introduces the principles, mathematical models and applications of computer vision. Topics include: image processing techniques, feature extraction techniques, imaging models and camera calibration techniques, stereo vision, and motion analysis.

Prerequisite: COMP2119 and MATH1853 or MATH2101

Assessment: 50% continuous assessment, 50% examination



COMP3320. Electronic commerce technology (6 credits)

This course aims to help students to understand the technical and managerial challenges they will face as electronic commerce becomes a new locus of economics activities. Topics include Internet and WWW technology, information security technologies, public-key crypto-systems, public-key infrastructure, electronic payment systems, and electronic commerce activities in different sectors.

Prerequisite: COMP3278

Assessment: 50% continuous assessment, 50% examination



COMP3322. Modern technologies on World Wide Web (6 credits)

Selected network protocols relevant to the World Wide Web (e.g., HTTP, DNS, IP); World Wide Web; technologies for programming the Web (e.g, HTML, XML, style sheets, PHP, JavaScript, Node.js.; other topics of current interest (AJAX, HTML5, web services, cloud computing).

Prerequisite: COMP1117 or ENGG1330 or ENGG1111 or ENGG1112

Mutually exclusive with: IIMT3663

Assessment: 60% continuous assessment, 40% examination



COMP3323. Advanced database systems (6 credits)

The course will study some advanced topics and techniques in database systems, with a focus on the system and algorithmic aspects. It will also survey the recent development and progress in selected areas. Topics include: query optimization, spatial-spatiotemporal data management, multimedia and time-series data management, information retrieval and XML, data mining.

Prerequisite: COMP3278

Assessment: 50% continuous assessment, 50% examination



COMP3329. Computer game design and programming (6 credits)

This course introduces the concepts and techniques for computer game design and development. Topics include: game history and genres, game design process, game engine, audio and visual design, 2D and 3D graphics, physics, optimization, camera, network, artificial intelligence and user interface design. Students participate in group projects to gain hands-on experience in using common game engine in the market.

Pre-requisite: ENGG1340 or COMP2113 or COMP2123

Assessment: 50% continuous assessment, 50% examination



COMP3330. Interactive mobile application design and programming (6 credits)

This course introduces the techniques for developing interactive mobile applications on Android platform. Topics include user interface design, graphics, parallel computing, database, network, multimedia, sensors and location service. Trends and tools for developing applications on various mobile platforms are also discussed. Students participate in both individual assignments and group projects to practice ideation, reading, writing, coding and presentation skills.

Prerequisite: COMP2396

Assessment: Assessment: 70% continuous assessment, 30% examination



COMP3351. Advanced algorithm analysis (6 credits)

This class introduces advanced mathematical techniques for analyzing the complexity and correctness of algorithms. NP-complete problems are believed to be not solvable in polynomial time and we study how approximation algorithms could give near optimal solutions. In particular, we will see that probability theory gives us a very powerful tool to tackle problems that are otherwise hard to solve.

Prerequisite: COMP3250; or basic knowledge in probability and algorithms

Assessment: 50% continuous assessment, 50% examination



COMP3352. Algorithmic game theory (6 credits)

Strategic behaviors of users are of increasingly importance in today’s computational problems, from data analysis (where a user may manipulate his data) to routing (where a user may strategically choose a path instead of the one that the algorithm specifies). This is an undergraduate advanced algorithm course that covers various topics at the interface of theoretical computer science and economics, seeking to provide the basic concepts and techniques, both economic and algorithmic ones, that would allow to students to design algorithms that achieve the desirable outcomes in the presence of strategic behaviors of users.

This course focuses on three topics: 1) mechanism design, a study on incentivizing users to truthfully report their data for a given computational task; 2) price of anarchy in games, a systematic approach to quantify the inefficiency caused by users’ strategic behaviors; and 3) algorithms and complexity theory for learning and computing Nash and market equilibria. The course will also cover some selected advanced topics such as the use of data of past user behaviors in auction design, and case studies of some important applications including online advertisement auctions and kidney exchange market.

Prerequisite: MATH1853 or MATH2101; and COMP2119

Assessment: 50% continuous assessment, 50% examination



COMP3353. Bioinformatics (6 credits)

The goal of the course is for students to be grounded in basic bioinformatics concepts, algorithms, tools, and databases. Students will be leaving the course with hands-on bioinformatics analysis experience and empowered to conduct independent bioinformatics analyses. We will study: 1) algorithms, especially those for sequence alignment and assembly, which comprise the foundation of the rapid development of bioinformatics and DNA sequencing; 2) the leading bioinformatics tools for comparing and analyzing genomes starting from raw sequencing data; 3) the functions and organization of a few essential bioinformatics databases and learn how they support various types of bioinformatics analysis.

Prerequisite: COMP2119
Assessment: 70% continuous assessment, 30% examination



COMP3354. Statistical learning (6 credits)

The challenges in learning from big and complicated data have led to significant advancements in the statistical sciences. This course introduces supervised and unsupervised learning, with emphases on the theoretical underpinnings and on applications in the statistical programming environment R. Topics include linear methods for regression and classification, model selection, model averaging, basic expansions and regularization, kernel smoothing methods, additive models and tree-based methods. We will also provide an overview of neural networks and random forests.

Pre-requisite: MATH1853 or MATH2101 or STAT1602 or STAT1603
Assessment: 50% continuous assessment, 50% examination



COMP3356. Robotics (6 credits)

This course provides an introduction to mathematics and algorithms underneath state-of-the-art robotic systems. The majority of these techniques are heavily based on probabilistic reasoning and optimization – two areas with wide applicability in modern AI. We will also cover some basic knowledge about robotics, namely geometry, kinematics, dynamics, control of a robot, as well as the mathematical tools required to describe the spatial motion of a robot will be presented. In addition, we will cover perception, planning, and learning for a robotic system, with the obstacle avoidance and robotic arm manipulation as typical examples.

Pre-requisites: MATH1853 or MATH2014; and COMP2121 or STAT2601; and COMP2119

Assessment: 50% continuous assessment, 50% examination



COMP3357. Cryptography (6 credits)

This course offers a gentle introduction to the field of cryptography. We will start from the basic principles of confidentiality, integrity and authentication. After that, we will go through some fundamental cryptographic primitives like hash function, symmetric key encryption, public key encryption and digital signatures. Finally, we will introduce the basics of quantum cryptography including quantum key distribution and random number generation.

Pre-requisites: MATH1853 or MATH2101 or equivalent (e.g., PHYS2155)

Assessment: 50% continuous assessment, 50% examination



COMP3358. Distributed and parallel computing (6 credits)

This course introduces the basic concepts and modern software architectures on distributed and parallel computing. Topics include: computer network primitives, distributed transactions and two-phase commits, webservices, parallelism and scalability models, distributed consistency models, distributed fault-tolerance, actor and monads, Facebook photo cache, Amazon key-value stores, Google Map-reduce, Spark, and TensorFlow.

Pre-requisites: COMP3230 or COMP3234

Assessment: 50% continuous assessment, 50% examination



COMP3359. Artificial intelligence applications (6 credits)

This course focuses on practical applications of AI technologies. The course comprises two main components: students first acquire the knowledge and know-how of the state-of-the-art AI technologies, platforms and tools (e.g., TensorFlow, PyTorch, Open AI, scikit-learn, Azure AI) via self-learning of designated materials including open courseware. Students will then explore practical AI applications and complete a course project which implements an AI-powered solution to a problem of their own choice.

Pre-requisites: ENGG1340 or COMP2113

Assessment: 70% continuous assessment, 30% examination



COMP3403. Implementation, testing and maintenance of software systems (6 credits)

This course examines the theory and practice of software implementation, testing and maintenance. Topics in implementation include: detailed design issues and implementation strategies; coding style and standards; the review process; pattern implementation and reuse. Testing covers strategies and techniques for unit and component testing; integration testing; system, performance and acceptance testing; test documentation and test management. Topics in maintenance include maintenance techniques, tools and metrics; software rejuvenation; and refactoring.

Prerequisite: COMP3297 or

Co-requisite: COMP2396

Assessment: 50% continuous assessment, 50% examination



COMP3404. Software quality and project management (6 credits)

Topics in software quality include: software quality models; quality assurance; software quality metrics; quality reviews, inspections and audits. Topics in project management include: project planning, cost estimation and scheduling; project monitoring and control; agile, traditional and extreme process models and their management; risk analysis; configuration management and control; software acquisition; contract management; and process improvement.

Prerequisite: COMP3297

Mutually exclusive with: IIMT4601

Assessment: 50% continuous assessment, 50% examination



COMP3407. Scientific computing (6 credits)

This course provides an overview and covers the fundamentals of scientific and numerical computing. Topics include numerical analysis and computation, symbolic computation, scientific visualization, architectures for scientific computing, and applications of scientific computing.

Prerequisites: COMP1117 or ENGG1330 or ENGG1111 or ENGG1112; and COMP2121

Assessment: 50% continuous assessment, 50% examination



MATH2014. Multivariable calculus and linear algebra (6 credits)

- Vectors and Matrices: Vectors in space, dot product and cross product, determinants (with geometric interpretations).

- Partial Derivatives: Functions of several variables, partial derivatives, extreme values and Lagrange multipliers, Taylor's formula.

- Multiple Integrals: Double and triple integrals, substitution in multiple integrals.

- Matrix Algebra: Matrix addition and multiplication, system of linear equations as a matrix equation.

- Vector Spaces: The Euclidean spaces as vector spaces, its subspaces, span of vectors, linear independence, basis and dimension.

- Eigenvalues and Eigenvectors: Diagonalization and computing powers.

- Numerical Methods: Bisection method and Newton's method for finding roots of equations, Simpson's rule and Trapezoidal rule for numerical integration.

Prerequisite: Pass in MATH1013 or (MATH1851 and MATH1853)

Assessment: 50% test, 50% examination



STAT2601. Probability and statistics I (6 credits)

Sample spaces; Operations of events; Probability and probability laws; Conditional probability; Independence; Discrete random variables; Cumulative distribution function (cdf); Probability mass function (pmf); Bernoulli, binomial, geometric, and Poisson distributions; Continuous random variables; Cumulative distribution function (cdf); Probability density function (pdf); Exponential, Gamma, and normal distributions; Functions of a random variable; Joint distributions; Marginal distributions; Independent random variables; Functions of jointly distributed random variables; Expected value; Variance and standard deviation; Covariance and correlation.

Prerequisite: Pass or already enrolled in MATH2014, or (MATH2101 and MATH2211)

Assessment: 30% coursework, 70% examination

© 2021 Department of Computer Science, Faculty of Engineering, The University of Hong Kong. All rights reserved.

Please login with your CS account (for staff only)