[an error occurred while processing this directive]

Trusted Components

Bertrand Meyer, Winter semester 2003/2004

Announcements Description Schedule Grading References Slides Contacts Guest Lectures

Still available: last year's page.


February 20th, 2004

  • You can have a look at the solution for execise 1 by Sébastien Vaucouleur as a reference. I think he came up with a good design. Also his documentation was very good.

January 27th, 2004

January 25th, 2004

January 14th, 2004

  • Schedule updated

December 26th, 2003

  • Exercise 2: B Method is available.
  • Slides from the two lectures on the B Method are available at their corresponding dates.

November 25th, 2003

  • Chapter on axiomatic semantics (from Bertrand Meyer's book Introduction to the Theory of Programming Languages). Please don't reproduce because this is copyrighted material.

November 17th, 2003

  • New slides available.
  • Schedule has been updated.

October 31st, 2003

October 23rd, 2003

  • Guest lecture by "Erik Meijer" added.

October 19th, 2003

October 7th, 2003

  • Preliminary version of the course page.


Title and code

Trusted Components
Course code: 37-239
See official ETH page on this course


The prospect of component-based development is one of the greatest hopes for the advancement of software engineering. But it assumes that the components are of high enough quality. Surprisingly, no real standards exist in this area. This course will explore the techniques available to guarantee that components can be trusted.


Experience with O-O development and, preferably, a component model.


Weekly schedule

  • Monday 9.00 - 11.00, IFW C42.
  • Wednesday 10.00 - 12.00, RZ F21.

Office hours: By appointment, RZ-J6

Semester schedule (tentative)

Lect. Date Contents Slides
1 22.10.2003 Introduction, software quality, reuse   Slides 1
2 27.10.2003 Component design techniques
3 29.10.2003 Library design 1
4 03.11.2003 Library design 2: EiffelBase
5 05.11.2003 Guest lecture: Erik Meijer   Abstract
6 10.11.2003 Design by contract 1   Slides 2
7 12.11.2003 Design by contract 2
8 17.11.2003 Design by contract 3
9 19.11.2003 Guest lecture: Prof. Emil Sekerinski, Exercise discussion   Talk slides
10 24.11.2003 Design by contract 4   Slides 2
11 26.11.2003 Axiomatic semantics 1   Axiomatic Semantics Chapter
12 01.12.2003 Axiomatic semantics 2
13 03.12.2003 Reasoning about pointers and references 1   JOT Article 1, JOT Article 2
14 08.12.2003 Reasoning about pointers and references 2
15 10.12.2003 Introduction into the B language   Slides 3
16 15.12.2003 Guest lecture: Jean-Raymond Abrial   Talk slides
17 17.12.2003 Presentation of the Atelier B Workbench
Christmas Vacation
18 05.01.2004 Lecture Canceled
19 07.01.2004 Proving Algorithms in B   Slides
20 12.01.2004 Pointer Proofs / Model Based Contracts   Object Calculus, Linked Lists
21 14.01.2004 Model Based Contracts / Denotational Semantics
20 19.01.2004 Denotational Semantics
21 21.01.2004 Denotational Semantics
22 26.01.2004 Component Models   Slides 4
23 28.01.2004 Component Models
24 02.02.2004 Summary
27 04.02.2004 Exam



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 exercises. This applies regardless of your department or status.

  • There are two exercises issue that have to be solved: One is a modelling and programming exercise in Eiffel, the other is a modelling, programming and proving exercise in B. There are no groups, everybody has to solve each exercises by him-/herself.
  • There is a final exam in the last lecture. The exam will take the full 90 minutes of the lecture and will contain questions related to the content of the lecture and to the exercises.
  • The final grade is calculated as follows: 30% from the grading of each exercise solution, 40% from the grading of the exam.

References and Literature

  • Clemens Szyperski: Component Software, Addison-Wesley, 1998.
  • Bertrand Meyer: Object-Oriented Software Construction, second edition, Prentice Hall, 1997.
  • Bertrand Meyer: Introduction to the Theory of Programming Languages, Prentice-Hall, 1990.
  • Jean-Raymond Abrial: The B-Book, Cambridge University Press, 1996.
  • Martin Abadi, Luca Cardelli: A Theory of Objects, Springer-Verlag, 1996.


Contact assistant for the course: Bernd Schoeller (http://se.inf.ethz.ch/people/schoeller, Office: RZ-J22)

Guest Lectures

Erik Meijer: Programming with Rectangles, Triangles, and Circles
Microsoft Research


We will argue that by properly generalizing the type system and expression syntax, it is possible for any modern object oriented language to provide first class support for manipulating both relational and hierarchical data in a sound and statically typed manner. The type system extensions, however, are not based on XML Schemas. We show that XSDs and the XML data model do not fit well with the class-based nominal type system and object graph representation of our target languages. Instead we propose to extend object-oriented type system with new structural types that model XSD sequences, choices, and all-groups. We demonstrate our language and type system by translating a selection of the XQuery use cases.

About the lecturer:

You might know me as the "Head In The Box" from the wildly popular VBTV show, as "Professor ILDasm" from a series that never went beyond the first pilot episode, but my real job is technical lead in the WebData group at Microsoft. Prior to joining Microsoft I was an associate professor at Utrecht University and adjunct professor at the Oregon Graduate Institute in Portland. I am one of the proud designers of the standard lazy functional programming language Haskell98.

My holy grail is to hide complicated mechanisms behind simple abstractions. Programming languages are an ideal medium to achieve this, and I am continuously looking for widely used APIs and often occurring programming pattern boilerplate to promote into first class language features. Currently my targets are XML and SQL, and asynchronous programming. By providing deep language support for these concepts, it hopefully becomes easier to program distributed three-tier applications.

I maintain a blog at http://blogs.gotdotnet.com/emeijer/.