Concurrency: State Models and Design Patterns (CP)

dining.png

Course: W6088 (Autumn Semester 2010)
Lecturer:Prof. Oscar Nierstrasz
Assistants:Fabrizio Perin, Jorge Ressia
Lecture:Wednesday, 10h15 - 12h00
Exercises:Wednesday, 12h00 - 12h45
Place:Engehaldenstrasse 8, 003
Start:2010-09-22
Repetition:Autumn 2012 — Wednesdays at 10h15-12h00

ATTENTION

All the students that want to attend the course MUST be register at the ILIAS page. STRICT DEADLINE BEFORE OCTOBER 1st!!!

Description

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

Course Schedule (tentative)

Powerpoint slides are here

Exercises rules are here

1 22/Sep/10 Introduction (exercises)
2 29/Sep/10 Java and Concurrency (exercises)
3 6/Oct/10 Safety and Synchronization (exercises)
4 13/Oct/10 Safety Patterns (exercises)
5 20/Oct/10 Liveness and Guarded Methods (exercises)
6 27/Oct/10 Lab session (ExWi Pool)
7 3/Nov/10 Liveness and Asynchrony (exercises)
8 10/Nov/10 Condition Objects (exercises)
9 17/Nov/10 Fairness and Optimism (exercises)
10 24/Nov/10 Petri Nets (exercises)
11 1/Dec/10 Lab session (ExWi Pool) (exercises)
12 8/Dec/10 Architectural Styles for Concurrency (exercises)
13 15/Dec/10 Introduction to Parallel Programming
14 22/Dec/10 Final exam
Last changed by admin on 21 April 2009