Concurrent Systems and Applications

University of Cambridge Computer Laboratory

Principal lecturer: Tim Harris (
Taken by: Part IB

Relevant past exam questions can be found from two courses: Concurrent Systems and Further Java

Slides for the course are available in three parts in postscript and PDF formats.


Question sheets are available for the first and third sections of the course. In addition to these questions, and for the second section, you may want to look at the past tripos questions from the Concurrent Systems Course -- for example 2001 P3 Q1, 2000 P4 Q1, 1999 P4 Q2, 1998 P4 Q2, 1998 P3 Q2, 1996 P3 Q1.

The remaining schedule for these sections is:

6. Tuesday 16 OctoberDesign patterns (62-74)
7. Thursday 18 OctoberReflection and serialization (75-90)
8. Saturday 20 OctoberThread creation and management (91-103)
9. Tuesday 23 OctoberThread scheduling (104-111)
10. Thursday 25 OctoberReal-time & multi-processor scheduling (112-125)
11. Saturday 27 OctoberMutual exclusion locks (126-135)
12. Tuesday 30 OctoberDeadlock, limitations of mutexes. Condition variables (136-150)
13. Thursday 1 NovemberImplementing general shared data structures (151-163)
14. Saturday 3 NovemberPrimitives for concurrency (164-175)
15. Tuesday 6 NovemberGeneral problems, naming (1-7)
16. Thursday 8 NovemberNames, protection (8-19)
17. Saturday 10 NovemberCommunication using UDP, TCP (20-28)
18. Tuesday 13 NovemberCommunication using RMI (29-38)
19. Thursday 15 NovemberRMI implementation, alternative systems (39-47)
20. Saturday 17 NovemberTransactions, persistent storage and recovery (48-59)
21. Tuesday 20 NovemberTwo-phase locking, time-stamp ordering (60-72)
22. Thursday 22 NovemberOptimistic concurrency control, Java example (73-85)
23. Saturday 24 NovemberCancelled
22. Tuesday 27 NovemberFurther Java topics (1-12)

A set of example programs is available to accompany the course. These include new ones prepared this year along with previous examples written by myself and Peter Robinson. They are available in /group/clteach/tlh20/csaa-examples and for download in tar.gz format.

The examples cover the following topics:

01.ClassesBasic definition of classes using methods, fields and constructors. Run ComplexExample
02.AbstractClassesUse of abstract classes. Run NumberExample
03.InterfacesExtension of the previous example to introduce a Sortable interface for comparing numbers. Run SortExample
04.ExceptionsAn example of exception handling. Run TableTest
05.ConsoleInputInput of words and numbers from a console-based application. Run IOExample
06.AWTA simple example of an AWT interface showing text fields and buttons. Run GUIExample
07.SwingA more complex example showing Swing, introducing a menu for changing the look and feel of the application and a sub-window showing the previous example. Run GUIExample
08.SerializationAnother AWT example, including the use of serialization to load and save the program state. Run Drawing or view Drawing.html with the appletviewer
09.ThreadsAn example that creates multiple threads and uses join to wait for them to exit. Run ThreadExample
10.WaitNotifyAnother multi-threaded example, using wait and notify to control access to shared data. Run BufferExample
11.UDPA simple UDP client-server application. See the README file
12.TCPA simple TCP client-server application. See the README file
13.RMIAn example of communication using RMI. See the information in the course slides for how to build and run this example
14.TimestampOrderingA simple system using time-stamp ordering. See the README file
15.SemaphoresAn implementation of the CountingSemaphore class used in the Primitives for concurrency section of the course. See CountingSemaphoreTest for an example of it in use
16.MutexCondvarImplementations of Mutex and Condition Variable classes based on counting semaphores. These are more complete versions than those in the slides and show how the earlier example number 10 may be re-coded using the new definitions. See BufferExample and BufferExample2

Local archives of Java documentation are maintained by the Computer Laboratory and by the Computing Service.

The emacs support files for Java are in /opt/gnu/share/emacs/site-lisp on thor, or as a tar archive.


Provisional information only
Generated at 11:07.58 on 19/9/2001