[an error occurred while processing this directive]
 

Object-Oriented Software Construction

Bertrand Meyer, Summer semester 2004

Announcements Description Schedule Grading Textbooks Readings Slides Project Contacts

Still available: last year's page.

Announcements

22 June 2004

  • The final exam will be held June 30th in the 1 hour Wednesday session. Feel free to view last years exam.

18 June 2004

  • There will be no course on Monday. Please use this time for your projects.
  • Wendesday there will be a presentation on Object-Oriented Concurrency by Piotr Nienaltowski. The presentation can be found here.

16 June 2004

14 June 2004

26 May 2004

17 May 2004

  • Added some links to Eiffel.Net references after the Projects section.

10 May 2004

03 May 2004

22 April 2004

14 April 2004

07 April 2004

  • The project description has been put online.

05 April 2004

17 February 2004

  • Register to the course: Please send an email
    To: oosc-course@se.inf.ethz.ch
    Subject: OOSC Course Participant
    Content:
    • 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.

Description

Title and code

Object-Oriented Software Construction
Course code: 0250
See official ETH page on this course

Scope

This course will explore a number of issues, both practical and theoretical, raised by object technology, especially when applied to large, ambitious, long-running projects with high quality requirements.

Prerequisites

Some practice of object-oriented development and knowledge of an object-oriented language and basic design patterns. Attendance of the winter semester course 251-0239-00 Trusted Components is desirable.

Objectives

The goal is to provide students with solid knowledge of:

  • Object technology principles and methods
  • The practice of object-oriented analysis, design and implementation
  • Some open issues
  • Some recent developments
  • Two specific technologies: Eiffel and .NET

Topics

  • Review of elementary and advanced object-oriented mechanisms.
  • Theoretical basis: abstract data types.
  • Techniques and principles for producing reusable components and high-quality object-oriented software. Reuse issues.
  • Concurrent object-oriented development: issues, constraints, existing proposals, implementations, SCOOP model.
  • Typing issues. Covariance and catcalls. Language design for flexible typing.
  • Encapsulating behaviours along with data.
  • High-level system structuring. Role of graphical formalisms. Seamless and reversible development.
  • Metrics of object-oriented development.
  • Object-oriented project management. Lifecycle issues; the cluster model, seamlessness, reversibility.
  • From design patterns to reusable components.

Schedule

Weekly schedule

  • Monday 9.00 - 11.00, RZ F21.
  • Wednesday 13.00 - 14.00, RZ F21.

Office hours: By appointment. RZ-J22.

Semester schedule (tentative)

Monday 29 March Lecture 1: Introduction, Quality issues, Software lifecycle
Wednesday 31 March Lecture 2: EiffelStudio and Project presentation
Monday 5 April Lecture 3: Modularity, Reusability
Wednesday 7 April Lecture 4: Abstract Data Types
Monday 12 April No lecture (Ostermontag)
Wednesday 14 April Lecture 5: Objects
Monday 19 April Lecture 6: Genericity
Wednesday 21 April Lecture 7: Inheritance
Monday 26 April Lecture 8: Inheritance (continued)
Wednesday 28 April Lecture 9: Design by Contract
Monday 3 May Lecture 10: Design by Contract
Wednesday 5 May Lecture 11: Design by Contract (by Joseph Ruskiewicz)
Monday 10 May Lecture 12: Object Persistence
Wednesday 12 May Lecture 13: Advanced inheritance mechanisms
Monday 17 May Lecture 14: Design principles
Wednesday 19 May Lecture 15: Design principles
Monday 24 May Lecture 16: A design example
Wednesday 26 May Lecture 17: O-O design: a collective exercise
Monday 31 May No lecture (Pfingstmontag)
Wednesday 2 June Lecture 18: From design patterns to components
Monday 7 June Lecture 19: O-O design: a collective exercise, Agents and event-driven design
Wednesday 9 June Lecture 20: Concurrency and real-time systems
Monday 14 June Lecture 21: Typing issues, covariance
Wednesday 16 June Lecture 22: Typing issues, covariance (continued)
Monday 21 June Lecture 23: Agents and event-driven development (continued)
Wednesday 23 June Lecture 24: Exception handling
Monday 28 June Open
Wednesday 30 June Final Exam

Grading

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.

Textbook

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

Recommended:
Erich Gamma et al.: Design Patterns. Addison-Wesley, 1995.

Readings

Bertrand Meyer: The power of abstraction, reuse and simplicity: An object-oriented library for event-driven design . Springer-Verlag, Lecture Notes in Computer Science, 2003.

David L. Parnas: On the Criteria To Be Used in Decomposing Systems into Modules. Communications of the ACM, 1972.

C.A. R. Hoare: An Axiomatic Basis for Computer Programming. Communications of the ACM, 1969.

IEEE Std 1063: IEEE Standard for User Documentation

IEEE Std 1233: IEEE Guide for Developing System Requirements Specifications

IEEE Std 830: IEEE Recommended Practice for Software Requirements Specifications

Slides

All links are to documents (PDF by default).

Lecture 1: Introduction, Quality issues, Software lifecycle (also PowerPoint)
Lecture 2: EiffelStudio and project presentation (also PowerPoint)
Lecture 3: Modularity, Reusability (also PowerPoint)
Lecture 4: Abstract Data Types (also PowerPoint)
Lecture 5: Objects (also PowerPoint)
Lecture 6: Genericity (also PowerPoint)
Lecture 7: Inheritance (also PowerPoint)
Lecture 8: Inheritance (cont'd) (also PowerPoint)
Lecture 9: Design by Contract (also PowerPoint)
Lecture 10: Design by Contract (cont'd) (also PowerPoint)
Lecture 11: Design by Contract (cont'd) (also PowerPoint)
Lecture 12: Object Persistence (also PowerPoint)
Lecture 13: Advanced inheritance mechanisms (also PowerPoint)
Lecture 14: Design principles (also PowerPoint)
Lecture 15: Design principles (cont'd) (also PowerPoint)
Lecture 16: A design example (also PowerPoint)
Lecture 17: O-O design: a collective exercise (Download the resulting application)
Lecture 18: From design patterns to components (also PowerPoint)
Lecture 19: Agents and event-driven programming (also PowerPoint)
Lecture 20: Concurrency and real-time systems (also PowerPoint)
Concurrent O-O principles (also PowerPoint)
Concurrent O-O principles (cont'd) (also PowerPoint)
Lectures 21 and 22: Typing issues, covariance (also PowerPoint)
Typing issues, covariance (also PowerPoint)
Typing issues, covariance (cont'd) (also PowerPoint)
Lecture 23: Agents and event-driven programming (cont'd) (also PowerPoint)
Lecture 24: Exception handling (also PowerPoint)
Exception handling, Design by Contract outside of Eiffel (also PowerPoint)

Project Specification

Object-Oriented Requirements Annotator

Project Links

Full Eiffel on the .NET Framework

First Eiffel .NET Program

Introduction to Eiffel.net

Contacts

  • Send all email relative to this course to this address. It will reach the professor and assistants. Do not use their personal addresses or your message may be missed.
  • Contact assistant for the course: Joseph Ruskiewicz (http://se.inf.ethz.ch/people/ruskiewicz, Office: RZ-F22)
  • Webmaster: Click here.