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

Course category2019-20

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.


COMP3357 Cryptography [Section 2A, 2019]

Course category2019-20

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