School of Computer Science

Module 06-30230 (2021)

Programming Language Principles, Design, and Implementation

Level 3/H

David Parker Vincent Rahli Semester 1 20 credits
Co-ordinator: David Parker
Reviewer: Vincent Rahli

The Module Description is a strict subset of this Syllabus Page.


By now students will have seen and used a variety of programming languages. In this module they will also understand the principles behind their design along with techniques for transforming human-friendly programs into machine-friendly sets of instructions. This module introduces some of the central ideas and techniques in the study of programming languages, from syntactic and semantic specification to compilation. Both the syntax (parsing) and semantics (operational semantics, abstract machines) will be covered. Students will also see how types can be used in compilers to prevent certain catastrophic errors (“type safety”). Finally, the module will cover computer-aided verification techniques, which use automata and logic to automatically prove the correctness of sequential or parallel programs.

Learning Outcomes

On successful completion of this module, the student should be able to:

  • Understand the principles behind parsing
  • Understand operational semantics and abstract machines
  • Understand the principles of code optimisation and generation
  • Understand the use of types to guarantee safety properties
  • Understand the use of automata and logic to prove correctness


  • 06-30203 - Systems Programming in C/C++

Taught with

  • 06-30256 - Programming Language Principles, Design, and Implementation (Extended)

Cannot be taken with

  • 06-30256 - Programming Language Principles, Design, and Implementation (Extended)


  • Main Assessments: 1.5 hour examination (80%) and continuous assessment (20%)
  • Supplementary Assessments: 1.5 hour examination (100%)

Programmes containing this module