Home Admissions Students Careers Research Business People Help
Text size A A A A A

| 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 Computer Science 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 COMP1008.
Classes, inheritance, inner classes.
Program developmentGUI's with Swing.
Using 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:
  • 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

Dr Bryson's Lecture notes

This page last modified: 26 May, 2010 by Nicola Alexander

Computer Science Department - University College London - Gower Street - London - WC1E 6BT - Telephone: +44 (0)20 7679 7214 - Copyright © 1999-2007 UCL


Search by Google
Link to UCL home page