CP: Concurrency: State Models and Design Patterns


Course: 21052 (Autumn Semester 2012)
Lecturer:Prof. Oscar Nierstrasz, Mircea F. Lungu
Assistants:Jorge Ressia, Jan Kurš
Lecture:Wednesday, 10h15 - 12h00
Exercises:Wednesday, 12h00 - 12h45
Place:Engehaldenstrasse 8, 001
Repetition:Autumn 2015


Students students taking this course for credit must register with Academia by Oct 12, 2012. Those who are not BeNeFri Joint Masters students (eg Bachelors students, Erasmus students) must apply for access to Academia to register by Sept 27, 2012.


This course provides an introduction to concurrent programming with Java. The course focuses on fundamental concepts important for developing correctly functioning concurrent programs, such as safety, liveness and fairness, and on standard programming patterns and techniques for dealing with these issues. The course will include two lab sessions (replacing the regular lecture hours) in which students will work in small groups to apply the techniques presented.

Much of the practical material in this lecture will be based on: Doug Lea, Concurrent Programming in Java: Design Principles and Patterns, Addison-Wesley, 1999. The theoretical foundations will be based on: Jeff Magee and Jeffrey Kramer, Concurrency: State Models & Java Programs, John Wiley, 1999.

Learning Outcomes

On successful completion of this course, you will be able to:

  • Reason about safety, liveness and fairness in concurrent programs
  • Use model-checking tools to prove safety and liveness properties
  • Use synchronization mechanisms to guarantee thread safety in programs
  • Reason about communication mechanisms to manage threads
  • Use practical techniques to avoid deadlock and ensure liveness
  • Reason about architectural styles to avoid concurrency issues


The final grade in the course will be based 20% on exercises and 80% on the final exam.

Course Schedule

  • Exercises rules are here
1 19/Sep/12 Introduction Assignment1
2 26/Sep/12 Java and Concurrency Assignment2
3 3/Oct/12 Safety and Synchronization Assignment3
4 10/Oct/12 Safety Patterns + Transactional Memory Assignment4
5 17/Oct/12 Liveness and Guarded Methods Assignment5
6 24/Oct/12 Lab session (ExWi Pool)
7 31/Oct/12 Liveness and Asynchrony Assignment7
8 7/Nov/12 Condition Objects Assignment8
9 14/Nov/12 Fairness and Optimism Assignment9
10 21/Nov/12 Lab session (ExWi Pool)
11 28/Nov/12 Petri Nets Assignment10
12 5/Dec/12 Parallelism
13 12/Dec/12 Architectural Styles for Concurrency
14 19/Dec/12 Exam
Last changed by oscar on 1 October 2014