UCL Home Page
Home Admissions Students Alumni Research Business People Help
 

 


| STUDENTS > Concurrent Programming |

Concurrent Programming

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


Code: 2007
Year:2
Prerequisites:First year programming courses.
1007 and 1008
Term: 1
Taught By: Kevin Bryson (66.6%)
Graham Roberts (33.3%)
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 ReviewReview of material covered in 1008.
Classes, inheritance, inner classes.
Program developmentUsing tools such as an IDE, Ant and version control.
The principles of test-driven development and refactoring.
Concurrent ProgramsArchitecture of concurrent systems.
Using and managing threads in Java.
Synchronisation PrimitivesMutual Exclusion in Java.
Semaphores.
Monitors and condition variables.
Java thread synchronisation, synchronised methods and synchronised statements.
Simple reasoning about correctness of Concurrent ProgramsStarvation and Deadlocks.
Liveness and Progress.
Safety.
Example systemsDistributed 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:
  • Pass the Written Examination (35% or more)
  • Obtain an overall pass mark of 35% 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

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-471-60696-0). Russel Winder and Graham Roberts. Second Edition. Wiley. 2000.

Lecture notes

 
Last updated: 17 October, 2005 Maintained by Jill Saunders