![]() |
||
| To the text | Context | Principles | Reporting typos | Further reading |
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.
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:
TRAFFIC for people interested in the progress of both the software and the book.
Click here to be added to this list.
TOUCH for those who want to follow the book only.
Click here to be added to this list.
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 -- 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.
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.
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.
[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 |