[an error occurred while processing this directive]

Concurrent Object-Oriented Programming

Bertrand Meyerand Arnaud Bailly, Summer semester 2004

Announcements Description Schedule Grading Textbooks Slides Contacts


2 April 2004:

  • Register to the course: Please send an email
    To: concur-course@se.inf.ethz.ch
    Subject: Concurrency Course Participant
    • Your name
    • Preferred email address
    • Status: Diplom student (what semester), Ph.D. student, other.
    • Taking the course for credit or not.
    • Attach a picture (JPEG, GIF, PNG) if you wish.

Title and Code

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


This course will survey the multifarious proposals that employ object-oriented languages and technologies for concurrent and distributed programming. Both theoretical and practical aspects will be explored, with an emphasis on language-related issues, such as the comparison of programming primitives, and the study of means employed to reason about programs (like type systems, for example). After an exhaustive overview, we will provide a detailed description of the SCOOP model for object-oriented concurrent programming.


The course assumes good knowledge of object-oriented principles and 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.
  • One specific technology: the SCOOP model, as implemented in Eiffel over .NET.


  • Language primitives and platforms for concurrent, parallel, and distributed programming.
  • Object-oriented languages with concurrent and distributed features, from Java to Ada, Eiffel and Oberon.
  • Process algebras, like CSP, CCS, the pi-calculus and the ambient calculus.
  • Formal representations and properties of distributed objects.
  • Temporal logics.
  • Proving safety (invariants) and liveness (progress) properties.
  • Types and inheritance for distributed objects.
  • Design by Contract and compositional proofs.
  • Fault tolerance and distributed garbage collection.

Companion Seminar

Topics in Concurrency, 251-0270-00, Wednesday 16.00 - 17.00 IFW D42.


Weekly schedule

  • Tuesday 13.00 - 14.00, RZ F21 for Exercises.
  • Tuesday 14.00 - 16.00, RZ F21 for Lectures.

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

Lectures (Tentative)

Tuesday 30 March Introduction; Essential definitions and overview of programming paradigms. Slides in pdf 1up, 3up, 6up, ppt.
Tuesday 6 April Language primitives for task creation and communication. Slides in pdf 1up, 3up, 6up, ppt.
Tuesday 13 April A SCOOP primer. Slides in pdf 1up, 3up, 6up, ppt.
Tuesday 20 April Synchronization in concurrent O-O programs. Slides in pdf 1up, 3up, 6up, ppt.
Tuesday 27 April Inheritance anomaly in concurrent objects. Slides in pdf 1up, 3up, 6up, ppt.
Tuesday 4 May Turorial on formal models: the Lambda-Calculus (beginning).
Tuesday 11 May CCS principles and tutorial on formal models (end). Slides in pdf 1up, 3up, 6up ppt, .
Tuesday 18 May Modeling in the Pi-Calculus (beginning).
Tuesday 25 May Tools for the Project and Modeling in the Pi-Calculus (end). Slides in pdf 1up, 3up, 6up, ppt.
Tuesday 1 June Encodings of concurrent and distributed objects in the Pi-Calculus.
Tuesday 8 June SCOOP 1 .
Tuesday 15 June SCOOP 2 (see slide of lecture SCOOP 1).
Tuesday 22 June Introduction to embedded and real-time systems.
Tuesday 29 June Advanced topics and project review.

Exercises (Tentative)

Tuesday 30 March No session this week.
Tuesday 6 April The design phase of distributed applications. Topic
Tuesday 13 April Enforcing data consistency using message-passing primitives. Topic, Solution
Tuesday 20 April Debugging of DSM and implementation of a termination algorithm. Topic, software, solution.
Tuesday 27 April Writing examples relying on variable-sharing and synchronization in Ada 95.
Tuesday 4 May Requeuing in Ada 95. Topic and solution of both Ada95 exercises.
Tuesday 11 May CCS and principles of operational semantics. Topic
Tuesday 18 May Encoding of objects in the Lambda-Calculus. Topic
Tuesday 25 May Tools for the project.
Tuesday 1 June Tools for the project (end).
Tuesday 8 June Encodings and reductions in the pi-calculus.
Tuesday 15 June Encodings and reductions in the pi-calculus.
Tuesday 22 June Proofs of concurrent objects configurations.
Tuesday 29 June Review of projects.


Important : No "Testat" is delivered or "mündliche Prüfung" provided for this course. The only way to get a grade is to take the exam and the project. This applies regardless of your department or status.

  • 60% Project: development of a graphical matrix multiplication application using SCOOP (Project description).
  • 40% Exam. The exam will be done during the prüfungsession in late September/early October. The precise time and place will be announced with the other exam dates of the session around the middle of July.

Textbooks (Recommended)

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

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

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

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

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 professors and assistants. Do not use their personal addresses or your message may be missed.
  • Contact assistant for the course: Volkan Arslan (http://se.inf.ethz.ch/people/arslan, Office: RZ-J3)
  • Webmaster: arnaud.bailly (also at...) se.inf.ethz.ch.