[an error occurred while processing this directive]
  [an error occurred while processing this directive]

Concurrent Object-Oriented Programming

Bertrand Meyer, Volkan Arslan, summer semester 2007

Announcements Description Schedule Grading Textbooks Contacts


06.06.2007   New version of SCOOP for EiffelStudio 5.7 for Windows XP is available.
For installation please read the file Readme.txt in the root folder of the unzipped file. With this new version it is necessary to update your environment variable "Path" to include the following entry: %ISE_EIFFEL%\studio\spec\windows\bin;

05.06.2007   The exam will be held during the lecture on 12 June.

19.05.2007   New version of SCOOP for EiffelStudio 5.7 for Windows XP is available.
For installation please read the file Readme.txt in the root folder of the unzipped file. With this new version the two environment variables $EIFFEL_SRC and $SCOOPLI are not anymore necessary.

30.04.2007   No lecture and exercises on 01.05.2007

25.04.2007   New version of SCOOP for EiffelStudio 5.7 for Windows XP is available

18.04.2007   Final Project document and SCOOP project examples document are online

03.04.2007   Lecture SCOOP: overview (part 2) updated

27.03.2007   First two chapters of Dr. Piotr Nienaltowaski's thesis is available

Paper "Static Detection of Atomicity Violations in Object-Oriented Programs" of Christoph von Praun and Thomas Gross is available

21.03.2007   Please note the new location and time of the exercise sessions
Exercises: Tuesdays 12.15 - 13.00, RZ F21
20.03.2007   Register for the course: Please send an email
To: Volkan.Arslan (at) 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. 
You can install EiffelStudio 5.7 on your laptop (download it from here)


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
  • 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

  • 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.
  • 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.


Weekly schedule

  • Lecture: Tuesday 10.15 - 12.00, RZ F21
  • Exercise:  Tuesday 12.15 - 13.00, RZ F21 

Office hours: By appointment, RZ J3


Tuesday  20 March Course overview
SCOOP: overview (part 1)
Tuesday  27 March SCOOP: overview (part 2)
Tuesday  03 April SCOOP: computational model - processors, synchronous and asynchronous feature calls, synchronisation.
Tuesday  10 April COOP: foundations of concurrency - tasks, threads, preemption, scheduling, concurrency, parallelism, distribution.
Tuesday  17 April COOP: Classic Approaches to Concurrent Programming - Definition of concurrent programming, notion of process, process representation; shared variable based synchronization and communication (busy waiting, semaphores)
Tuesday  24 April COOP: Classic Approaches to Concurrent Programming - Shared variable based synchronization and communication (semaphores, conditional critical regions, monitors, protected objects, synchronized methods)
Tuesday  8 May COOP: Classic Approaches to Concurrent Programming - Message-based synchronization and communication (process synchronization, process naming, selective waiting)
Tuesday  15 May SCOOP: Traitors, validity rules, type system
Tuesday  22 May SCOOP: type system
Tuesday  29 May SCOOP: type system, expanded types, false traitors
Tuesday  05 June SCOOP: flexible locking and genericity
Tuesday  12 June SCOOP: inheritance and contracts
Tuesday  19 June SCOOP: inheritance and polymorphism, agents


Tuesday 20 March Eiffel and EiffelStudio crash course
Eiffel Hello world example
Tuesday 27 March SCOOP version of EiffelStudio 5.7 for Windows XP is available
Counter example in SCOOP
Tuesday 03 April Extended counter example in SCOOP
Tuesday 10 April Producer - Consumer example in SCOOP
Tuesday 17 April Final Project: "SCOOP project: Implementation of concurrent applications"
SCOOP project examples
Tuesday 24 April Exercise 6: Synchronisation mechanisms, threads and condition variables in EiffelThread and its solution
Race example in EiffelThread (Task 2)
Tuesday 8 May Producer-Consumer solution of Exercise 6, task 3
Tuesday 15 May Separateness Consistency rules example
Tuesday 22 May See lecture of 22 May
Tuesday 29 May See lecture of 29 May
Tuesday 05 June See lecture of 05 June
Tuesday 12 June Process example
Tuesday 05 June See lecture of 19 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
  • 35% Exam: all presented topics excluding SCOOP. No material is allowed to be used during the exam. The exam will be held during the lecture on 12 June.

Textbooks and articles

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.

Piotr Nienaltowski, Volkan Arslan, Bertrand Meyer: Concurrent object-oriented programming on .NET, IEE Proceedings Software, Special Issue on ROTOR, vol. 150, no. 5, 308-314, October 2003.

Piotr Nienaltowski, Bertrand Meyer: Contracts for concurrency, CORDIE'06, July 2006, York, UK. 

Piotr Nienaltowski: Flexible locking in SCOOP, CORDIE'06, July 2006, York, UK. 

Volkan Arslan, Bertrand Meyer: Asynchronous Exceptions in Concurrent Object-Oriented Programming, CORDIE'06, July 2006, York, UK.


  • 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: Volkan Arslan (http://se.inf.ethz.ch/people/arslan, office RZ J3)


Last modified: 19.06.2007 by Volkan Arslan