:wave: Welcome

Welcome to the home of COMS20007: Programming Languages and Computation.

This 20cp unit introduces you to some of the fundamentals of programming languages and the theory of computation. Using mathematical techniques, we will study:

  • Syntax: how to describe what constitutes a valid program in the given programming language.
  • Semantics: how to describe how valid programs in the given language behave when executed.
  • Computability: how to show that certain functions are or are not possible to implement in the given language, or in any programming language.

This unit gives you a taster of several important topics in theoretical computer science: Programming Language Theory, Theory of Formal Languages and Computability Theory. It prepares you for courses related to the programming languages theme in your third and fourth year, especially COMS30040: Types and Lambda Calculus, COMSM0067: Advanced Topics in Programming Languages and also COMS30023: Cryptology.

:mortar_board: Academic Staff

The unit is run by Eddie Jones, Alex Kavvos and Steven Ramsay (UD).

Outside of lectures and labs, please reach out to us via the unit Team rather than by email. Feel free to ask questions about the unit material, how the units runs, or anything at all to do with programming language theory, formal language theory or computability right in the General channel. We love to hear what you are thinking!

:date: Schedule

See Course Materials for a more detailed schedule.

The unit is divided into three parts, each of which is run by one of the three lecturers.

Period Lecturer Topic
Weeks 1-4 Steven Ramsay Syntax
Weeks 5,7,8 Eddie Jones Semantics
Weeks 9-11 Alex Kavvos Computability


You should expect to spend around 12 hours per week working on this unit. Most of this time should be spent giving a serious attempt to each problem sheet and getting help when you are stuck.