Computer Science Course Description

CSCI1020 Hands-on Introduction to C++

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.
Exclusion: CSCI1120 or 1520 or 1540 or ESTR1100

 

CSCI1030 Hands-on Introduction to Java

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.
Exclusion: CSCI1130 or 1530 or ESTR1102

 

CSCI1040 Hands-on Introduction to Python

This course aims to provide an intensive hands-on introduction to the Python scripting language. Topics include the basic Python language syntax, variable declaration, basic operators, programme flow and control, defining and using functions, file and operating system interface. Specific key features of the Python scripting language such as object-oriented support, high level dynamic data types, embedding within applications etc. will be highlighted.

 

CSCI1050 Hands-on Introduction to MATLAB

This course aims to provide an intensive hands-on introduction to MATLAB programming. Topics include using the MATLAB interactive environment, variables, operators, expressions, control structures, arrays and matrix operations, defining and using functions, plotting graphs, using Simulink, etc.

 

CSCI1110 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.
Exclusion: CSCI1010 or 1120 or 1130 or 1510 or 1520 or 1530 or 1540 or ESTR1100 or 1102

 

CSCI1120/ESTR1100 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.
Exclusion: CSCI1020 or 1110 or 1130 or 1510 or 1520 or 1530 or 1540 or ESTR1100 or 1102

 

CSCI1130/ESTR1102 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.
Exclusion: CSCI1030 or 1110 or 1120 or 1510 or 1520 or 1530 or 1540 or ESTR1100 or 1102

 

CSCI1140 Programming Laboratory

Students will practise the programming principles they learn using C programming language.
Prerequisite: CSCI1120 or 1130 or with the consent of the instructor.
Exclusion: CSCI1010

 

CSCI1510 Computer Principles and C Programming

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.
Exclusion: CSCI1010 or 1110 or 1120 or 1130 or 1520 or 1530 or 1540 or ENGG1100 or 1110 or 2600 or ESTR1000 or 1002 or 1100 or 1102 or 2008

 

CSCI1520 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.
Exclusion: CSCI1020 or 1110 or 1120 or 1130 or 1510 or 1530 or 1540 or ENGG1100 or 1110 or 2600 or ESTR1000 or 1002 or 1100 or 1102 or 2008

 

CSCI1530 Computer Principles and Java Programming

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.
Exclusion: CSCI1030 or 1110 or 1120 or 1130 or 1510 or 1520 or 1540 or ENGG1100 or 1110 or 2600 or ESTR1000 or 1002 or 1100 or 1102 or 2008

 

CSCI1540 Fundamental Computing With C++

This course introduces fundamental computing principles, problem-solving methods and algorithm development, simple data structures, illustrative applications. The C++ programming language will be used.
Exclusion: CSCI1020 or 1110 or 1130 or 1510 or 1520 or 1530 or ESTR1100 or 1102

 

CSCI1580 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.
Exclusion: ENGG1100 or 1110 or 2600 or 2601 or ESTR1000 or 1002 or 2008

 

CSCI2040 Introduction to Python

This course aims to provide an intensive hands-on introduction to the Python scripting language. Topics include the basic Python language syntax, variable declaration, basic operators, programme flow and control, defining and using functions, file and operating system interface. Specific key features of the Python scripting language such as object-oriented support, functional programming support, lambda function, list comprehension, high level dynamic data types, embedding within applications, module creation etc. will be highlighted. Special topics include using Python for web/data access, animation, as well as using Python to develop a web crawler.
Exclusion: CSCI1040

 

CSCI2100/ESTR2102 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: CSCI1110 or 1120 or 1130 or 1510 or 1520 or 1530 or ENGG1110 or ESTR1002 or 1100 or 1102
Exclusion: CSCI2520

 

CSCI2110 Discrete Mathematics

Set theory, functions, relations, combinatorics, graph theory, algebraic systems, propositional and predicate logic.

Exclusion: ENGG2440 or 2460 or ESTR2004 or 2010

 

CSCI2120 Introduction to Software Engineering

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: CSCI1110 or 1120 or 1130 or 1510 or 1520 or 1530 or 1540 or ESTR1100 or 1102
Exclusion: CSCI3100 or IERG3080 or ENGG3820

 

CSCI2510 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: CSCI1110 or 1120 or 1130 or 1510 or 1520 or 1530 or 1540 or ESTR1100 or 1102
Exclusion: CENG2400 or ELEG3230 or ENGG2020 or ESTR2100 or 2104

 

CSCI2520 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: CSCI1110 or 1120 or 1130 or 1510 or 1520 or 1530 or 1540 or ESTR1100 or 1102
Exclusion: CSCI2100 or ESTR2102

 

CSCI2720 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: CSCI1110 or 1120 or 1130 or 1510 or 1520 or 1530 or 1540 or ESTR1100 or 1102

 

CSCI2800 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: CSCI1110 or 1120 or 1130 or 1510 or 1520 or 1530 or 1540 or ESTR1100 or 1102

 

CSCI3100 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: CSCI1110 or 1120 or 1130 or 1510 or 1520 or 1530 or 1540 or ESTR1100 or 1102
Exclusion: ENGG3820 or IERG3080

 

CSCI3120 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: CSCI3130 or 3640

 

CSCI3130 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: CSCI2110 or ENGG2440 or ESTR2004

 

CSCI3150/ESTR3102 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: CSCI2100 or 2520 or ESTR2102

 

CSCI3160/ESTR3104 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.
Prerequisite: CSCI2100 and 2520 or ESTR2102, and CSCI2110 or ENGG2440 or ESTR2004
Exclusion: CSCI3190 or ESTR3104

 

CSCI3170 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.
Prerequisite: CSCI2100 or 2520 or ESTR2102

 

CSCI3180/ESTR3106 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.
Prerequisite: CSCI2100 or 2520 or ESTR2102

Exclusion: ESTR3106

 

CSCI3190 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: CSCI2100 or 2520 or ESTR2102

Exclusion: CSCI3160 or ENGG2440 or ESTR2004 or 3104

 

CSCI3220 Algorithms for Bioinformatics

This course describes some algorithms commonly used in contemporary bioinformatics. After a brief introduction to basic molecular biology and genetics, four main topics will be covered with corresponding lists of algorithms:

  1. Sequence alignment and assembly: dynamic programming for optimal sequence alignment, FASTA and BLAST for heuristic alignment of long sequences, tree-based methods for multiple sequence alignment, suffix-tree, suffix-array and Burrows-Wheeler Transform for short read alignment, and algorithms based on de Bruijn graphs for sequence assembly
  2. Statistical modeling: forward, backward, Viterbi and Baum-Welch algorithms for hidden Markov models, Gibbs sampling for sequence motif discovery, and Bayesian classifiers, logistic regression and expectation-maximization for data classification and clustering
  3. Phylogenetics: methods based on Jukes-Cantor and Kimura models for divergence time estimation, maximum parsimony, UPGMA, Neighbor-joining and maximum likelihood methods for phylogenetic tree reconstruction.
  4. High-throughput data analysis: Hierarchical clustering and k-means for data clustering, and algorithms for selected problems such as signal peak calling, detection of gene fusion, haplotype phasing.
Other topics such as RNA secondary structure prediction may also be covered depending on the available time.

 

CSCI3230/ESTR3108 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: CSCI2100 or 2520 or ESTR2102

Exclusion: ESTR3108

 

CSCI3260 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: CSCI2100 or 2520 or ESTR2102

 

CSCI3270 Advanced Programming Laboratory

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: CSCI2100 or ESTR2102

Corequisite: CSCI3160

 

CSCI3280 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.

 

CSCI3290 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-Dr.iven synthesis; visual perception; high dynamic range imaging and tone mapping; image-based lighting; non-photorealistic rendering; and other applications in photography.
Prerequisite: CSCI2100 or ESTR2102

 

CSCI3310 Mobile Computing and Applications Development

This course aims at introducing various development considerations in mobile applications. Topics include: Fundamental concepts in user interface design, mobile file systems, networking and security issues, energy saving consideration in mobile application development. Graphics programming on mobile devices such as OpenGL ES will also be discussed.
Prerequisite: CSCI2100 or 2520 or ESTR2102

 

CSCI3320 Fundamentals of Machine Learning

The first part introduces basic methods, including minimum error versus maximum likelihood, parametric versus nonparametric estimation,¡@linear regression, factor analysis, Fisher analysis, singular value decomposition, clustering analysis, Gaussian Mixture, EM algorithm, spectral clustering, nonnegative matrix factorization. The second part provides an introduction on small sample size learning, consisting of model selection criteria, RPCL learning, automatic model selection during learning, regularization and sparse learning.
Prerequisite: ENGG2040 or 2430 or ESTR2002

 

CSCI3420 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: ENGG2020 or ESTR2104
Exclusion: CENG3420

 

CSCI4120 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: CSCI2100 or 2520 or ESTR2102
Corequisite: CSCI3260 or 3550.

 

CSCI4140 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: CSCI2100 or 2520 or ESTR2102

 

CSCI4160 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.

 

CSCI4180 Introduction to Cloud Computing

This course introduces the concepts and principles of cloud computing. Subjects include: cloud computing models (including SaaS, PaaS, IaaS); distributed and parallel data processing (e.g. MapReduce, Hadoop, multicore technologies); virtualization technologies (such as hypervisor, virtual machines, full virtualization, paravirtualization); data storage (cloud storage architectures, data centers, data deduplication); security/privacy issues; and case studies of real-world cloud services (e.g. Amazon EC2, Windows Azure). This course will emphasize applied methodologies of using cloud computing for solving practical engineering problems.
Prerequisite: CSCI3150 or CENG3150 or ESTR3102

 

CSCI4190 Introduction to Social Networks

This course introduces how the social, technological, and natural worlds are connected, and how these relationships can be modeled as high dimensional graphs. The use of algorithmic approach to study these large scale networks so as to shed light on their connections and intrinsic properties will be employed. Topics include:1) how opinions, personal interests, idea, news and political movements spread via social networks; 2) how to maintain the robustness of the world wide web; 3) why we observe fragility in some of our electrical networks; 4) understand the formation process of large scale online social networks like Facebook; 5) how to perform effective product advertisement in large scale online social networks; and 6) how information or virus can be propagated in these large scale online social networks. This course aims to provide simple but fundamental theories on how one can understand the formation and interaction on these social networks. This course is multi-disciplinary in nature, and it is suitable for engineering, science, mathematics, economics or business students.
Prerequisite: CSCI2100 or 2520 or ESTR2102

 

CSCI4210 Reverse Software Engineering

This course introduces the concepts of software reverse engineering, and illustrate how these concepts can be applied to protective programming style that leads to secure software systems design. Topics include: pointer subterfuge, dynamic memory management, data types conversion and security implication, proper file I/O operations, reverse engineering basics, Windows and Linux OS fundamentals, various executable formats, reversing engineering tools, modifying and auditing program binaries, malware detection, watermarking applications.
Prerequisite: CSCI3150 or ESTR3102 and CSCI3180 or ESTR3106

 

CSCI4220 Introduction to Game Theory in Computer Science

This course aims at introducing the decision making and game theory in the context of Computer Science. The course starts with decision making under risk, decision making under uncertainty and utility theory. It then covers rational behaviour of agents in strategic games and the existence of pure and mixed strategy Nash equilibrium. Then extensive games and subgame perfect equilibrium, including repeated games and trigger strategy equilibrium, will be introduced. The course also introduces coalitional games and the concept of the cores. Finally, social choices, Arrow's Impossibility Theorem and the revelation principle will be discussed.
Prerequisite: CSCI2100 or ESTR2102, and ENGG2040 or 2430 or ESTR2002
Exclusion: CMSC5728 or CSCI5350

 

CSCI4320 Business Information Systems

This course comprises three parts: The first part introduces different strategies, methods and techniques that are used for modeling, design and development of Business information systems (BIS). The second part introduces the domain of Service design and development in enterprise context. Finally, the third part proposes the connection between strategic business objectives and the design and use of information systems and services from a holistic perspective.

 

CSCI4430 Data Communication and Computer Networks

This course aims to introduce fundamental concepts and technologies in computer networking. The course adopts a top-down approach introducing the TCP/IP networking stack. The design of the contemporary communication applications will be studied. The fundamental concepts in implementing the reliable transport protocols, such as TCP, will be taught in this course. Design issues of TCP, such as the sliding window protocol and the congestion control, will also be included. This course will also focus on the IP network and the routing algorithms used in the Internet. Last, the design issues in the data link layer (e.g., Ethernet), including the medium access control, will be introduced.
Prerequisite: CSCI3150 or CENG3150 or ESTR3102

 

CSCI4998 Final Project I

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.
Prerequisite: For CSCI major. For Year 3 and above. For Year 2 AD/HD.

 

CSCI4999 Final Project II

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.

 

CSCI5010 Practical Computational Geometry Algorithms

This course will discuss data structures and algorithms for solving fundamental problems in computational geometry with good theoretical guarantees. Topics covered include line-segment intersection, polygon triangulation, convex hull, linear programming, orthogonal range searching, point location, voronoi diagram, delaunay triangulation, and so on.
Prerequisite: CSCI2100 or CSCI2520 or equivalent

 

CSCI5020 External Data Structures

This course will introduce worst-case efficient data structures in the external memory (EM) computation model. In this model, the space complexity is measured in the number of disk blocks, while the time complexity is measured in the number of I/Os (each transferring a block of data between the memory and the disk). Fundamental techniques of designing and analyzing EM structures will be studied, in the context of several classical problems including sorting, stabbing queries, orthogonal range searching, and so on.
Prerequisite: CSCI2100 or CSCI2520 or equivalent

 

CSCI5030 Machine Learning Theory

This course first introduces fundamentals of machine learning with a large size of samples, including basic principles (maximum likelihood vs least redundancy) and typical structures (linear systems of hidden factors, mixture of local structures, and Markov temporal models), The second part of the course covers learning theories towards small sample size challenge, including major topics (model selection, learning regularization, two stage implementation, sparse learning, and automatic model selection) and three streams of efforts, namely generalization error estimation (CV, AIC, VC theory), shortest coding length (MML vs MDL) or similarly various Bayes (BIC, MAP, Laplace, marginal, and variational) , and BYY learning (BYY system, best harmony theory, Ying-Yang alternation updating, and five action circling implementation).

 

CSCI5050 Bioinformatics and Computational Biology

This course introduces several core topics in bioinformatics and computational biology. Each topic will be discussed from three aspects: 1) motivation and concepts, 2) computational problems and methods, and 3) available tools and data. The topics include basics in molecular biology, high-throughput experiments and data preprocessing, sequencing and alignment, motifs and domains, ontology and functional enrichment, biological networks and data mining, secondary and tertiary structures, and other latest developments in this research area.

 

CSCI5060 Techniques in Theoretical Computer Science

This course introduces advanced techniques that are commonly used, including but not limited to the following:

  1. Techniques related to randomness, such as random sampling, random projection, random walk.
  2. Techniques related to algebra, such as Fourier analysis on finite group (especially on the Boolean hypercube), spectral algorithms, algebraic graph theory.
  3. Techniques from other areas, such as information theory, optimization, geometry, topology.

 

CSCI5070 Advanced Topics in Social Computing

This course aims to advance computational techniques used in social computing. More specifically, the course will present state-of-the-art methodologies and approaches to mine social data, signals, and behaviours. The course topics include, but are not limited to: social network theory and analysis, graph mining, link-based analysis and algorithms, web intelligence, web data mining, knowledge discovery on the web, web analytics, web information retrieval, learning to rank, ranking algorithms, relevance feedback, collaborative filtering, recommender systems, human/social computation, social games, opinion mining, sentiment analysis, social monetization, security/privacy issues related to web intelligence, question and answering, and other related topics in social computing, etc.

 

CSCI5080 Advanced System Security

The aim of this course is to understand advanced concepts in computer system security. Topics include kernel exploits, rootkit detection, malicious software identification and defence, computer systems forensic and investigation, forensic and data collection tools, analysis of malicious software and its implications.

 

CSCI5120 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, data mining, data on the web and network data analysis.
Prerequisite: CSCI3170
Exclusion: CSCI5705 and SEEM5010

 

CSCI5150 Machine Learning Algorithms and Applications

This course introduces a dozen of machine learning algorithms and typical applications in computational finance, bioinformatics, and other big data analyses, including six topics that consist of (1) unsupervised learning algorithms for clustering analysis, local subspaces, manifold learning, and their applications in image analysis and bioinformatics; (2) arbitrage pricing theory (APT) and temporal factor analysis for finance market modelling and stream data analysis;(3) supervised learning algorithms(decision tree and deep learning) for pattern recognition, (4) learning biomedical case-control analyses and machine fault detection from an integrative view of description, classification, and hypothesis test;(5) algorithms of graph analysis and nonnegative matrix decomposition for learning biology networks and social computing; (6) brief introductions of other learning algorithms such as transfer learning, recommendation systems, etc.

 

CSCI5160/ENGG5102 Advanced Algorithms

This course will study the design and analysis of exact and approximation algorithms using advanced techniques such as combinatorial methods, probabilistic methods, linear programming, semidefinite programming, and spectral methods.
Exclusion: ENGG5102

 

CSCI5170 Theory of Computational Complexity

The course introduces some of the following topics: deterministic and non-deterministic Turing machine, time and space complexity, NP-completeness, polynomial time hierarchy, probabilistic computation, interactive proofs, complexity of counting, concrete models such as query complexity, communication complexity, formula complexity, branching programs and circuit complexity, quantum computation, complexity-based cryptography, randomness-related topics such as derandomness, pseudorandomness, extractors, random walks, etc.

 

CSCI5180/ENGG5103 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.
Exclusion: CMSC5724

 

CSCI5210 Advanced Computer Graphics and Visualization

This course provides in-depth treatment of the following advanced computer graphics and visualization topics: radiosity rendering and global illumination, procedure texturing and modelling, image-based rendering, stereo imaging, real-time volume graphics and interactive visualization.
Prerequisite: CSCI3260 or equivalent

 

CSCI5240 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.

 

CSCI5250/ENGG5106 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.

 

CSCI5280/ENGG5104 Image Processing and Computer Vision

This course will cover fundamental knowledge and advanced topics in image processing and computer vision, including feature detection, segmentation, motion estimation, panorama construction, 3D reconstruction, scene detection and classification, color image processing and restoration. Applications in computer graphics will also be introduced, including image transformation, and camera calibration. Basic concepts of related algorithms and mathematic background will be discussed.
Exclusion: CMSC5711

 

CSCI5320 Topics in Graph Algorithms

This course will discuss 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. The course will also discuss FPT algorithms for solving graph problems.
Pre-requisite: CSCI3160

 

CSCI5350 Advanced Topics in Game Theory

This course starts with a review of the basic concepts in game theory, including pure strategy and mixed strategy Nash equilibrium. It then discusses some specific types of games, such as zero-sum games and Bayesian games, and introduces other types of equilibriums including correlated equilibrium and evolutionary equilibrium. Rationalisability and the relation between knowledge and equilibrium will also be discussed. After a review of subgame perfect equilibrium and sequential equilibrium, bargaining games, implementation theory, perfect Bayesian equilibrium and trembling hand perfect equilibrium will be discussed. Finally, the relationship between the core, the stable sets, and the Shapley value in coalitional games will be discussed.
Prerequisite: CSCI2110 or ENGG2440 or ESTR2004, ENGG2040 or ENGG2430 or ESTR2002 and CSCI4220
Exclusion: CMSC5728

 

CSCI5370 Quantum Computing

This course introduces various topics in quantum computing, including but not limited to the following ones. 1.Quantum algorithms: quantum Fourier transform, amplitude amplifi cation, quantum walk. 2.Quantum complexity: quantum structural complexity, quantum interactive proof, quantum communication complexity, quantum query complexity. 3.Other topics such as quantum cryptography and quantum information theory.
Prerequisite: CSCI2110

 

CSCI5390 Advanced 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 in GPU), limitations of GPU, and case studies of advanced usages of GPU.
Prerequisite: CSCI2100 or CSCI2520 or equivalent

 

CSCI5420 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 1/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.

 

CSCI5430 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, OCSM-contracts. Argumentation and negotiation.
Prerequisite: CSCI2110

 

CSCI5440 Theory of Cryptography

The modern theory of cryptography studies the formal modelling and construction of computing systems that adDr.ess security concerns. This course aims to introduce the rigorous methodology that underlies the design of such systems. Topics include: * Computational foundations: Average-case hardness in NP, one-way functions * Pseudo-random number generators and pseudo-random functions * Zero-knowledge proofs and arguments * Generic protocols for secure multi-party computation * Trap-door permutations and public-key encryption * Black-box separations among cryptographic primitives

 

CSCI5450 Randomness and Computation

This course is to study the use of randomness in theoretical computer science. We will introduce basic probability tools (e.g. random variables, expectation, moments and derivations, tail inequalities, martingales) and probabilistic methods (e.g. first moment method, second moment method, Lovasz local lemma, semi-random method). Then we will show how these tools and methods can be used to design randomized algorithms (e.g. graph algorithms, number-theoretic algorithm, computational geometry), efficient data structures (e.g. balls and bins, hashing, load balancing), and sublinear algorithms (e.g. property testing, constant time algorithms, data streaming). We will also demonstrate how these tools and methods can be combined with other techniques, such as Markov chain and random walk (e.g. electric networks, expanders, random sampling, approximate counting), algebraic techniques (e.g. determinant method, fingerprinting, polynomial identity testing, interactive proof), and mathematical programming (e.g. linear programming, randomized rounding, semidefinite programming). Finally we study some methods of derandomization (e.g. conditional probability, k-wise independence, small-bias space, pseudorandom generator).

 

CSCI5460 Virtual Reality

This course introduces the fundamental and advanced research topics in virtual reality (VR), including VR tools & metaphors, multi-sensory interactions, geometric and behavior modeling, touch-enabled interfaces, real-time navigation, human factors in immersion, augmented reality systems, and internet-based VR applications. The web-based virtual reality interfaces plus 3D graphics engines build up the developing tools for testing the innovation for the advanced VR research and real-time applications.
Prerequisite: CSCI3260 or equivalent

 

CSCI5470/ENGG5105 Computer and Network Security

This course aims to introduce important topics in computer and network security from an applied perspective. Topics include: (i) applied cryptography (e.g., cryptographic primitives, programming with OpenSSL), (ii) network security (e.g., unauthorized accesses, large-scale network attacks, firewall & intrusion detection systems), (iii) web security (e.g., HTTP session management and web attacks), and (iv) system security (e.g., buffer overflow, passwords, file system security), (v) wireless security (e.g., WiFi security, wireless broadband network security). The course also discusses latest applied security topics depending on the current research trends.
Advisory: Students are expected to have taken both CSCI3150 and CSCI4430, or their equivalent" in course descriptions
Exclusion: CMSC5726

 

CSCI5510/ENGG5108 Big Data Analytics

This course aims at teaching students the state-of-the-art big data analytics, including techniques, software, applications, and perspectives with massive data. The class will cover, but not be limited to, the following topics: advanced techniques in distributed file systems such as Google File System, Hadoop Distributed File System, CloudStore, and map-reduce technology; similarity search techniques for big data such as minhash, locality-sensitive hashing; specialized processing and algorithms for data streams; big data search and query technology; managing advertising and recommendation systems for Web applications. The applications may involve business applications such as online marketing, computational advertising, location-based services, social networks, recommender systems, healthcare services, or other scientific applications.
Exclusion: CMSC5741

 

CSCI5520 Foundations of Data Privacy

This course introduces foundational notions and techniques for privacy preserving data access and computation. Topics include tradeoffs between utility and privacy, differential privacy, mechanisms for private data access, privacy in interactive and non-interactive settings, privacy preserving algorithms, privacy in auctions, privacy and learning, and lower bounds on privacy.

 

CSCI5530 Interactive Computer Animation and Simulation

This course will introduce the advanced interactive animation and related physical simulation techniques, widely applicable in computer animation, interactive media and dynamic special effects. Algorithms and approaches for animation and simulation will be covered, including rigid and deformable models, particle systems, natural phenomena and materials, liquids simulation, SPH dynamics, flocking and crowd simulation, animated sketch, and physical interfaces.
Prerequisite: CSCI3260 or its equivalent

 

CSCI5550 Advanced File and Storage Systems

This course aims to introduce important systems-level research topics in the design and implementation of practical file and storage systems. Topics include: (i) storage device organization (e.g., disk drives, disk arrays, RAID, solid state drives), (ii) file system design (e.g., log-structured file systems, distributed file systems), (iii) data availability (e.g., erasure coding techniques, data integrity protection), (iv) data consistency (e.g., journaling techniques), (v) data compression (e.g., deduplication), (vi) benchmarking (e.g., I/O metrics, benchmarking tools), etc. Depending on the current research trends, the course also discusses the latest applied storage topics, especially related to scalable and dependable big data management.
Prerequisite: CSCI3150 or ESTR3102

 

CSCI5560 Analysis of Boolean Functions

This course introduces various analytical tools for studying Boolean functions, and their applications in learning algorithm design complexity theory, social choice, property testing, additive combinatorics, Gaussian geometry, etc.
Prerequisite: CSCI2110 or ENGG2440 or ESTR2004

 

CSCI5570 Large Scale Data Processing Systems

This course introduces contemporary systems for large scale data processing. Topics to be covered include, but are not limited to: (1) advanced database systems (including distributed, parallel, columnar, in-memory systems, etc., for both OTLP and OLAP applications); (2) NoSQL and NewSQL systems; (3) distributed data stores; (4) big data analysis systems; (5) graph processing systems; (6) stream processing systems; and (7) data visualization. Advanced algorithms for data analytics (e.g., distributed machine learning algorithms, streaming algorithms, etc.) that are implemented using the systems introduced in the course will also be discussed.

 

CSCI6200/ENGG5189 Advanced Topics in Artificial Intelligence

The course introduces fuzzy logic and applications. Fuzzy expert systems. Fuzzy query. Fuzzy data and knowledge engineering. Fuzzy control. Genetic algorithms and programming and their applications. Parallel genetic algorithms. Island model and coevolution. Genetic programming. Introduction to emergent computing.
Exclusion: CMSC5707

 

CSCI6500 Seminars for M.Phil. Studies

Seminars on topics in Computer Science and Engineering to be presented by experts from academic or industry. (Only pass/fail grade will be given) (Students shall gain units each time they pass the course.)

 

CSCI7600 Seminars for Ph.D. Studies

Seminars on topics in Computer Science and Engineering to be presented by experts from academic or industry. (Only pass/fail grade will be given) (Students shall gain units each time they pass the course.)

 

CSCI8003 Thesis Research

In this course, a student is required to meet with his/her supervisor regularly who provides necessary guidance and supervision to write up a thesis and monitors the student¡¦s academic progress.

 

CSCI8006 Thesis Research

In this course, a student is required to meet with his/her supervisor regularly who provides necessary guidance and supervision to write up a thesis and monitors the student's academic progress.

 

CSCI8012 Thesis Research

In this course, a student is required to meet with his/her supervisor regularly who provides necessary guidance and supervision to write up a thesis and monitors the student¡¦s academic progress.