Programming Languages

The overall aim of the Programming Languages theme is to improve the effectiveness and reliability of programming languages and systems. Effectiveness such that programmers can express intent at the right level of abstraction and get actionable feedback that is relevant and timely. Reliability such that programmers can trust the execution and analysis of programs. These dual goals of effectiveness and reliability are achieved through the design and study of programming languages and tools for editing, analysing, transforming, and compiling programs written in those languages. In this theme, you will learn everything from the mathematical foundations of programming languages to the practical engineering of programming language tools, and from latest new developments in the field of programming languages to how to design your own programming language from scratch.

Year 1

Quarter 1

Quarter 2

Quarter 3

Quarter 4

Software Architecture Core course Responsible Computer Science Research course
Core course Theme 1 Theme 1 Theme 1
Core course Theme 2 Theme 2 Theme 2

Credits: each course in a theme is 5EC, so each theme is 15EC.

Students choose 2 themes, each of which has 3 courses in the 2nd, 3rd and 4th quarters of the 1st year. For this theme, you will take the following courses:

Q2 - Compiler Construction

Q3 - Parallel and Concurrent Programming

Q4 - Advanced Functional Programming