School of Computer Science

Module 06-26954 (2019)

Principles of Programming Languages (Extended)

Level 4/M

Uday Reddy Semester 2 10 credits
Co-ordinator: Uday Reddy
Reviewer: Eike Ritter

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


It can be argued that the development and study of high-level programming languages is a central task for computer science research, and enormous progress has indeed been made from the machine-level coding of the 40s to today's functional and object-oriented languages. In this module, we will study the features that have emerged as recurring themes in high-level languages, though they are expressed in a variety of ways. We will develop an understanding of the precise meaning of programs and rigorous reasoning principles based on them. We will use the lambda calculus as a foundation for understanding functions and procedures. We will explore the fundamental concepts of type systems, based on which the modern language features such as object-orientation and generic procedures are built.


The aims of this module are to:

  • Introduce the central ideas and techniques in the theory of programming languages.
  • Exhibit some of the building blocks from which high-level programming languages are constructed.
  • Illustrate how concrete languages realise abstract programming language ideas.
  • Explain ways for defining the semantics of programming language constructs in a rigorous fashion.

Learning Outcomes

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

  1. Demonstrate appreciation of the meaning of programming language constructs and rigorous reasoning about them
  2. Relate features of concrete programming languages to abstract principles
  3. Assign types from various type disciplines to program expressions
  4. Develop formal descriptions of semantics and type systems of programming languages


May not be taken by students who have already completed or are currently registered for LH non-extended version

Taught with

  • 06-02552 - Principles of Programming Languages

Teaching methods

Large Group Lectures and Tutorials

Contact Hours:



Sessional: 1.5 hr Examination (70%) Continuous Assessment (20%) Continuous Assessment - Report (10%)

Supplementary (where allowed): 1.5 hr Examination (90%) with the continuous assessment - report repeated (10%).

Detailed Syllabus


Programmes containing this module