How to Produce the Best Object-Oriented Programmers:
By Teaching Program Design from the Beginning

Matthias Felleisen

Current introductory curricula focus on the mechanical aspects of programming. That typically means the details of syntax, the use of libraries, and possibly some algorithmic concepts. Furthermore, these courses rely on complex, professional programming environments instead of tools that are made for, and grow with, beginners.

Rice's TeachScheme! project aims to renovate and expand the computing curriculum at the introductory level. Our project combats this image of computing as a syntactic swamp through a new curriculum, a new perspective of beginner programming languages, and a matching programming environment. (1) The main focus of the curriculum is a series of program design recipes. These recipes teach students how to produce a program in a step by step fashion by focusing on classes of data from the beginning. (2) Instead of a single programming language, the first semester uses a series of small subsets of Scheme. Indeed, the beginner language is not much more than arithmetic and algebra (in prefix form) with a rich sublanguage of data. The intermediate language extends the beginner language and the advanced language extends the intermediate language in carefully designed ways. (3) Finally, DrScheme, our programming environment, implements this tower of languages and thus succeeds in protecting beginners from inadvertent interference from advanced portions of the language. This trio of instructional material, language tower, and programming environment frees students from details and allows them to focus on the systematic design of programs.

Over the past few years, I have trained several colleagues in the use of this curriculum as well as close to 100 teachers and professors from small colleges. We have regularly conducted observations and evaluated the situation. The results suggest that a first-year college introduction based on Scheme and Java (in the second semester) produces far better object-oriented programmers than a full year of conventional introduction to programming.

My talk will describe the essential components of the TeachScheme! project and will explain the exact results observed at Rice.


matthias@ccs.neu.edu