COMP2007 - Concurrent Programming

Note: Whilst every effort is made to keep the syllabus and assessment records correct, the precise details must be checked with the lecturer(s).

Code
COMP2007
Year
2
Prerequisites
First year Computer Science programming courses.
1007 and 1008
Term
1
Taught By
Kevin Bryson (67%)
Graham Roberts (33%)
Aims
To learn about the wider application of Java, and the construction of more sophisticated programs, most notably concurrent programs and test-driven development. In terms of concurrency, to have the ability to reason about concurrent behaviour and employ appropriate concurrency control primitives in situations where there is simultaneous access to shared resources. This is a practical course, grounded in a theoretical understanding of concurrency and the problems it brings.
Learning Outcomes
To be able to: (*) describe the problems of interleaving; (*) apply a range of standard concurrency control primitives to simple concurrency problems; (*) design and implement concurrent Java programs; (*) reason informally about their correctness; (*) understand the principles of developing larger Java programs. (*) be able to unit test Java code.

Content:

Java Review
Review of material covered in COMP1008.
Classes, inheritance, inner classes.
Program development
GUI's with Swing.
Using tools such as an IDE, Ant and version control.
The principles of test-driven development and refactoring.
Concurrent Programs
Architecture of concurrent systems.
Using and managing threads in Java.
Synchronisation Primitives
Mutual Exclusion in Java.
Semaphores.
Monitors and condition variables.
Java thread synchronisation, synchronised methods and synchronised statements.
Simple reasoning about correctness of Concurrent Programs
Starvation and Deadlocks.
Liveness and Progress.
Safety.
Example systems
Distributed Systems: message passing.
Distributed Systems: rendez-vous (Java/RMI).
Database concurrency and transactions.
Two-phase commit protocol.

Method of Instruction:

Lecture presentations, and lab classes.

Assessment:

The course has the following assessment components:

  • Written Examination ( 2.5 hours, 85%)
  • Coursework Section (2 pieces, 15%)

To pass this course, students must:

  • Obtain an overall pass mark of 40% for all sections combined

The examination rubric is:
Answer 1 Question out of 2 from Part I and 2 Questions out of 3 from Part II. All questions carry equal marks.

Resources:

Concurrent Programming in Java: Design Principles and Patterns. Doug Lea. (ISBN 0-201-31009-0). Second edition published by

Addison-Wesley. 1999.

Developing Java Software (ISBN 0-470-09025-1). Russel Winder and Graham Roberts. Third Edition. Wiley. 2006.

Dr Roberts' Lecture notes