Computer Laboratory Home Page Search A-Z Directory Help
University of Cambridge Home Computer Laboratory
Computer Science Syllabus - Concurrent Systems and Applications
Computer Laboratory > Computer Science Syllabus - Concurrent Systems and Applications

Concurrent Systems and Applications next up previous contents
Next: Data Structures and Algorithms Up: Michaelmas Term 2005: Part Previous: Computer Design   Contents

Concurrent Systems and Applications

Lecturer: Dr J.K. Fawcett

No. of lectures: 24

Prerequisite courses: Programming in Java, Operating Systems I

This course is a prerequisite for Operating Systems II (given concurrently), Distributed Systems (Part II), Advanced Systems Topics (Part II).


The aims of this course are (a) to introduce the modular design of application software, using the facilities of the Java programming language as running examples, (b) to explore the need for and implementation of concurrency control and communication in inter-process and intra-process contexts and (c) to introduce the concept of transactions and their implementation and uses.


  • Programming with objects. Revision overview of the Java programming language. Structuring programs using encapsulation and inheritance. Design patterns. [4 lectures]

  • Further Java topics. Graphical user interfaces. Reflection and serialization. Finalizers. Class loaders. Software Testing. [8 lectures]

  • Concurrent systems. Reasons for multi-threaded programming. Correctness criteria. Mutual exclusion locks and condition variables. Alternative concurrency-control primitives. [5 lectures]

  • Distributed systems & transactions. General problems in distributed systems. Naming. Access control. IDLs. Message passing and the use of sockets in Java. Remote method invocation. Compound operations & correctness criteria. Crash recovery. Isolation. [5 lectures]

  • Generics in Java. Single-compilation templated classes. Type specialisation and typing constraints. Interactions with reflection, serialisation, and the class loader. Advanced implementation techniques using Generics. [2 lectures]


At the end of the course students should

  • understand the terminology of object oriented programming and be able to use it with precision

  • be able to illustrate the use of object oriented techniques through examples of the kind seen in the Java standard libraries

  • understand the need for and implementation of concurrency control

  • understand different mechanisms for communication within or between applications and evaluate their trade-offs in different scenarios

  • understand the concept of transactions and their application in a range of systems

  • understand why software testing is not always easy and the techniques used to achieve thorough testing

Recommended reading

* Bacon, J. & Harris, T. (2003). Operating systems or Bacon, J. (1997) Concurrent systems (2nd ed.). Addison-Wesley.
Myers, G.J. (2004). The art of software testing. Wiley (2nd ed.).
Lea, D. (1999). Concurrent programming in Java. Addison-Wesley (2nd ed.).
Bracha, G., Gosling, J., Joy, B. & Steele, G. (2000). The Java language specification. Addison-Wesley (2nd ed.).
Gamma, E., Helm, R., Johnson, R. & Vlissides, J. (1994). Design patterns. Addison-Wesley.

next up previous contents
Next: Data Structures and Algorithms Up: Michaelmas Term 2005: Part Previous: Computer Design   Contents
Christine Northeast
Sun Sep 11 15:46:50 BST 2005