Semester 2 G52CON Concepts of Concurrency

This module introduces the basic principles of concurrent programming and their use in designing programs. The aims and objectives of the module can be found in the module description.

Outline Syllabus

The module focuses on four main themes

  1. Introduction to concurrency: what concurrency is, hardware support for concurrency, the core problems of mutual exclusion and conditional synchronisation, concurrency primitives for shared memory and distributed concurrent programming including semaphores, monitors, RPC and rendezvous
  2. Design of simple concurrent algorithms in Java: the use of threads, synchronized methods, and monitors.
  3. Correctness of concurrent algorithms: safety and liveness properties of concurrent algorithms, proving properties using assertional reasoning and model checking.
  4. Design patterns for common concurrency problems: the lectures and exercises also illustrate the use of concurrency primitives and algorithms to solve some common problems in concurrent programming, e.g., the producer-consumer problem, the readers and writers problem, client server problems etc.

Lectures

Lectures are on Tuesdays at 1pm in A25 (NBS) and Thursdays at 1pm in LT3 (CTF).

Assessment

Assessment is by means of a two hour exam and a coursework which involves writing a small concurrent program. The exam accounts for 75% of the assessment and the coursework 25%.

Coursework Description

The coursework involves writing a concurrent binary search tree. Full details can be found in the coursework description. Coursework submissions are due at 3:30pm on Friday the 14th of March.

There are three model solutions to the coursework:

Note that the third solution does not exhaust the possibilities and greater concurrency is possible.

Reading List

Recommended Reading

Further Reading You may also find the Java Tutorial useful for the material on Java.

Note that there is also a version of the reading list with links to the University Library catalogue.

Suggested Reading

Note that the following list of suggested reading is provisional, as it may necessary to change the order in which topics are presented.

Exercises

There will be a number of (unassessed) exercises covering some of the programming constructs and proof techniques introduced in the module. Model answers will be given in the lectures.

Lecture Slides

Warning: the slides are not `lecture notes': they are there to help present the material, not to act as a reference to the main points covered in the lecture. Simply reading the slides won't necessarily give you a good grasp of the syllabus. They are specifically not a substitute for taking your own notes or reading the suggested reading for the lecture.

In some cases, an abridged version of the lecture slides will be made available before the lecture. These will be replaced by the unabridged version after the lecture.

Past Papers

Past papers are available from the Examinations office. Note that for copyright reasons, past papers can only be accessed from machines connected to the local network.

You may find the feedback on the G52CON 2006/2007 and the G52CON 2007/2008 exams helpful.


Copyright © 2007 Brian Logan

This file is maintained by Brian Logan
Last modified: 15:29, 10-May-2008