Module Code : G52CON

Level : 2

Semester Available : 2

Credits : 10

Catalogue Entry

The aim of this course is to teach the basic principles of concurrent programming, using a number of different concurrent languages. Broadly speaking, a concurrent programming language is one in which programs can involve several sequential processes running at the same time and communicating with one another. Concurrent programming naturally arises in many applications including operating systems, user interfaces, and computer networks.

Pre-requisites :

G51MC1, G51PR1

Co-requisites :



The main objectives of the course are to show the basic concepts, problems, and techniques of concurrent programming, to show how to write simple concurrent programs in various languages, and to develop new problem solving skills.

Transferable Skills

The problem solving skills learned by studying concurrent programming will be useful when programming in any language. Concurrent programming itself is supported in some form by most modern computer systems, and an increasing number of applications now involve concurrency.


The course comprises fifteen lectures:

  1. Introduction;
  2. Issues in concurrency;
  3. Mutual exclusion I;
  4. Mutual exclusion II;
  5. Semaphores;
  6. Monitors;
  7. The dining philosophers;
  8. CCS I;
  9. CCS II;
  10. Semantics of concurrent programs;
  11. Tasks in Ada;
  12. Occam I;
  13. Occam II;
  14. Occam III;
  15. Summary of the course.


Dr G M Hutton

Method and frequency of class

Two lectures per week.


By written examination.