Undergraduate study

Undergraduate 

Software Engineering (faster route) BSc/MSci

Theory of Computation (H) COMPSCI4072

  • Academic Session: 2026-27
  • School: School of Computing Science
  • Credits: 10
  • Level: Level 4 (SCQF level 10)
  • Typically Offered: Semester 2
  • Available to Visiting Students: Yes
  • Collaborative Online International Learning: No
  • Curriculum For Life: No

Short Description

This course covers the theory of sequential and concurrent computation. The main topics include the lambda calculus as a foundation for functional computation and the pi calculus as a foundation for concurrent computation; the theory of operational semantics and type systems for both these calculi.

Timetable

2 hours of lecture time and 1 hour of tutorial or practical work per week

Excluded Courses

None

Co-requisites

None

Assessment

80% for the end of year exam

20% for assessed coursework, which is will be one single assignment

 

The assessed coursework will assess ILOs 1, 4, 7 and 8 as well as touching on other ILOs.

The exam will assess ILOs 1, 2, 3, 5, 6.

Main Assessment In: April/May

Course Aims

The aim of the course is to show how these two models of computation can be formally defined in order to give a rigorous foundation for sequential and concurrent programming paradigms.

Intended Learning Outcomes of Course

By the end of this course students will be able to:

1. Express concepts such as syntax, semantics and typing rules in a formal way;

2. Evaluate expressions in lambda calculus according to the definition of the reduction relation;

3. Determine whether or not expressions in lambda calculus are typable in the simple type system;

4. Implement lambda calculus expressions in a functional language such as Haskell or ML, or the functional fragment of Python;

5. Execute pi calculus processes according to the definition of the reduction relation, and determine bisimulation relationships between processes;

6. Determine whether or not processes in pi calculus are typable in the simple type system;

7. Implement pi calculus processes in a simulation environment or in an appropriate fragment of the Go programming language;

8. Connect both the lambda calculus and the pi calculus to logic under Curry-Howard correspondences, which make the foundation for functional and concurrent programming.

Minimum Requirement for Award of Credits

No exceptions