Jump to body content.
Module Catalogue

Programming Language Implementation - CO658

LocationDetails Term Level Credits (ECTS) Current Convenor 2017-18 2018-19
Location: Canterbury
Term: Spring View Timetable
Level: 6
Credits (ECTS): 15 (7.5)
Current Convenor: Dr S A Owens
View Timetable
6 15 (7.5) Dr S A Owens

Information below is for the 2017-18 session.


A 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:
• writing interpreters,
• Hindley-Milner type inference,
• register allocation,
• garbage collection,
• abstract interpretation,
• static single assignment form.

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.


Contact hours

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%
Coursework 60%

Preliminary reading

See the library reading list for this module (Canterbury)

See the library reading list for this module (Medway)

See the library reading list for this module (Canterbury)

See the library reading list for this module (Medway)

Learning outcomes

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.

The University of Kent makes every effort to ensure that module information is accurate for the relevant academic session and to provide educational services as described. However, courses, services and other matters may be subject to change. Please read our full disclaimer.

Publishing Office - © University of Kent

The University of Kent, Canterbury, Kent, CT2 7NZ, T: +44 (0)1227 764000