Chair of Software Engineering

Introduction to Programming course
and Touch of Class textbook

Bertrand Meyer

This page is intended for people who follow the work around the new Introduction to Programming course at ETH, and the associated textbook in progress, Touch of Class.

     
To the text Context Principles Reporting typos Further reading

 1. Link to the book text and class

For the current book draft, including a change log, see http://se.ethz.ch/touch/TOUCH.pdf (> 6 MB).



Also of interest: the official course page for the students taking the latest session of the course at ETH. For the most complete information use the German version of the page.

A paper on our approach to was presented at SIGCSE 2006, see here.

Acknowledgments: for support that has proved essential to this project, we are grateful to: the ETH Rectorate's FILEP project, which supports innovative pedagogical techniques; and Microsoft, for a Curriculum Grant.



 2. Context

With my group (the Chair of Software Engineering) I am responsible for the new version of the introductory programming course at ETH. Three sessions have been taught so far and the next one will start soon.

The course uses an "outside-in" approach based on ideas discussed in a number of earlier publications (see the bibliography): Inverted Curriculum, "Progressive Opening of the Black Boxes" etc. I am writing an introductory programming textbook, Touch of Class, to support this course (follow the link above to see its current, very partial text).

The preparation of the course involves extensive work on a software project, TRAFFIC.

Since many people have expressed interest in the approach we have set up two mailing lists:



 3. Principles, library and textbook

The following sections present the essentials of our approach. For a more complete description, see "Instructor's preface" in the Touch of Class textbook.

The Inverted Curriculum and the Outside-In method

Our method relies on the use of existing software, more precisely libraries design with high quality requirements, as one of the best techniques for teaching novices.

We provide students, right from the start, with an extensive software framework, including standard Eiffel libraries as well as one written specifically for this course, TRAFFIC. We illustrate the role of abstraction through practice rather than preaching: the students' first encounter with software will be through the interface of TRAFFIC library classes, without implementation details but with contracts in full view.

By typing in just a few lines, made of calls to TRAFFIC routines, students are able to produce an impressive graphical application. It is indeed one of the benefits of the approach that, through abstraction and reuse, student exercises can right from the start yield interesting results.

During the following weeks of the course the students' role gradually changes from reuse consumer to producer, through a process of "opening up the black boxes", uncovering more and more of the implementation details.

The method develops key architectural skills, promotes quality throughout, and emphasizes the concepts of software engineering. It does not neglect the standard low-level concepts of programming, but makes sure to define their proper place in the bigger picture.

The TRAFFIC Library

The TRAFFIC library -- currently being implemented -- is central to the method, the textbook and the course.

The chosen application domain is modeling of transportation in a city, providing a rich source of graphical display and interaction, use of classical algorithms and data structures, design of new algorithms, simulations, and many exercises.

Touch of Class textbook

The textbook, to be published in early 2008, provides a full introduction to programming, and a general presentation of software entineering issues.

Throughout the book the TRAFFIC library serves as the common threads, providing many examples and an opportunity to apply algorithms, data structures and other techniques.

 4. Reporting typos and suggestions

I am most grateful to the many people who have made insightful suggestions and spotted typos in the book. To report typos or comments, please include "Touch of Class" in the Subject.

 5. A bibliography

+ [Abelson 1996] Harold Abelson and Gerald Sussman, Structure and Interpretation of Computer Programs, 2nd edition, MIT Press, 1996.

+ [Bissell 1999] Chris Bissell: Control education: time for radical change?, IEEE Control Systems Magazine, Vol. 19, October, 1999, pages 44-49.

+ [Cohen 1991] Bernard Cohen: The Inverted Curriculum, Report, National Economic Development Council, London, 1991.

+ [Guzdial 2002] Mark Guzdial and Elliot Soloway: Teaching the Nintendo Generation to Program, in Communications of the ACM, vol. 45, no. 4, April 2002, pages 17-21.

+ [Meyer 1993] Bertrand Meyer, Towards an Object-Oriented Curriculum, in Journal of Object-Oriented Programming, vol. 6, no. 2, May 1993, pages 76-81. Revised version in TOOLS 11 (Technology of Object-Oriented Languages and Systems), eds. R. Ege, M. Singh and B. Meyer, Prentice Hall, Englewood Cliffs (N.J.), 1993, pages 585-594.

+ [Meyer 1997] Bertrand Meyer, Object-Oriented Software Construction, 2nd edition, Prentice Hall, 1997, especially chapter 29, Teaching the Method.

+ [Meyer 2001] Bertrand Meyer, Software Engineering in the Academy, in Computer (IEEE), vol. 34, no. 5, May 2001, pages 28-35.

+ [Meyer 2003] Bertrand Meyer, The Outside-In method of teaching introductory programming, 2003.

+ [Mingins 1999] Christine Mingins, Jan Miller, Martin Dick, Margot Postema: How We Teach Software Engineering, in Journal of Object-Oriented Programming (JOOP), vol. 11, no. 9, 1999, pages 64-66, 74.

+ [Pedroni 2003] Michela Pedroni, Teaching introductory programming with the Inverted Curriculum Approach, Slides of mid-term presentation (diploma thesis), July 2003.

+ [Pedroni 2005] Michela Pedroni and Bertrand Meyer The Inverted Curriculum in Practice, SIGCSE 2006, Houston, 1-5 March 2006.

Page prepared with the help of Michela Pedroni.


Meyer home  -   Publications  -   Events  -  Software engineering home  -   CS home