| 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 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
Dr Bryson's Lecture notes
|