CO545 Functional and concurrent programming
CO527 Operating systems and architecture
CO518 Algorithms, correctness, and efficiency
Information below is for the 2017-18 session.
OverviewA study of techniques for interpreting and compiling programming languages, implementing them in a typed functional programming language (e.g., OCaml, Haskell). The module will outline a whole compiler from source to machine code, but will focus in depth on key algorithms and techniques. Possible in-depth topics include:
The implemented language will be based on a simple imperative (e.g., Pascal-like) language with some extensions to address advanced topics in data layout (e.g., closures, objects, pattern matching). The course will be organized around a simple, but complete, example compiler that the student will have to understand and modify.
This module appears in:
33 hours of lectures
2 hours of terminal sessions, early in the term
50 hours of study and revision
65 hours on assessed coursework
Method of assessment
2 hour examination 40%
See the library reading list for this module (Canterbury)
See the library reading list for this module (Medway)
Students who complete this module will:
11.1 understand how a computer program in a high-level, imperative language is translated into machine code;
11.2 understand how a program is executed, including run-time system support;
11.3 understand a variety of techniques that a compiler uses to improve the efficiency of its generated code;
11.4 understand how to represent programs as data in a typed functional language;
11.5 be able to implement basic compiler optimisation techniques;
11.6 be able to evaluate a program's performance; and
11.7 be able to work with and modify an existing code base.