Pre-requisite(s): None

Course Description:
An introduction to the building blocks and organisation of modern digital computers. The course answers the question: How does a computer work? Topics include: historical development of computing and the von Neumann model; data representation in computer systems; Boolean algebra, digital logic and its application to understanding Central Processing Unit (CPU) organisation; combinational and sequential circuits; Finite State Machine (FSM); Instruction Set Architecture (ISA); Assembly Language Programming; other basic modules, such as cache memory, virtual memory, and input/output techniques.

Computer Organisation

Pre-requisite(s): None

Course Description:
An introduction to the building blocks and organisation of modern digital computers. The course answers the question: How does a computer work? Topics include: historical development of computing and the von Neumann model; data representation in computer systems; Boolean algebra, digital logic and its application to understanding Central Processing Unit (CPU) organisation; combinational and sequential circuits; Finite State Machine (FSM); Instruction Set Architecture (ISA); Assembly Language Programming; other basic modules, such as cache memory, virtual memory, and input/output techniques.

COMP1003
Computer Organisation
3Units

Pre-requisite(s): None

Course Description:
An introduction to the building blocks and organisation of modern digital computers. The course answers the question: How does a computer work? Topics include: historical development of computing and the von Neumann model; data representation in computer systems; Boolean algebra, digital logic and its application to understanding Central Processing Unit (CPU) organisation; combinational and sequential circuits; Finite State Machine (FSM); Instruction Set Architecture (ISA); Assembly Language Programming; other basic modules, such as cache memory, virtual memory, and input/output techniques.

COMP1023
Foundations of C Programming
3Units

Pre-requisite(s): None

Course Description:
This course provides students with basic knowledge of computer-oriented problem solving methodologies, algorithm development, structured programming concepts and design techniques, and implementation tools that facilitate debugging and testing. In particular, structured programming skills will be illustrated with a contemporary programming language.

COMP1033
Systems and Web Development Workshop
3Units

Pre-requisite(s):
COMP1023 FOUNDATIONS OF C PROGRAMMING

Course Description:
The aim of this workshop is to introduce the basics of Linux (operating system programming) and JavaScript (web programming).

COMP2003
Data Structures and Algorithms
3Units

Pre-requisite(s):
COMP1013 STRUCTURED PROGRAMMING, or
GCIT1013 FOUNDATIONS OF C PROGRAMMING, or
COMP1023 FOUNDATIONS OF C PROGRAMMING, or
COMP2013 OBJECT-ORIENTED PROGRAMMING, or
STAT2043 STRUCTURED PROGRAMMING (FOR STAT STUDENTS), or
COMP3153 C++ PROGRAMMING LANGUAGE

Course Description:
This course develops students' knowledge of data structures and their associated algorithms. It introduces the concepts and techniques of structuring and operating on Abstract Data Types in problem solving. Common sorting, searching and graph algorithms will be discussed, and their complexity studied.

COMP2013
Object-Oriented Programming
3Units

Pre-requisite(s): None

Course Description:
This course introduces object-oriented programming concepts, principles, and techniques, including classes, objects, inheritance, and polymorphism. All these concepts are illustrated using a contemporary object-oriented programming language. Upon completion, students should be able to use an object-oriented language to develop complex programmes.

COMP2073
Data Programming Workshop
3Units

Pre-requisite(s):
COMP1023 FOUNDATIONS OF C PROGRAMMING, and
COMP2013 OBJECT-ORIENTED PROGRAMMING

Course Description:
This workshop aims to have the students learn independent design, research, and coding on data analysis. It will help the students understand the concept of data analysis process. By processing data, students will learn how to collect data, clean data, process and visualize data. One or two programming languages will be introduced during the course. They could be Python, or any other new technologies.

COMP3003
Data Communications and Networking
3Units

Pre-requisite(s):
COMP1003 COMPUTER ORGANISATION

Course Description:
Students will learn the principles of data communications, computer networks and network programming. Topics include: Network hardware and software, Network topologies and categories, Reference models and standards, Physical layer: signal analysis, bandwidth and data rate, transmission media, encoding, transmission, Data link layer, Network layer, Ethernet, Fast Ethernet, Gigabit Ethernet, Wi-Fi, TCP/IP, Socket programming, Client and Server software.

COMP3013
Database Management Systems
3Units

Pre-requisite(s):
COMP1013 STRUCTURED PROGRAMMING, or
GCIT1013 FOUNDATIONS OF C PROGRAMMING, or
COMP1023 FOUNDATIONS OF C PROGRAMMING, or
STAT2043 STRUCTURED PROGRAMMING (FOR STAT STUDENTS), or
COMP3153C++PROGRAMMING LANGUAGE

Course Description:
This course introduces how to represent the data in a database for a given application and how to manage and use a database management system. Topics include: conceptual modelling of a database, relational data model, relational algebra, database language SQL, relation database design, and emerging XML data models. In addition, hands-on DBMS experience is included.

COMP3023
Design and Analysis of Algorithms
3Units

Pre-requisite(s):
COMP2003 DATA STRUCTURES AND ALGORITHMS, or
COMP3143 DATA STRUCTURE (FOR FM STUDENTS)

Course Description:
This course builds on the study of the analysis and implementation of algorithms and data structures (COMP2003). The goal is to introduce a number of important algorithms that are interesting both from a practical and theoretical point of view. Algorithm design paradigms such as divide-and-conquer and dynamic programming will be discussed, and algorithms for sorting, searching, and graph problems, etc. will be developed.

COMP3033
Operating Systems
3Units

Pre-requisite(s):
COMP1013 STRUCTURED PROGRAMMING, or
GCIT1013 FOUNDATIONS OF C PROGRAMMING, or
COMP1023 FOUNDATIONS OF C PROGRAMMING, or
COMP2013 OBJECT-ORIENTED PROGRAMMING, or
STAT2043 STRUCTURED PROGRAMMING (FOR STAT STUDENTS), or
COMP3153 C++ PROGRAMMING LANGUAGE

Course Description:
Introduces the fundamentals of operating system design and implementation. Topics include an overview of the components of an operating system, mutual exclusion and synchronisation, deadlocks and starvation, implementation of processes and threads, resource scheduling algorithms, memory management, and file systems.

COMP3063
Software Engineering
3Units

Pre-requisite(s):
COMP2013 OBJECT-ORIENTED PROGRAMMING

Course Description:
This course discusses the principles and practical aspects of software development. It studies the methodology of software development as well as the organisation, planning and management of the development process so that students will appreciate the difficulties involved in a large system development project and the importance of a disciplined approach to the problem.

COMP3173
Compiler Construction
3Units

Pre-requisite(s):
COMP1013 STRUCTURED PROGRAMMING, or
GCIT1013 FOUNDATIONS OF C PROGRAMMING, or
COMP1023 FOUNDATIONS OF C PROGRAMMING, or
COMP2013 OBJECT-ORIENTED PROGRAMMINGor
STAT2043 STRUCTURED PROGRAMMING (FOR STAT STUDENTS), or
COMP3153 C++ PROGRAMMING LANGUAGE

Course Description:
This course introduces the concepts that underline most of the programming languages students are likely to encounter, and illustrates those concepts with examples from various languages. Topics include syntax and semantic analysis, bindings, type systems, programming paradigms, control abstraction and flow.

COMP3253
Advanced Software Development Workshop
3Units

Pre-requisite(s):
COMP2013 OBJECTED-ORIENTED PROGRAMMING, and
COMP3013 DATABASE MANAGEMENT SYSTEMS

Course Description:
This workshop aims to help students have some practices in working as a software engineer via the development of a project. The course will also show students how to elicit and document specifications, design software architecture, test the implementation, communicate as a team, and use appropriate tools. The students are expected to be able to apply the software engineering principles and methods to software development.

COMP4004
Final Year Project I (COMP)
3Units

Pre-requisite(s): None 

Other Condition(s):
Year 4 standing in Computer Science and Technology Programme 

Course Description:
Students will undertake an individual project under the supervision of a faculty member and gain the practical experience of applying computer systems principles and techniques acquired from the course to the solution of real-life problems. The project demands careful planning and creative application of underlying theories and enabling technologies. A thesis and an oral presentation are required upon successful completion of the project. This course is open to Computer Science majors only.


DS4023
Machine Learning
3Units

Pre-requisite(s):
COMP1013 STRUCTURED PROGRAMMING, or
GCIT1013 FOUNDATIONS OF C PROGRAMMING, or
COMP1023 FOUNDATIONS OF C PROGRAMMING, or
STAT2043 STRUCTURED PROGRAMMING (FOR STAT STUDENTS), or
COMP2013 OBJECT ORIENTED PROGRAMMING, or
COMP3153 C++ PROGRAMMING LANGUAGE

Course Description:
The course will provide an introduction to Machine Learning and its core models and algorithms. The aim of the course is to give the student the basic ideas and intuition behind modern machine learning methods as well as a bit more formal understanding of how, why, and when they work.

MATH1003
Linear Algebra
3Units

Pre-requisite(s): None

Course Description:
This course introduces the basic techniques in matrix algebra, which is the foundation for more advanced mathematics and statistics subjects. Major emphasis will be on the system of linear equations, linearly independence, and eigenvalue problems in finite dimensional vector spaces. Basic ideas and techniques on calculus will be introduced.

MATH1123
Calculus For Science and Engineering
3Units

Pre-requisite(s): None

Course Description:
Calculus for Science and Engineering introduces the differential and integral calculus for univariate functions. It emphasizes the basic ideas and concepts on limits, derivatives, antiderivatives, definite integral, simple differential equations and corresponding applications in natural science and engineering. It provides the foundations for more advanced quantitative courses for science and engineering student.

MATH2003
Discrete Structures
3Units

Pre-requisite(s): None

Course Description:
This course addresses a variety of fundamental topics in computer science, including propositional and predicate logic, proof technique, set theory, combinatorics, graph theory, and Boolean algebra.

Computer Organisation

Pre-requisite(s): None

Course Description:
An introduction to the building blocks and organisation of modern digital computers. The course answers the question: How does a computer work? Topics include: historical development of computing and the von Neumann model; data representation in computer systems; Boolean algebra, digital logic and its application to understanding Central Processing Unit (CPU) organisation; combinational and sequential circuits; Finite State Machine (FSM); Instruction Set Architecture (ISA); Assembly Language Programming; other basic modules, such as cache memory, virtual memory, and input/output techniques.

COMP1003
Computer Organisation
3Units

Pre-requisite(s): None

Course Description:
An introduction to the building blocks and organisation of modern digital computers. The course answers the question: How does a computer work? Topics include: historical development of computing and the von Neumann model; data representation in computer systems; Boolean algebra, digital logic and its application to understanding Central Processing Unit (CPU) organisation; combinational and sequential circuits; Finite State Machine (FSM); Instruction Set Architecture (ISA); Assembly Language Programming; other basic modules, such as cache memory, virtual memory, and input/output techniques.

COMP1023
Foundations of C Programming
3Units

Pre-requisite(s): None

Course Description:
This course provides students with basic knowledge of computer-oriented problem solving methodologies, algorithm development, structured programming concepts and design techniques, and implementation tools that facilitate debugging and testing. In particular, structured programming skills will be illustrated with a contemporary programming language.

COMP1033
Systems and Web Development Workshop
3Units

Pre-requisite(s):
COMP1023 FOUNDATIONS OF C PROGRAMMING

Course Description:
The aim of this workshop is to introduce the basics of Linux (operating system programming) and JavaScript (web programming).

COMP2003
Data Structures and Algorithms
3Units

Pre-requisite(s):
COMP1013 STRUCTURED PROGRAMMING, or
GCIT1013 FOUNDATIONS OF C PROGRAMMING, or
COMP1023 FOUNDATIONS OF C PROGRAMMING, or
COMP2013 OBJECT-ORIENTED PROGRAMMING, or
STAT2043 STRUCTURED PROGRAMMING (FOR STAT STUDENTS), or
COMP3153 C++ PROGRAMMING LANGUAGE

Course Description:
This course develops students' knowledge of data structures and their associated algorithms. It introduces the concepts and techniques of structuring and operating on Abstract Data Types in problem solving. Common sorting, searching and graph algorithms will be discussed, and their complexity studied.

COMP2013
Object-Oriented Programming
3Units

Pre-requisite(s): None

Course Description:
This course introduces object-oriented programming concepts, principles, and techniques, including classes, objects, inheritance, and polymorphism. All these concepts are illustrated using a contemporary object-oriented programming language. Upon completion, students should be able to use an object-oriented language to develop complex programmes.

COMP2073
Data Programming Workshop
3Units

Pre-requisite(s):
COMP1023 FOUNDATIONS OF C PROGRAMMING, and
COMP2013 OBJECT-ORIENTED PROGRAMMING

Course Description:
This workshop aims to have the students learn independent design, research, and coding on data analysis. It will help the students understand the concept of data analysis process. By processing data, students will learn how to collect data, clean data, process and visualize data. One or two programming languages will be introduced during the course. They could be Python, or any other new technologies.

COMP3003
Data Communications and Networking
3Units

Pre-requisite(s):
COMP1003 COMPUTER ORGANISATION

Course Description:
Students will learn the principles of data communications, computer networks and network programming. Topics include: Network hardware and software, Network topologies and categories, Reference models and standards, Physical layer: signal analysis, bandwidth and data rate, transmission media, encoding, transmission, Data link layer, Network layer, Ethernet, Fast Ethernet, Gigabit Ethernet, Wi-Fi, TCP/IP, Socket programming, Client and Server software.

COMP3013
Database Management Systems
3Units

Pre-requisite(s):
COMP1013 STRUCTURED PROGRAMMING, or
GCIT1013 FOUNDATIONS OF C PROGRAMMING, or
COMP1023 FOUNDATIONS OF C PROGRAMMING, or
STAT2043 STRUCTURED PROGRAMMING (FOR STAT STUDENTS), or
COMP3153C++PROGRAMMING LANGUAGE

Course Description:
This course introduces how to represent the data in a database for a given application and how to manage and use a database management system. Topics include: conceptual modelling of a database, relational data model, relational algebra, database language SQL, relation database design, and emerging XML data models. In addition, hands-on DBMS experience is included.

COMP3023
Design and Analysis of Algorithms
3Units

Pre-requisite(s):
COMP2003 DATA STRUCTURES AND ALGORITHMS, or
COMP3143 DATA STRUCTURE (FOR FM STUDENTS)

Course Description:
This course builds on the study of the analysis and implementation of algorithms and data structures (COMP2003). The goal is to introduce a number of important algorithms that are interesting both from a practical and theoretical point of view. Algorithm design paradigms such as divide-and-conquer and dynamic programming will be discussed, and algorithms for sorting, searching, and graph problems, etc. will be developed.

COMP3033
Operating Systems
3Units

Pre-requisite(s):
COMP1013 STRUCTURED PROGRAMMING, or
GCIT1013 FOUNDATIONS OF C PROGRAMMING, or
COMP1023 FOUNDATIONS OF C PROGRAMMING, or
COMP2013 OBJECT-ORIENTED PROGRAMMING, or
STAT2043 STRUCTURED PROGRAMMING (FOR STAT STUDENTS), or
COMP3153 C++ PROGRAMMING LANGUAGE

Course Description:
Introduces the fundamentals of operating system design and implementation. Topics include an overview of the components of an operating system, mutual exclusion and synchronisation, deadlocks and starvation, implementation of processes and threads, resource scheduling algorithms, memory management, and file systems.

COMP3063
Software Engineering
3Units

Pre-requisite(s):
COMP2013 OBJECT-ORIENTED PROGRAMMING

Course Description:
This course discusses the principles and practical aspects of software development. It studies the methodology of software development as well as the organisation, planning and management of the development process so that students will appreciate the difficulties involved in a large system development project and the importance of a disciplined approach to the problem.

COMP3173
Compiler Construction
3Units

Pre-requisite(s):
COMP1013 STRUCTURED PROGRAMMING, or
GCIT1013 FOUNDATIONS OF C PROGRAMMING, or
COMP1023 FOUNDATIONS OF C PROGRAMMING, or
COMP2013 OBJECT-ORIENTED PROGRAMMINGor
STAT2043 STRUCTURED PROGRAMMING (FOR STAT STUDENTS), or
COMP3153 C++ PROGRAMMING LANGUAGE

Course Description:
This course introduces the concepts that underline most of the programming languages students are likely to encounter, and illustrates those concepts with examples from various languages. Topics include syntax and semantic analysis, bindings, type systems, programming paradigms, control abstraction and flow.

COMP3253
Advanced Software Development Workshop
3Units

Pre-requisite(s):
COMP2013 OBJECTED-ORIENTED PROGRAMMING, and
COMP3013 DATABASE MANAGEMENT SYSTEMS

Course Description:
This workshop aims to help students have some practices in working as a software engineer via the development of a project. The course will also show students how to elicit and document specifications, design software architecture, test the implementation, communicate as a team, and use appropriate tools. The students are expected to be able to apply the software engineering principles and methods to software development.

COMP4004
Final Year Project I (COMP)
3Units

Pre-requisite(s): None 

Other Condition(s):
Year 4 standing in Computer Science and Technology Programme 

Course Description:
Students will undertake an individual project under the supervision of a faculty member and gain the practical experience of applying computer systems principles and techniques acquired from the course to the solution of real-life problems. The project demands careful planning and creative application of underlying theories and enabling technologies. A thesis and an oral presentation are required upon successful completion of the project. This course is open to Computer Science majors only.


DS4023
Machine Learning
3Units

Pre-requisite(s):
COMP1013 STRUCTURED PROGRAMMING, or
GCIT1013 FOUNDATIONS OF C PROGRAMMING, or
COMP1023 FOUNDATIONS OF C PROGRAMMING, or
STAT2043 STRUCTURED PROGRAMMING (FOR STAT STUDENTS), or
COMP2013 OBJECT ORIENTED PROGRAMMING, or
COMP3153 C++ PROGRAMMING LANGUAGE

Course Description:
The course will provide an introduction to Machine Learning and its core models and algorithms. The aim of the course is to give the student the basic ideas and intuition behind modern machine learning methods as well as a bit more formal understanding of how, why, and when they work.

MATH1003
Linear Algebra
3Units

Pre-requisite(s): None

Course Description:
This course introduces the basic techniques in matrix algebra, which is the foundation for more advanced mathematics and statistics subjects. Major emphasis will be on the system of linear equations, linearly independence, and eigenvalue problems in finite dimensional vector spaces. Basic ideas and techniques on calculus will be introduced.

MATH1123
Calculus For Science and Engineering
3Units

Pre-requisite(s): None

Course Description:
Calculus for Science and Engineering introduces the differential and integral calculus for univariate functions. It emphasizes the basic ideas and concepts on limits, derivatives, antiderivatives, definite integral, simple differential equations and corresponding applications in natural science and engineering. It provides the foundations for more advanced quantitative courses for science and engineering student.

MATH2003
Discrete Structures
3Units

Pre-requisite(s): None

Course Description:
This course addresses a variety of fundamental topics in computer science, including propositional and predicate logic, proof technique, set theory, combinatorics, graph theory, and Boolean algebra.

Pre-requisite(s): None

Course Description:
An introduction to the building blocks and organisation of modern digital computers. The course answers the question: How does a computer work? Topics include: historical development of computing and the von Neumann model; data representation in computer systems; Boolean algebra, digital logic and its application to understanding Central Processing Unit (CPU) organisation; combinational and sequential circuits; Finite State Machine (FSM); Instruction Set Architecture (ISA); Assembly Language Programming; other basic modules, such as cache memory, virtual memory, and input/output techniques.

COMP1003
Computer Organisation
3Units

Pre-requisite(s): None

Course Description:
An introduction to the building blocks and organisation of modern digital computers. The course answers the question: How does a computer work? Topics include: historical development of computing and the von Neumann model; data representation in computer systems; Boolean algebra, digital logic and its application to understanding Central Processing Unit (CPU) organisation; combinational and sequential circuits; Finite State Machine (FSM); Instruction Set Architecture (ISA); Assembly Language Programming; other basic modules, such as cache memory, virtual memory, and input/output techniques.

COMP1023
Foundations of C Programming
3Units

Pre-requisite(s): None

Course Description:
This course provides students with basic knowledge of computer-oriented problem solving methodologies, algorithm development, structured programming concepts and design techniques, and implementation tools that facilitate debugging and testing. In particular, structured programming skills will be illustrated with a contemporary programming language.

COMP1033
Systems and Web Development Workshop
3Units

Pre-requisite(s):
COMP1023 FOUNDATIONS OF C PROGRAMMING

Course Description:
The aim of this workshop is to introduce the basics of Linux (operating system programming) and JavaScript (web programming).

COMP2003
Data Structures and Algorithms
3Units

Pre-requisite(s):
COMP1013 STRUCTURED PROGRAMMING, or
GCIT1013 FOUNDATIONS OF C PROGRAMMING, or
COMP1023 FOUNDATIONS OF C PROGRAMMING, or
COMP2013 OBJECT-ORIENTED PROGRAMMING, or
STAT2043 STRUCTURED PROGRAMMING (FOR STAT STUDENTS), or
COMP3153 C++ PROGRAMMING LANGUAGE

Course Description:
This course develops students' knowledge of data structures and their associated algorithms. It introduces the concepts and techniques of structuring and operating on Abstract Data Types in problem solving. Common sorting, searching and graph algorithms will be discussed, and their complexity studied.

COMP2013
Object-Oriented Programming
3Units

Pre-requisite(s): None

Course Description:
This course introduces object-oriented programming concepts, principles, and techniques, including classes, objects, inheritance, and polymorphism. All these concepts are illustrated using a contemporary object-oriented programming language. Upon completion, students should be able to use an object-oriented language to develop complex programmes.

COMP2073
Data Programming Workshop
3Units

Pre-requisite(s):
COMP1023 FOUNDATIONS OF C PROGRAMMING, and
COMP2013 OBJECT-ORIENTED PROGRAMMING

Course Description:
This workshop aims to have the students learn independent design, research, and coding on data analysis. It will help the students understand the concept of data analysis process. By processing data, students will learn how to collect data, clean data, process and visualize data. One or two programming languages will be introduced during the course. They could be Python, or any other new technologies.

COMP3003
Data Communications and Networking
3Units

Pre-requisite(s):
COMP1003 COMPUTER ORGANISATION

Course Description:
Students will learn the principles of data communications, computer networks and network programming. Topics include: Network hardware and software, Network topologies and categories, Reference models and standards, Physical layer: signal analysis, bandwidth and data rate, transmission media, encoding, transmission, Data link layer, Network layer, Ethernet, Fast Ethernet, Gigabit Ethernet, Wi-Fi, TCP/IP, Socket programming, Client and Server software.

COMP3013
Database Management Systems
3Units

Pre-requisite(s):
COMP1013 STRUCTURED PROGRAMMING, or
GCIT1013 FOUNDATIONS OF C PROGRAMMING, or
COMP1023 FOUNDATIONS OF C PROGRAMMING, or
STAT2043 STRUCTURED PROGRAMMING (FOR STAT STUDENTS), or
COMP3153C++PROGRAMMING LANGUAGE

Course Description:
This course introduces how to represent the data in a database for a given application and how to manage and use a database management system. Topics include: conceptual modelling of a database, relational data model, relational algebra, database language SQL, relation database design, and emerging XML data models. In addition, hands-on DBMS experience is included.

COMP3023
Design and Analysis of Algorithms
3Units

Pre-requisite(s):
COMP2003 DATA STRUCTURES AND ALGORITHMS, or
COMP3143 DATA STRUCTURE (FOR FM STUDENTS)

Course Description:
This course builds on the study of the analysis and implementation of algorithms and data structures (COMP2003). The goal is to introduce a number of important algorithms that are interesting both from a practical and theoretical point of view. Algorithm design paradigms such as divide-and-conquer and dynamic programming will be discussed, and algorithms for sorting, searching, and graph problems, etc. will be developed.

COMP3033
Operating Systems
3Units

Pre-requisite(s):
COMP1013 STRUCTURED PROGRAMMING, or
GCIT1013 FOUNDATIONS OF C PROGRAMMING, or
COMP1023 FOUNDATIONS OF C PROGRAMMING, or
COMP2013 OBJECT-ORIENTED PROGRAMMING, or
STAT2043 STRUCTURED PROGRAMMING (FOR STAT STUDENTS), or
COMP3153 C++ PROGRAMMING LANGUAGE

Course Description:
Introduces the fundamentals of operating system design and implementation. Topics include an overview of the components of an operating system, mutual exclusion and synchronisation, deadlocks and starvation, implementation of processes and threads, resource scheduling algorithms, memory management, and file systems.

COMP3063
Software Engineering
3Units

Pre-requisite(s):
COMP2013 OBJECT-ORIENTED PROGRAMMING

Course Description:
This course discusses the principles and practical aspects of software development. It studies the methodology of software development as well as the organisation, planning and management of the development process so that students will appreciate the difficulties involved in a large system development project and the importance of a disciplined approach to the problem.

COMP3173
Compiler Construction
3Units

Pre-requisite(s):
COMP1013 STRUCTURED PROGRAMMING, or
GCIT1013 FOUNDATIONS OF C PROGRAMMING, or
COMP1023 FOUNDATIONS OF C PROGRAMMING, or
COMP2013 OBJECT-ORIENTED PROGRAMMINGor
STAT2043 STRUCTURED PROGRAMMING (FOR STAT STUDENTS), or
COMP3153 C++ PROGRAMMING LANGUAGE

Course Description:
This course introduces the concepts that underline most of the programming languages students are likely to encounter, and illustrates those concepts with examples from various languages. Topics include syntax and semantic analysis, bindings, type systems, programming paradigms, control abstraction and flow.

COMP3253
Advanced Software Development Workshop
3Units

Pre-requisite(s):
COMP2013 OBJECTED-ORIENTED PROGRAMMING, and
COMP3013 DATABASE MANAGEMENT SYSTEMS

Course Description:
This workshop aims to help students have some practices in working as a software engineer via the development of a project. The course will also show students how to elicit and document specifications, design software architecture, test the implementation, communicate as a team, and use appropriate tools. The students are expected to be able to apply the software engineering principles and methods to software development.

COMP4004
Final Year Project I (COMP)
3Units

Pre-requisite(s): None 

Other Condition(s):
Year 4 standing in Computer Science and Technology Programme 

Course Description:
Students will undertake an individual project under the supervision of a faculty member and gain the practical experience of applying computer systems principles and techniques acquired from the course to the solution of real-life problems. The project demands careful planning and creative application of underlying theories and enabling technologies. A thesis and an oral presentation are required upon successful completion of the project. This course is open to Computer Science majors only.


DS4023
Machine Learning
3Units

Pre-requisite(s):
COMP1013 STRUCTURED PROGRAMMING, or
GCIT1013 FOUNDATIONS OF C PROGRAMMING, or
COMP1023 FOUNDATIONS OF C PROGRAMMING, or
STAT2043 STRUCTURED PROGRAMMING (FOR STAT STUDENTS), or
COMP2013 OBJECT ORIENTED PROGRAMMING, or
COMP3153 C++ PROGRAMMING LANGUAGE

Course Description:
The course will provide an introduction to Machine Learning and its core models and algorithms. The aim of the course is to give the student the basic ideas and intuition behind modern machine learning methods as well as a bit more formal understanding of how, why, and when they work.

MATH1003
Linear Algebra
3Units

Pre-requisite(s): None

Course Description:
This course introduces the basic techniques in matrix algebra, which is the foundation for more advanced mathematics and statistics subjects. Major emphasis will be on the system of linear equations, linearly independence, and eigenvalue problems in finite dimensional vector spaces. Basic ideas and techniques on calculus will be introduced.

MATH1123
Calculus For Science and Engineering
3Units

Pre-requisite(s): None

Course Description:
Calculus for Science and Engineering introduces the differential and integral calculus for univariate functions. It emphasizes the basic ideas and concepts on limits, derivatives, antiderivatives, definite integral, simple differential equations and corresponding applications in natural science and engineering. It provides the foundations for more advanced quantitative courses for science and engineering student.

MATH2003
Discrete Structures
3Units

Pre-requisite(s): None

Course Description:
This course addresses a variety of fundamental topics in computer science, including propositional and predicate logic, proof technique, set theory, combinatorics, graph theory, and Boolean algebra.

Pre-requisite(s): None

Course Description:
An introduction to the building blocks and organisation of modern digital computers. The course answers the question: How does a computer work? Topics include: historical development of computing and the von Neumann model; data representation in computer systems; Boolean algebra, digital logic and its application to understanding Central Processing Unit (CPU) organisation; combinational and sequential circuits; Finite State Machine (FSM); Instruction Set Architecture (ISA); Assembly Language Programming; other basic modules, such as cache memory, virtual memory, and input/output techniques.

COMP1003
Computer Organisation
3Units

Pre-requisite(s): None

Course Description:
An introduction to the building blocks and organisation of modern digital computers. The course answers the question: How does a computer work? Topics include: historical development of computing and the von Neumann model; data representation in computer systems; Boolean algebra, digital logic and its application to understanding Central Processing Unit (CPU) organisation; combinational and sequential circuits; Finite State Machine (FSM); Instruction Set Architecture (ISA); Assembly Language Programming; other basic modules, such as cache memory, virtual memory, and input/output techniques.

COMP1023
Foundations of C Programming
3Units

Pre-requisite(s): None

Course Description:
This course provides students with basic knowledge of computer-oriented problem solving methodologies, algorithm development, structured programming concepts and design techniques, and implementation tools that facilitate debugging and testing. In particular, structured programming skills will be illustrated with a contemporary programming language.

COMP1033
Systems and Web Development Workshop
3Units

Pre-requisite(s):
COMP1023 FOUNDATIONS OF C PROGRAMMING

Course Description:
The aim of this workshop is to introduce the basics of Linux (operating system programming) and JavaScript (web programming).

COMP2003
Data Structures and Algorithms
3Units

Pre-requisite(s):
COMP1013 STRUCTURED PROGRAMMING, or
GCIT1013 FOUNDATIONS OF C PROGRAMMING, or
COMP1023 FOUNDATIONS OF C PROGRAMMING, or
COMP2013 OBJECT-ORIENTED PROGRAMMING, or
STAT2043 STRUCTURED PROGRAMMING (FOR STAT STUDENTS), or
COMP3153 C++ PROGRAMMING LANGUAGE

Course Description:
This course develops students' knowledge of data structures and their associated algorithms. It introduces the concepts and techniques of structuring and operating on Abstract Data Types in problem solving. Common sorting, searching and graph algorithms will be discussed, and their complexity studied.

COMP2013
Object-Oriented Programming
3Units

Pre-requisite(s): None

Course Description:
This course introduces object-oriented programming concepts, principles, and techniques, including classes, objects, inheritance, and polymorphism. All these concepts are illustrated using a contemporary object-oriented programming language. Upon completion, students should be able to use an object-oriented language to develop complex programmes.

COMP2073
Data Programming Workshop
3Units

Pre-requisite(s):
COMP1023 FOUNDATIONS OF C PROGRAMMING, and
COMP2013 OBJECT-ORIENTED PROGRAMMING

Course Description:
This workshop aims to have the students learn independent design, research, and coding on data analysis. It will help the students understand the concept of data analysis process. By processing data, students will learn how to collect data, clean data, process and visualize data. One or two programming languages will be introduced during the course. They could be Python, or any other new technologies.

COMP3003
Data Communications and Networking
3Units

Pre-requisite(s):
COMP1003 COMPUTER ORGANISATION

Course Description:
Students will learn the principles of data communications, computer networks and network programming. Topics include: Network hardware and software, Network topologies and categories, Reference models and standards, Physical layer: signal analysis, bandwidth and data rate, transmission media, encoding, transmission, Data link layer, Network layer, Ethernet, Fast Ethernet, Gigabit Ethernet, Wi-Fi, TCP/IP, Socket programming, Client and Server software.

COMP3013
Database Management Systems
3Units

Pre-requisite(s):
COMP1013 STRUCTURED PROGRAMMING, or
GCIT1013 FOUNDATIONS OF C PROGRAMMING, or
COMP1023 FOUNDATIONS OF C PROGRAMMING, or
STAT2043 STRUCTURED PROGRAMMING (FOR STAT STUDENTS), or
COMP3153C++PROGRAMMING LANGUAGE

Course Description:
This course introduces how to represent the data in a database for a given application and how to manage and use a database management system. Topics include: conceptual modelling of a database, relational data model, relational algebra, database language SQL, relation database design, and emerging XML data models. In addition, hands-on DBMS experience is included.

COMP3023
Design and Analysis of Algorithms
3Units

Pre-requisite(s):
COMP2003 DATA STRUCTURES AND ALGORITHMS, or
COMP3143 DATA STRUCTURE (FOR FM STUDENTS)

Course Description:
This course builds on the study of the analysis and implementation of algorithms and data structures (COMP2003). The goal is to introduce a number of important algorithms that are interesting both from a practical and theoretical point of view. Algorithm design paradigms such as divide-and-conquer and dynamic programming will be discussed, and algorithms for sorting, searching, and graph problems, etc. will be developed.

COMP3033
Operating Systems
3Units

Pre-requisite(s):
COMP1013 STRUCTURED PROGRAMMING, or
GCIT1013 FOUNDATIONS OF C PROGRAMMING, or
COMP1023 FOUNDATIONS OF C PROGRAMMING, or
COMP2013 OBJECT-ORIENTED PROGRAMMING, or
STAT2043 STRUCTURED PROGRAMMING (FOR STAT STUDENTS), or
COMP3153 C++ PROGRAMMING LANGUAGE

Course Description:
Introduces the fundamentals of operating system design and implementation. Topics include an overview of the components of an operating system, mutual exclusion and synchronisation, deadlocks and starvation, implementation of processes and threads, resource scheduling algorithms, memory management, and file systems.

COMP3063
Software Engineering
3Units

Pre-requisite(s):
COMP2013 OBJECT-ORIENTED PROGRAMMING

Course Description:
This course discusses the principles and practical aspects of software development. It studies the methodology of software development as well as the organisation, planning and management of the development process so that students will appreciate the difficulties involved in a large system development project and the importance of a disciplined approach to the problem.

COMP3173
Compiler Construction
3Units

Pre-requisite(s):
COMP1013 STRUCTURED PROGRAMMING, or
GCIT1013 FOUNDATIONS OF C PROGRAMMING, or
COMP1023 FOUNDATIONS OF C PROGRAMMING, or
COMP2013 OBJECT-ORIENTED PROGRAMMINGor
STAT2043 STRUCTURED PROGRAMMING (FOR STAT STUDENTS), or
COMP3153 C++ PROGRAMMING LANGUAGE

Course Description:
This course introduces the concepts that underline most of the programming languages students are likely to encounter, and illustrates those concepts with examples from various languages. Topics include syntax and semantic analysis, bindings, type systems, programming paradigms, control abstraction and flow.

COMP3253
Advanced Software Development Workshop
3Units

Pre-requisite(s):
COMP2013 OBJECTED-ORIENTED PROGRAMMING, and
COMP3013 DATABASE MANAGEMENT SYSTEMS

Course Description:
This workshop aims to help students have some practices in working as a software engineer via the development of a project. The course will also show students how to elicit and document specifications, design software architecture, test the implementation, communicate as a team, and use appropriate tools. The students are expected to be able to apply the software engineering principles and methods to software development.

COMP4004
Final Year Project I (COMP)
3Units

Pre-requisite(s): None 

Other Condition(s):
Year 4 standing in Computer Science and Technology Programme 

Course Description:
Students will undertake an individual project under the supervision of a faculty member and gain the practical experience of applying computer systems principles and techniques acquired from the course to the solution of real-life problems. The project demands careful planning and creative application of underlying theories and enabling technologies. A thesis and an oral presentation are required upon successful completion of the project. This course is open to Computer Science majors only.


DS4023
Machine Learning
3Units

Pre-requisite(s):
COMP1013 STRUCTURED PROGRAMMING, or
GCIT1013 FOUNDATIONS OF C PROGRAMMING, or
COMP1023 FOUNDATIONS OF C PROGRAMMING, or
STAT2043 STRUCTURED PROGRAMMING (FOR STAT STUDENTS), or
COMP2013 OBJECT ORIENTED PROGRAMMING, or
COMP3153 C++ PROGRAMMING LANGUAGE

Course Description:
The course will provide an introduction to Machine Learning and its core models and algorithms. The aim of the course is to give the student the basic ideas and intuition behind modern machine learning methods as well as a bit more formal understanding of how, why, and when they work.

MATH1003
Linear Algebra
3Units

Pre-requisite(s): None

Course Description:
This course introduces the basic techniques in matrix algebra, which is the foundation for more advanced mathematics and statistics subjects. Major emphasis will be on the system of linear equations, linearly independence, and eigenvalue problems in finite dimensional vector spaces. Basic ideas and techniques on calculus will be introduced.

MATH1123
Calculus For Science and Engineering
3Units

Pre-requisite(s): None

Course Description:
Calculus for Science and Engineering introduces the differential and integral calculus for univariate functions. It emphasizes the basic ideas and concepts on limits, derivatives, antiderivatives, definite integral, simple differential equations and corresponding applications in natural science and engineering. It provides the foundations for more advanced quantitative courses for science and engineering student.

MATH2003
Discrete Structures
3Units

Pre-requisite(s): None

Course Description:
This course addresses a variety of fundamental topics in computer science, including propositional and predicate logic, proof technique, set theory, combinatorics, graph theory, and Boolean algebra.

Computer Organisation

Pre-requisite(s): None

Course Description:
An introduction to the building blocks and organisation of modern digital computers. The course answers the question: How does a computer work? Topics include: historical development of computing and the von Neumann model; data representation in computer systems; Boolean algebra, digital logic and its application to understanding Central Processing Unit (CPU) organisation; combinational and sequential circuits; Finite State Machine (FSM); Instruction Set Architecture (ISA); Assembly Language Programming; other basic modules, such as cache memory, virtual memory, and input/output techniques.

Foundations of C Programming

Pre-requisite(s): None

Course Description:
This course provides students with basic knowledge of computer-oriented problem solving methodologies, algorithm development, structured programming concepts and design techniques, and implementation tools that facilitate debugging and testing. In particular, structured programming skills will be illustrated with a contemporary programming language.

Systems and Web Development Workshop

Pre-requisite(s):
COMP1023 FOUNDATIONS OF C PROGRAMMING

Course Description:
The aim of this workshop is to introduce the basics of Linux (operating system programming) and JavaScript (web programming).

Data Structures and Algorithms

Pre-requisite(s):
COMP1013 STRUCTURED PROGRAMMING, or
GCIT1013 FOUNDATIONS OF C PROGRAMMING, or
COMP1023 FOUNDATIONS OF C PROGRAMMING, or
COMP2013 OBJECT-ORIENTED PROGRAMMING, or
STAT2043 STRUCTURED PROGRAMMING (FOR STAT STUDENTS), or
COMP3153 C++ PROGRAMMING LANGUAGE

Course Description:
This course develops students' knowledge of data structures and their associated algorithms. It introduces the concepts and techniques of structuring and operating on Abstract Data Types in problem solving. Common sorting, searching and graph algorithms will be discussed, and their complexity studied.

Object-Oriented Programming

Pre-requisite(s): None

Course Description:
This course introduces object-oriented programming concepts, principles, and techniques, including classes, objects, inheritance, and polymorphism. All these concepts are illustrated using a contemporary object-oriented programming language. Upon completion, students should be able to use an object-oriented language to develop complex programmes.

Data Programming Workshop

Pre-requisite(s):
COMP1023 FOUNDATIONS OF C PROGRAMMING, and
COMP2013 OBJECT-ORIENTED PROGRAMMING

Course Description:
This workshop aims to have the students learn independent design, research, and coding on data analysis. It will help the students understand the concept of data analysis process. By processing data, students will learn how to collect data, clean data, process and visualize data. One or two programming languages will be introduced during the course. They could be Python, or any other new technologies.

Data Communications and Networking

Pre-requisite(s):
COMP1003 COMPUTER ORGANISATION

Course Description:
Students will learn the principles of data communications, computer networks and network programming. Topics include: Network hardware and software, Network topologies and categories, Reference models and standards, Physical layer: signal analysis, bandwidth and data rate, transmission media, encoding, transmission, Data link layer, Network layer, Ethernet, Fast Ethernet, Gigabit Ethernet, Wi-Fi, TCP/IP, Socket programming, Client and Server software.

Database Management Systems

Pre-requisite(s):
COMP1013 STRUCTURED PROGRAMMING, or
GCIT1013 FOUNDATIONS OF C PROGRAMMING, or
COMP1023 FOUNDATIONS OF C PROGRAMMING, or
STAT2043 STRUCTURED PROGRAMMING (FOR STAT STUDENTS), or
COMP3153C++PROGRAMMING LANGUAGE

Course Description:
This course introduces how to represent the data in a database for a given application and how to manage and use a database management system. Topics include: conceptual modelling of a database, relational data model, relational algebra, database language SQL, relation database design, and emerging XML data models. In addition, hands-on DBMS experience is included.