[an error occurred while processing this directive]

Concurrent Object-Oriented Programming

Bertrand Meyer and Patrick Eugster, summer semester 2005

Announcements Description Schedule Grading Textbooks Contacts


14 June 2005: Project topic has changed. No GUI is required anymore! Check this out!.

7 June 2005: No lecture today. We will have a two-hour exercise session instead. The scoop2scoopli tool will be presented.

6 May 2005: The solution of the Santa Claus problem by Giovanni Azua is available online.

27 April 2005: Read the introduction to EiffelStudio.

26 April 2005: See papers on the Santa Claus problem and its solutions: in Java and in Polyphonic C#

25 April 2005: Exercise sheet for exercise 2 is available online.

25 April 2005: Mutex/monitor examples from exercises can be found here.

25 April 2005: Slides for Lecture 3 are available online.

22 April 2005: There will be one hour of lecture on 26 April (it will start at 13:15), followed by two hours of exercises.

22 April 2005: In the concurrency seminar on 26 April (16:15, IFW C42) Klaus Havelund will present his work on "Monitoring programs with Eagle".

12 April 2005: the exercise session is replaced by an additional hour of lecture.

5 April 2005: ROOM CHANGE - all lectures and exercise sessions (until the end of the semester) will be taking place in IFW E42.

4 April 2005: no exercise session on April 5.

17 March 2005:

  • Register for the course: Please send an email
    To: concur-course (at) se.inf.ethz.ch
    Subject: Concurrency Course Participant
    • Your name.
    • Preferred email address.
    • Status: Diploma/Master student (what semester), PhD student, other.
    • Taking the course for credit or not. 


Title and Code

Concurrent Object-Oriented Programming
Course code: 251-0268-00


Object technology has interesting potential applications to concurrency, distribution, real-time and Web Services. In practice, a number of obstacles have prevented O-O techniques from repeating in the concurrent world the success they have now achieved in the sequential word. This course explores the connections between the object-oriented and concurrent programming paradigms, discussing the problems that arise in the process of attempting to merge them. It reviews the main existing approaches to concurrent O-O computation, including both widely used libraries for multi-threading in Java and .NET and more theoretical frameworks, with a particular emphasis on the SCOOP model. It also provides some of the formal background for discussing the correctness of concurrent O-O applicatons.



  • Concurrent and parallel programming
  • Distributed programming
  • Client-server programming
  • Internet, Web Services
  • Specific issues of embedded and real-time concurrency

Approaches to concurrent programming

  • Notion of process, thread and application domain
  • Message passing versus variable sharing
  • Data consistency issues
  • Enforcing synchronization: semaphores, monitors, barriers, etc.
  • Java and .NET multithreading

Formal models of concurrency

  • Computation versus observation
  • Interesting properties of concurrent programs
  • Concurrent calculi: CSP, Pi-calculus, ...

Concurrency and Object-Orientation

  • Language issues
  • Processes versus objects
  • Synchronizing objects

The SCOOP model

  • Processors; handling an object
  • Synchronous and asynchronous feature calls
  • Design by Contract in a concurrent context
  • Separate objects and entities
  • Accessing separate objects; validity rules 
  • Synchronization: waiting, reserving, preconditions as wait conditions, Wait by Necessity
  • Deadlock avoidance
  • Interrupting a reservation: duels and priorities
  • Mapping the processors to physical resources
  • Examples and applications

Extensions and open problems

  • Real-time and embedded extensions
  • Timing contracts
  • Proofs of SCOOP programs


The course assumes good knowledge of object-oriented principles and programming techniques. Experience with Eiffel and with concurrent programming is helpful but not required.


The goal is to provide students with solid knowledge of:

  • State-of-the-art concurrent programming models, languages, and platforms.
  • Foundations for reasoning about concurrent and distributed programs.
  • Approaches blending object-orientation, distribution, and concurrency.
  • Designing applications with concurrent objects.
  • Some open issues, like applications to embedded and real-time systems.
  • Specific technology:  SCOOP.


The course is split into two major parts:

  • COOP: a bottom-up, more historical, perspective on concurrent programming. Illustrations are thus made in various programming languages, though Java will be the main focus (Patrick).
  • SCOOP: concurrent programming with SCOOP. This will part will take a more top-down approach by illustrating issues related to concurrency through the SCOOP model (Bertrand).

Companion Seminar

Topics in Concurrency, 251-0270-00, Tuesday 16.15 - 17.00 IFW C42.


Weekly schedule

  • Exercise: Tuesday 13.15 - 14.00, IFW E42
  • Lecture:  Tuesday 14.15 - 16.00, IFW E42 

Office hours: Thursday 14.15-16.00, or by appointment, RZ J3

Lectures (Tentative)

Tuesday 29 March


Tuesday 5 April SCOOP: introduction.
Tuesday 12 April COOP: foundations of concurrency - tasks, threads, preemption, scheduling, concurrency, parallelism, distribution.
Tuesday 19 April COOP: basic concurrency mechanisms - mutex, semaphore, monitor.
Tuesday 26 April COOP: basic concurrency mechanisms - rendez-vous, protected objects.
Tuesday 3 May COOP: concurrency and objects - active objects, inheritance anomaly, aspect-oriented programming.
Tuesday 10 May SCOOP: computational model - synchronous and asynchronous feature calls, synchronisation.
Tuesday 17 May SCOOP: traitors, validity rules.
Tuesday 24 May SCOOP: type system.
Tuesday 31 May COOP: foundations of distribution - system and failure models, impossibilities.
Tuesday 7 June No lecture this week - we will have a two-hour exercise session on SCOOP tools.
Tuesday 14 June SCOOP: advanced OO mechanisms. Deadlocks and how to prevent them.
Tuesday 21 June COOP: basic distribution mechanisms - replication, transactions.
Tuesday 28 June Exam.

Exercises (Tentative)

Tuesday 29 March No session this week.
Tuesday 5 April No session this week.
Tuesday 12 April No session this week (3 hours class).
Tuesday 19 April

Synchronisation mechanisms in Java. Examples: producer-consumer, dining philosophers. Exercise sheet 

Tuesday 26 April Synchronisation mechanisms in Java. Santa Claus. Exercise sheet 
Tuesday 3 May Synchronisation mechanisms. Rendez-vous. Exercise sheet 
Tuesday 10 May No session this week.
Tuesday 17 May Inheritance anomalies and aspect-oriented programming. Exercise sheet 
Tuesday 24 May Introduction to EiffelStudio. Final project - announcement.
Tuesday 31 May Final project: introduction to Vision2 GUI library. An EiffelVision2 example
Tuesday 7 June

SCOOP tools and how to use them. SCOOP examples. Download scoop2scoopli tool, SCOOPLI library, and examples that we are going to use in the exercise. 

Tuesday 14 June SCOOP tools and examples. Final project - Q&A
Tuesday 21 June SCOOP examples. Final project - Q&A
Tuesday 28 June


Important : No Testat is delivered for the course. The only way to get a grade is to take the written exam and submit the project. This applies regardless of your department or status.

  • 65% Project: development of a concurrent application using SCOOP (project description will be announced on 24 May).
  • 35% Exam: all presented topics excluding SCOOP. The exam will be held during in the last lecture on June 28.


Gul Agha, Peter Wegner, Akinori Yonezawa (Editors): Research Directions in Concurrent Object-Oriented Programming. MIT Press, 1993.

Gregory R. Andrews:Foundations of Multithreaded, Parallel, and Distributed Programming. Pearson Addison Wesley, 1999.

Mordechai Ben-Ari: Principles of Concurrent and Distributed Programming. Prentice Hall, 1990.

Howard Bowman and John Derrick (Editors): Formal methods for distributed processing: a survey of object-oriented approaches. Cambridge University Press, 2001.

Bertrand Meyer: Object Oriented Software Construction, second edition, Chapter 30, Prentice Hall, 1997.


  • Send all email relative to this course to concur-course (at) se.inf.ethz.ch. It will reach the professor and the assistants. Do not use their personal addresses.
  • Contact assistant for the course: Piotr Nienaltowski (http://se.inf.ethz.ch/people/nienaltowski, office RZ J3)


Last modified: 07.06.2005 by Piotr Nienaltowski