COMP3259 Principles of programming languages [Section 2A, 2024]

Course category2024-25

Welcome to Principles of Programming Languages!

This course covers central concepts in programming languages, language design and implementation, and programming paradigms.The course will have a practical focus, encouraging students to implement a progressively more sophisticated programming language illustrating various concepts and ideas from functional, imperative and object-oriented programming. These concepts include for example static scoping, closures, inheritance, mutable state, and type systems. All such features are widely used by many existing programming languages.

The programming language Haskell, which is a functional language, will be used in for the coursework and will serve as a prime example of a modern, functional language. Haskell is an obvious choice for this class because of its excellent support for declaring the abstract syntax of a programming language and writing various analyses over that syntax.

COMP3258 Functional programming [Section 2A, 2024]

Course category2024-25

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

COMP2396 Object-oriented programming and Java [Section 1B, 2024]

Course category2024-25

Hi, welcome to the course COMP2396B Object-oriented Programming and Java!

This course will cover the following: 
Introduction to object-oriented programming; abstract data types and classes; inheritance and polymorphism; object-oriented program design; Java language and its program development environment; user interfaces and GUI programming; collection class and iteration protocol; program documentation.
Wish you enjoy this course!

Teacher: Chim Tat Wing

COMP2121 Discrete mathematics [Section 2C, 2024]

Course category2024-25

Discrete Mathematics Core course. 

  • [O1 Abstract Concepts] Understand abstract mathematical concepts which are fundamental to computer science: logic, sets, functions, basic probability, graph theory.
  • [O2 Proof Techniques] Be able to perform abstract thinking and present logical argument using techniques such as mathematical induction, proof by contradiction.
  • [O3 Basic Analysis Techniques] Be able to apply formal reasoning to analyse and enumerate the possible outcomes of a computational problem e.g. model and compute the number of operations using recursion, counting and combinatorics.