• AIST1110 Introduction to Computing using Python

    This course aims to provide an intensive hands-on introduction to the Python programming language. Topics include Python programming language syntax, basic data types, operators for various data types, function definition and usage, file and operating system support, object-oriented programming, functional programming, module creation, visualization, multi-threaded programming, networking, cryptography, web/database access. The course will go through some important Python packages for artificial intelligence and machine learning applications, e.g., NumPy and SciPy, and use these packages to accomplish some simple artificial intelligence and machine learning tasks. 

    Pre-requisite: ENGG1110 or ESTR1002 

    Not for students who have taken CSCI1040 or CSCI2040

  • AIST2010 Introduction to Computer Music: From Analysis to Algorithmic Music

    This course aims to present an overview of computer music for students with basic programming abilities. The course starts with fundamental audio analysis and synthesis, and finally progress towards algorithmic music generation with machine learning. Hands-on exercises also cover software toolboxes for music information retrieval and programming.

    Prerequisite: CSCI1110 or CSCI1120 or CSCI1130 or CSCI1510 or CSCI1520 or CSCI1530 or CSCI1540 or ENGG1110 or ESTR1002 or ESTR1100 or ESTR1102

  • AIST2601 Technology, Society and Engineering Practice

    This course teaches the following topics: the impact of technology on society; introduction to engineering as a profession (different engineering fields, professional societies and registration, soft skills for working in a team); engineering design and innovation; introduction to intellectual property (copyright, trademarks, registered design and patents); engineering project management; product safety; professional ethics; liability and responsibility; workplace safety; environmental impact and market requirements; case studies and experience sharing from industry; global energy policies and standards.

    Not for students who have taken CSCI3250 or CSCI3251 or ENGG2601 or ENGG2602

  • AIST2602 Engineering Practicum

    This course arranges industrial and professional workshops or seminars as required by the Major programme. 

    Grade Descriptors: 
    P (Ungraded Pass): Performance meets, exceeds or far exceeds expectation in relevant measurement dimensions; Overall level of competence: Moderate to High; 

    U (Failure): Performance does not meet expectation in most relevant measurement dimensions; Overall level of competence: Not reaching the basic standard.

  • AIST3010 Numerical Optimization

    This course aims to provide students with the basic knowledge of optimization theory and introduce various computational libraries and programming techniques to perform optimization. Topics include unconstrained optimization methods, conjugate gradient methods, quasi-newton methods, theory of constrained optimization, linear programming, non-linear constrained optimization, etc.

    Pre-requisite: ENGG1120/ESTR1005 or ENGG1130/ESTR1006 or MATH1510

  • AIST3020 Introduction to Computer Systems

    This course aims to provide students the basic knowledge of computer systems through the study of computer organization, assembly language and C programming. The course will mainly have two parts: (1) the structure of a computer that includes topics like data representations, digital logic structures, the Von Neumann model, assembly language, I/O, traps, subroutines and the stack; (2) system programming with C that includes topics like functions, pointers and arrays, file operations, dynamic memory management and data structures.

    Prerequisite: (ENGG1110 or ESTR1002) AND (ENGG2440 or ESTR2004)

  • AIST3510 Human-computer Interaction

    This course provides an introduction to the fast evolving field of human computer interaction (HCI). HCI is a multidisciplinary subject concerning the design, implemen-tation and evaluation of interactive computing systems for human use, and the study of major phenomena surrounding them. We will provide a broad overview of the field, including the theory and principles underlying good designs, with an emphasis on the interface design process, development and evaluation. We will also sample some state-of-the-art technologies in HCI, such as speech recognition, haptics, virtual reality, software agents and computer supported cooperative work. 

    Not for students who have taken SEEM3510

  • AIST4998 / ESTR4998 Final Year Project I

    The course is designed to provide students with an opportunity to carry out, under the supervision of an academic staff, an independent project with research elements in artificial intelligence topics. 

  • AIST4999 / ESTR4999 Final Year Project II

    The course is designed to provide students with an opportunity to carry out, under the supervision of an academic staff, an independent project with research elements in artificial intelligence topics. 

    Prerequisite: AIST4998

  • CENG2010 Digital Logic Design Laboratory

    This course aims at providing an intensive hands-on introduction to digital system design using a hardware description language (e.g. VHDL). Students will learn how to design, simulate and debug digital systems through lab exercises. Topics include the basic language syntax, signals/variables/constants declaration, data types, basic operators, concurrent and sequential statements, and structural modelings.

    Prerequisite: ELEG2201 or ENGG2020 or ESTR2104

  • CENG2030 Fundamentals of Embedded Systems

    This course provides foundations on essential elements in design and development of embedded systems. Topics include 3D engineering drawings, lab instrumentation, electronic circuit analysis, digital signal processing, microcontroller interfacing, sensors, and actuators.  Students can gain hands-on experience from laboratory works and projects. 

    Pre-requisite: ENGG1110

  • CENG2400 / ESTR2100 Embedded System Design

    This course introduces the techniques for building embedded systems such as the use of microprocessors, interfacing memory systems and timing control of digital signals. It also discusses peripheral input/output interfacing methods such as: timer, serial and parallel interfaces, analog-to-digital conversion, polling, interrupt and device driver developments. Assembly language programming will also be introduced: concepts of addressing modes, data manipulation, control flow instructions, programme linkage and relation to high level languages. 

    Prerequisite: ENGG2020 or ENGG2120 or ESTR2104

    Not for students who have taken ESTR2100

  • CENG3410 Smart Hardware Design

    This is a hands-on project-based course that introduces the devices, system architecture, communication protocol and design methodology needed for the design and construction of smart hardware systems. With the advent of affordable sensors and Internet of Things (IoT), smart hardware systems such as all sorts of wearable devices and smart home appliances are expected to significantly improve people’s living style and enhance work efficiency. Students in this course will work in groups to develop small smart hardware systems, prototype their designs and testing them. 

    Not for students who have taken IERG3830

  • CENG3420 Computer Organization and Design

    This course introduces the organization and design of modem computer systems. The scope includes instruction set architecture, performance evaluation, design of arithmetic logic units, datapath and control, pipelining, memory hierarchy, interfacing processors and peripherals, and multi-core processors. 

    Prerequisite: ENGG2020 or ENGG2120 or ESTR2104. 

    Not for students who have taken CSCI3420

  • CENG3430 / ESTR3100 Rapid Prototyping of Digital Systems

    This course introduces digital prototyping techniques such as the use of a hardware description language for hardware system development, and the methods for interfacing field programmable devices to memory systems and microprocessors. Techniques to build reliable digital systems in the presence of power supply variation, high frequency effects, transmission line effects and noise are also discussed.

    Prerequisite: CSCI2510 or ENGG2020 or ENGG2120 or ESTR2104 or its equivalent 

    Not for students who have taken ESTR3100

  • CENG4100 Smartphones: Hardware Platform and Application Development

    This course teaches the hardware platform and software development of smartphones. The scope includes: (i) Hardware architecture of smartphones, including their key components such as mobile processor, touch screen, graphics, battery, and various sensors; (ii) Application development on smartphones; (iii) Low-power hardware/software design techniques.

    Prerequisite:CENG3420 or CSCI3420

  • CENG4120 Computer-aided Design for Very Large Scale Integrated Circuits

    This course aims at providing students basic knowledge and background on VLSI CAD. The course will cover various topics on automation across the design of a VLSI circuit including but not limited to, Boolean matching, logic optimization, chip planning, placement, routing, interconnect optimization, testing and manufacturing. Students will learn to use some EDA tools and also develop some algorithms to solve EDA problems. 

     

    Prerequisite: CSCI2100 or CSCI2520 or ESTR2102

     

  • CENG4480 Embedded System Development and Applications

    This course aims at enhancing students’ skills in developing embedded systems. Advanced techniques in the use of real-time operating systems, interfacing, integration and applications of sensors and actuators for signal analysis and control will be discussed. Project development methods and management skills will be introduced.

    Prerequisite: CENG2400 or ESTR2100

  • CENG4998 / ESTR4998 Final Year Project I

    The course is designed to provide students with an opportunity to carry out, under the supervision of an academic staff, an independent project with research elements in engineering. 

  • CENG4999 / ESTR4999 Final Year Project II

    The course is designed to provide students with an opportunity to carry out, under the supervision of an academic staff, an independent project with research elements in engineering.

    Prerequisite: CENG4998

  • CENG5030 Energy Efficient Computing

    Low power consumption is an important design concern in modern computing systems. It has direct impact on the battery life of mobile electronic equipment and on the operating speed of computing devices. This course aims at introducing students the basic concepts and modern techniques in designing, modeling and evaluating energy-efficient computing systems. This course will study techniques to improve energy consumption at various design levels. It will also study representative research papers to introduce the state of the art approaches to energy efficient computing. 

    Advisory: Students are expected to have taken ENGG2020 or ESTR2104 or CENG3420.

  • CENG5050 Hardware for Human Machine Interface

    This course teaches topics in designing hardware for human machine interface. Principles and applications of sensors like pressure, light, sound, motion and electromagnetic transducers are introduced. Computer interfacing techniques for signal sampling, amplification, filtering, classification and interpretation are also discussed. Design examples may include Electroencephalography (EEG) signal analysis, human motion capturing, music signal interpretation and production. Functioning and control of actuators will also be studied. 

    Advisory: Students are expected to have taken CENG2400 or ESTR2100 or equivalent.

  • CENG5270 EDA for Physical Design of Digital Systems

    This course aims to present the fundamental concepts and algorithms applied in Design Automation (CAD) of VLSI circuits. The scope will include various areas in  Physical Design of digital systems, including circuit partitioning, FPGA technology mapping, floorplanning, placement, routing, compaction and interconnect optimization.

    Prerequisite: CSCI2100 or ENGG2020 or ESTR2102 or ESTR2104

  • CENG5410 / ENGG5101 Advanced Computer Architecture

    This course is designed to present an overview of some advanced computer architectures and their underlying design principles. Issues discussed will include scalability and performance evaluation. The underlying technologies such as processor and memory hierarchy, cache and shared memory, and advanced pipelining techniques will be presented. Examples of high performance vector 
    processors, multicomputers and massive parallel processors will be compared. Some novel architectures such as VLIW, fault tolerant systems and data flow machines will also be elaborated. 

    Advisory: Students are expected to have taken CENG3420 or having background knowledge in computer organization

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

    Not for students who have taken 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.

    Not for students who have taken 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. 

  • CSCI1110 Introduction to Computing Using C

    This course introduces the 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 CSCI1010 or 1120 or 1130 or 1510 or 1520 or 1530 or 1540 or ESTR1100 or 1102

  • CSCI1120 / ESTR1100 Introduction to Computing Using C++

    This course introduces the 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 ESTR1100 or 1102 or CSCI1020 or 1110 or 1130 or 1510 or 1520 or 1530 or 1540.

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

    Not for students who have taken ESTR1100 or 1102 or CSCI1030 or 1110 or 1120 or 1510 or 1520 or 1530 or 1540

  • CSCI1140 Programming Laboratory

    Students will practise the programming principles they learn using C programming language.

    Pre-requisite: CSCI1120 or CSCI1130 or ENGG1110 or ESTR1002 or ESTR1100 or ESTR1102 or with the consent of the instructor.

    Not for students who have taken 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.

    Not for students who have taken CSCI1010 or 1110 or 1120 or 1130 or 1520 or 1530 or 1540 or ENGG1100 or ENGG1110 or ENGG2600 or 2601 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. 

    Not for students who have taken CSCI1020 or 1110 or 1120 or 1130 or 1510 or 1530 or 1540 or ENGG1100 or ENGG1110 or ENGG2600 or 2601 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.

    Not for students who have taken CSCI1030 or 1110 or 1120 or 1130 or 1510 or 1520 or 1540 or ENGG1100 or ENGG1110 or ENGG2600 or 2601 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.

    Not for students who have taken CSCI1020 or 1110 or 1120 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.

    Not for students who have taken ENGG1100 or ENGG1110 or ENGG2600 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.

    Not for students who have taken CSCI1040/AIST1110

  • CSCI2100 / ESTR2102 Data Structures

    This course introduces the concept of abstract data types and the advantages of data abstraction. 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.

    Pre-requisite: CSCI1110 or 1120 or 1130 or 1510 or 1520 or 1530 or 1540 or ENGG1110 or ESTR1100 or ESTR1102 or ESTR1002 or its equivalent

    Not for students who have taken ESTR2102 or CSCI2520

  • 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 ENGG1110 or ESTR1002 or 1100 or 1102 or (MATH2210 and 2220) or PHYS2351 or its equivalent.

    Not for students who have taken 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 ENGG1110 or ESTR1002 or 1100 or 1102 or (MATH2210 and MATH2220) or PHYS2351

    Not for students who have taken CENG2400 or ELEG3230 or ENGG2020 or ESTR2100 or ESTR2104

  • 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 ENGG1110 or ESTR1002 or 1100 or 1102 or (MATH2210 and 2220) or PHYS2351 or its equivalent

    Not for students who have taken 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 ENGG1110 or ESTR1002 or 1100 or 1102 or (MATH2210 and 2220) or PHYS2351 or its equivalent.

  • CSCI3100 Software Engineering

    This course introduces software life-cycles: 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.

    Pre-requisite: CSCI1110 or 1120 or 1130 or 1510 or 1520 or 1530 or 1540 or ESTR1100 or 1102

    Not for students who have taken ENGG3820 or ESTR3308 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

    This course introduces Deterministic and nondeterminisitic finite automata, regular expressions, context-free grammars, pushdown automata, context-sensitive grammars, parsing of LR(O) and LR(K) languages, Turing machines and computability. 

    Pre-requisite: CSCI2110 or ENGG2440 or ESTR2004

  • CSCI3150 / ESTR3102 Introduction to Operating Systems

    This course introduces the various internal components of an operating system, including process and thread management, memory management, file system, security, and synchronization. 

    Prerequisite: ESTR2102 or CSCI2100 or 2520

  • CSCI3160 / ESTR3104 Design and Analysis of Algorithms

    This course introduces the 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. 

    Pre-requisites: CSCI2100 or CSCI2520 or ESTR2102, and CSCI2110 or ENGG2440 or ESTR2004

    Not for students who have taken ESTR3104 or CSCI3190

  • CSCI3170 Introduction to Database Systems

    This course introduces the 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

  • CSCI3190 Introduction to Discrete Mathematics and Algorithms

    This course introduces 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 CSCI2520 or ESTR2102

    Not for students who have taken 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 or equivalent

    Not for students who have taken ESTR3108

  • CSCI3250 Computers and Society

    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. 

    Not for students who have taken ENGG2601

  • CSCI3251 Engineering Practicum

    Industrial and professional workshops or seminars as required by the Major programme. 

    Not for students who have taken ENGG2602

  • CSCI3260 Principles of Computer Graphics

    This course introduces fundamental computer graphics techniques and algorithms. 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 or ESTR3104

  • 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 Imaging and Vision

    It is an emerging new field created by the convergence of computer graphics, computer vision and machine learning. 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 machine vision.

    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.

    Pre-requisite: 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 ENGG2430 or ESTR2002 or STAT2001

  • 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

    Prerequisite/Corequisite: CSCI3260 or 3550

  • CSCI4130 Introduction to Cyber Security

    Cyber Security is an important topic in modern information and communication technology.   This course introduces students to major areas of Cyber Security, including introductions to cryptography, network security, computer security, and web security. 

    Advisory: Basic knowledge on Computer Networks are suggested.

    Not for students who have taken ESTR4306 or IEMS5710 or IERG4130

  • 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 programming, system architectures, synchronization, and concurrency control techniques.

    Not for students who have taken ESTR4104

  • CSCI4180 / ESTR4106 Introduction to Cloud Computing and Storage

    This course introduces concepts and principles of cloud computing and storage. Subjects include: cloud computing models (SaaS, PaaS, IaaS), distributed and parallel data processing (MapReduce, Hadoop, multicore technologies), virtualization technologies (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 (Amazon EC2, Windows Azure). This course emphasizes applied methodologies of using cloud computing and storage for solving practical engineering problems.

    Pre-requisite: CSCI3150 or CENG3150 or ESTR3102

    Not for students who have taken ESTR4106

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

    Pre-requisite: CSCI2100 or 2520 or ESTR2102

  • CSCI4230 Computational Learning Theory

    This course introduces theoretical foundations of efficient learning algorithms and their limitations. Topics include Probably Approximately Correct learning, Occam learning, Vapnik–Chervonenkis dimension, boosting, Statistical Query learning, active learning, and crypotgraphic hardness of learning.

    Prerequisite: ENGG2430 or ESTR2002

  • CSCI4430 / ESTR4120 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: CENG3150 or CSCI3150 or ESTR3102

    Not for students who have taken ESTR3310 or ESTR4120 or IERG3310

  • CSCI4998 / ESTR4998 Final Year 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.

  • CSCI4999 / ESTR4999 Final Year Project II

    The course is designed to provide students with an opportunity to carry out, under the supervision of an academic staff, an independent project with research elements in engineering.

    Pre-requisite: CSCI4998

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

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

  • 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, and data mining, data on the web and network data analysis.

    Prerequisite: CSCI3170

    Exclusion: CMSC5705 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 .

    Exclusion: FTEC5580

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

  • CSCI5170 Theory of Computation Complexity

    This 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, classifi cation, estimation, forecasting, statistical analysis and visualization tools.

    Not for students who have taken CMSC5724

  • CSCI5210 Advanced Computer Graphics and Visualization

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

    Advisory: Students are expected to have taken CSCI3260 or its 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. 

    Blended-mode class section is available for this course.  Please refer to the “Class Notes” of the blended-mode class section for details.

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

    Not for students who have taken 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.

    Prerequisite: CSCI3160

  • CSCI5350 Advanced Topics in Game Theory

    This course covers fundamental concepts in game theory.  The course starts with pure strategy and mixed strategy Nash equilibrium in strategic games.  It then discusses some specific types of games, including zero-sum games, Bayesian games, and introduces other types of equilibriums including correlated equilibrium and evolutionary equilibrium.  Extensive games, subgame perfect equilibrium, sequential equilibrium, framing effects, behavioural strategies will then be discussed.  Finally, coalitional games and the core will be discussed. 

    Advisory: Students are expected to have taken CSCI2110 or ENGG2440 or ESTR2004, ENGG2040 or ENGG2430 or ESTR2002.

  • 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 ESTR2102 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.

  • CSCI5440 Theory of Cryptography

    The modern theory of cryptography studies the formal modelling and construction of computing systems that address 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 modelling, touch-enabled interfaces, real-time immersive navigation, human factor in VR, augmented reality systems, internet-based VR applications. The web-based virtual reality interfaces plus 3D graphics engines build up the developing tools for testing the innovative ideas/solutions for the advanced VR research and real-time applications. 

    Prerequisite: CSCI3260 or its equivalent

    Exclusion: CMSC5716

  • 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). The course also discusses latest applied security topics depending on the current research trends. 

    Advisory: Students are expected to have taken CSCI3150 or ESTR3102, and CSCI4430 or CENG4430 or IERG3310

    Not for students who have taken 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.

    Not for students who have taken CMSC5741

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

    Advisory: Students are expected to have taken CSCI3150 or ESTR3102 or equivalent.

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

    Pre-requisite: 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.

  • CSCI5580 Online Algorithms for Machine Learning and Optimizations

    This course aims to cover topics in online learning and online optimization. Typical topics include multi-armed bandit (MAB) problems in various settings, online convex optimization (OCO) problems such as online linear regression, online classification, and certain general reinforcement learning problems. Different algorithms will be introduced to solve these problems and analysis of the performance and efficiency will be provided.

    Advisory: Students are expected to have taken CSCI3160.

  • CSCI5590 Advanced Topics in Blockchain

    This course aims to cover advanced topics on blockchain.  The focus will be on advanced topics like permissionless blockchain, Ethereum, smart contract, mining pool, permissioned blockchain, anonymity, new consensus, sidechain, ripple, offchain and lightning network.  

    Advisory: Students are expected to have solid foundations on operating systems and database systems.

    Pre-requisites: CSCI3150 & CSCI3170 (for UG students only)

    Exclusions: IERG5590 or FTEC5520

  • CSCI5600 Advanced Topics in Distributed Systems

    This course aims to cover research topics on distributed systems.  Topics including distributed time and global states, distributed coordination and consensus, P2P systems, distributed transactions and concurrency control, distributed replications and synchronization.  Case studies about latest distributed systems such as Chord, Paxos and Spanner and research papers from top conferences will be discussed. 

    Advisory: Students are expected to have solid foundations on operating systems and database systems.

    Pre-requisites: CSCI3150 & CSCI3170 (for UG students only)

  • CSCI5610 Advanced Data Structures

    This course introduces advanced techniques for designing data structures with strong theoretical guarantees. Topics to be covered include (i) generic methods such as partial persistence, logarithmic rebuilding, weight balancing, filtering, independent sampling, bit twiddling, tabulating, etc., and (ii) specific structures such as the interval tree, the priority search tree, cuckoo hashing, the van Emde Boas structure, range min structures, locality sensitive hashing, the suffix tree, the count-min sketch, etc. 

    Pre-requisite: CSCI2100 or ESTR2102

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

    Not for students who have taken CMSC5707

  • ENGG1120 / ESTR1005 Linear Algebra for Engineers

    This course aims at introducing students to the fundamental concepts and methods in linear algebra, which are key to many fields of engineering. Topics include systems of linear equations, Gauss elimination, matrix factorization, matrices and their operations, determinants, eigenvalues and eigenvectors, diagonalization, vector space, the Gram-Schmidt process, and linear transformation.

    Not for students who have taken ENGG1410 or ESTR1004 or 1005 or MATH1030

  • ENGG1130 / ESTR1006 Multivariable Calculus for Engineers

    This course aims at introducing students to fundamental concepts and methods in multivariable calculus, which provide tools for solving engineering problems. Topics include functions of several variables, curves and surfaces, partial derivatives, Taylor’s formula, method of Lagrange multipliers, multiple integrals, line and surface integrals, Green’s theorem, Stokes’ theorem and divergence theorem.

    Pre-requisite: MATH1510

    Not for students who have taken ENGG1410 or ESTR1004 or 1006 or MATH2010 or 2020

  • ENGG1310 / ESTR1003 Engineering Physics: Electromagnetics, Optics and Modern Physics

    This is an introductory calculus-based engineering physics course covering topics in electromagnetics, optics and modern physics. Topics in electromagnetics include: electric and magnetic properties, Coulomb’s law, Gauss’ law, electromagnetic energy and forces, Biot-Savart law, electromagnetic fields and Maxwell’s equations, propagation of plane electromagnetic waves. Topics in optics include: optical interference, interferometers, optical diffraction. Topics in modern physics include: wave-particle duality, momentum and energy of photons and electrons, electronic states and energy bands, electrical conduction in metals and semiconductors. Contents will be supplemented by discussions on applications relevant to engineering.

    Not for students who have taken ENGG2520, ESTR2006 or ESTR1003

  • ENGG1410 / ESTR1004 Linear Algebra and Vector Calculus for Engineers

    Linear algebra: matrices, matrix addition, matrix multiplication, inverses, special matrices; vector spaces, basis and dimension, linear independence, rank, determinants; linear transformations, projection, orthogonality, systems of linear equations, Gaussian elimination; eigenvalues and eigenvectors. Vector calculus: 3-D vector space and algebra; vector differential calculus, gradient, divergence, curl; vector integral calculus, Green's theorem, Gauss's theorem, Stoke's theorem. 

    Pre-requisite: MATH1510

    Not for students who have taken ESTR1004

  • ENGG1820 Engineering Internship

    The objective of the course is to enable students to have a basic understanding of the practical aspects of the engineering profession. Prior to the enrolment of this course, students must have completed not less than 8 weeks of full-time internship approved by the Faculty of Engineering.  To be qualified for award of the subject credit, the student must submit a report, within the semester of enrolment, summarizing what he or she has done and learnt during the internship, together with a testimonial from the corresponding employer. Pass or fail of the course will be determined by the professor-in-charge, based on the report and the testimonial submitted. 

    Student may look for internship opportunities at the Placement and Internship Program (PIP) website administered by Centre for Innovation and Technology of the Faculty, or from any other sources available to him or her. Students are recommended to seek professor-in-charge’s comment on internship undertaken before enrolling in the course. 

    Work-Study, the 12-month internship program organized by the Faculty, is a valid internship satisfying the requirements of ENGG1820. 

    Advisory: For year 2 or above Engineering Majors students. (new curriculum)

  • ENGG2020 / ESTR2104 Digital Logic and Systems

    This course introduces the digital concepts; number systems; operations and codes; logic gates; Boolean algebra and logic simplification; combinational logic; functions of combinational logic; flip-flops and related devices; counters; finite state machines; programmable logic devices - programming and sequential logic applications; memory and storage; integrated circuit technologies. 

    Not for students who have taken ELEG2120

  • ENGG2420 / ESTR2000 Complex Analysis and Differential Equations for Engineers

    Complex analysis: analytic functions and Cauchy Riemann; complex integration, Cauchy principal value; elementary complex valued functions: exponential functions, Euler’s formula, trigonometric and hyperbolic functions, logarithm and general powers; power series, Taylor series and convergence tests. 
    ODE: classification of differential equations; 1st order ordinary differential equations; 2nd order ordinary differential equations. Partial differential equations. 

    Not for students who have taken ENGG2460 or ESTR2010

  • ENGG2430 / ESTR2002 Probability and Statistics for Engineers

    Fundamental probability concepts: probability and events; expectation, variance, moments, moment generating functions; single variate distributions. Multivariate probability: conditional probability, joint probability; Bayes’ Theorem; conditional expectation, covariance; multivariate distributions, functions of random variables. Central limit theorems, law of large number. Statistics: estimation, sample size and applications.

    Not for students who have taken ESTR2005 and ENGG2450

  • ENGG2440 / ESTR2004 Discrete Mathematics for Engineers

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

    Not for students who have taken ENGG2460, ESTR2010

  • ENGG2720 / ESTR2014 Complex Variables for Engineers

    A first course in complex numbers and the calculus of functions of one complex variable. Topics include complex numbers, complex differentiation, analytic functions and Cauchy–Riemann equations, elementary complex functions, complex integration, series, and residues integration. 

    Not for students who have taken ENGG2420 or 2460 or ESTR2000 or 2010

  • ENGG2740 / ESTR2016 Differential Equations for Engineers

    A first course in the theory and applications of ordinary and partial differential equations. Topics include classification of differential equations, linear ordinary differential equations, Fourier series, and partial differential equations. 

    Not for students who have taken ENGG2420 or 2460 or ESTR2000 or 2010

  • ENGG2760 / ESTR2018 Probability for Engineers

    A first course in the fundamentals of probability theory and their applications in engineering. Topics include sample space and events, counting, axioms of probability, conditional probability, independence of events, discrete and continuous distributions, random variables, joint distributions, and limit theorems.

    Not for students who have taken ENGG2430 or 2450 or 2470 or ESTR2002 or 2005 or 2012 

  • ENGG2780 / ESTR2020 Statistics for Engineers

    A first course in the fundamentals of statistics and their applications in engineering. Topics include populations and samples, point estimation, confidence intervals, hypothesis testing, and basics of linear regression. 

    Not for students who have taken ENGG2430 or 2450 or ESTR2002 or 2005

  • ENGG3802 Introduction to Engineering Entrepreneurship

    The 1-unit course will introduce engineering entrepreneurship and provide the key basic concepts needed in the preparation of technical proposals and business plans. The course will introduce students to analytical process of evaluating new ideas, and metrics to compare ideas with existing approaches in the market. The course will include in class discussion of forecasts based on market size estimates, cashflow analysis and technical development plans. The course objective is to prepare students to develop and present their innovative technical ideas that have potential for practical development as a preliminary entrepreneurship project in the following semester in ENGG3803. In addition to a formal written proposal to describe their ideas, students will also be asked to present their proposal to the course instructor. Shortlisted proposals will be invited to a second presentation where a panel of experienced engineering entrepreneurs select proposals for further development.

  • ENGG3803 Engineering Entrepreneurship Development Project

    The 2-unit course is project based. Students will be provided with individual or small group project supervision to help them implement their project proposal from ENGG3802. The objective of the course is to provide an initial technical implementation showing the technical feasibility of the proposal. The focus is carry out practical prototyping, simulations and/or computer coding and build a pre-alpha proof of concept demonstration via initial computer software or design/building of the critical hardware subsystems. At the end of the course, students will present their work to a panel of assessors in a project competition, and those shortlisted will be assessed by a panel including external entrepreneurs who may consider the successful projects for possible continuation (eg as the final year project or capstone project of their major programme).

  • ENGG4030 / ESTR4300 / IERG4300 Web-scale Information Analytics

    The course discusses data-intensive analytics, and automated processing of very large amount of structured and unstructured information. We focus on leveraging the MapReduce paradigm to create parallel algorithms that can be scaled up to handle massive data sets such as those collected from the World Wide Web or other Internet systems and applications. We organize the course around a list of large-scale data analytic problems in practice. The required theories and methodologies for tackling each problem will be introduced. As such, the course only expects students to have solid knowledge in probability, statistics, linear algebra and computer programming skills. Topics to be covered include: the MapReduce computational model and its system architecture and realization in practice ;  Finding Frequent Item-sets and Association Rules ; Finding Similar Items in high-dimensional data ; Dimensionality Reduction techniques ; Clustering ; Recommendation systems ; Analysis of Massive Graphs and its applications on the World Wide Web ; Large-scale supervised machine learning; Processing and mining of Data Streams and  their applications on large-scale network/ online-activity monitoring.

  • ENGG5781 Matrix Analysis and Computations

    Matrix analysis and computations are widely used in engineering fields—such as machine learning, computer vision, systems and control, signal and image processing, optimization, communications and networks, and many more—and are considered key fundamental tools. This course covers matrix analysis and computations at an advanced or research level. It consists of several parts. The first part focuses on various matrix factorizations, such as eigendecomposition, singular value decomposition, Schur decomposition, QZ decomposition and nonnegative factorization. The second part considers important matrix operations and solutions such as matrix inversion lemmas, linear system of equations, least squares, subspace projections, Kronecker product, Hadamard product and the vectorization operator. Sensitivity and computational aspects are also studied. The third part explores presently frontier or further advanced topics, such as matrix calculus and its various applications, tensor decomposition, and compressive sensing (or managing undetermined systems of equations via sparsity). In every part, relevance to engineering is emphasized and applications are showcased.