This module is offered in 2021-22.


The aims of this module are:

  • To study the design and implementation of modern programming languages.

Learning Outcomes

On successful completion of this module, the student should:

  • Be aware of some of the wide variety of concepts available in various programming language paradigms;
  • Understand the semantics of some of these concepts;
  • Be aware of some of the many trade-offs in programming language implementation;
  • Have written parts of, and understand how to write, a compiler.


  • Language design principles, lexical analysis, concrete and abstract syntax, context free grammars, parsing, evaluation mechanisms, binding and scope, type systems, polymorphism, semantics, formal definition of programming languages including BNF, compiling techniques, code generation, generative programming, abstract machine design, optimisation, program analysis, run-time systems, threads, concurrency and parallelism support and garbage collection.

Compulsory Elements

This module has no compulsory elements beyond those common to all modules (mark of 4 in each assessment component).

Module Delivery

Back to top

Last Published: 19 Jan 2022.