Teach scheme, reach Java: introducing object - oriented programming without drowning in syntax: tutorial presentation

Stephen Bloch, Viera K. Proulx · Journal of computing sciences in colleges · 2007

A first programming course should be about not this week's hot language, but fundamental programming concepts and practices. Yet beginning students often mistake language as the subject. How can we teach students to develop real programs without overemphasizing language? We start in a simple, consistent language: a pedagogical subset of Scheme. The IDE enforces this subset and gives level-appropriate error messages, but allows students to outgrow each successive subset. Students learn fundamental programming concepts in this sheltered environment before encountering them in the more bewildering world of Java or C++. Students learn a step-by-step design recipe for software development: a series of concrete questions, with concrete products at each stage. Test cases are developed early, as part of requirements specification. This design recipe provides not only a framework for Socratic teaching, but also a grading rubric showing that that every step matters, not only code. We emphasize data types as both concept and tool: to every data type we develop correspond a coding pattern and a testing pattern. For example, when we introduce self-referential data types, the already-learned patterns for polymorphism and fields automatically yield a safe form of recursion. For non-majors, we stop with Scheme. For CS majors, the second course is in Java; it builds on the programming concepts and methodology learned in Scheme, explicitly discussing how to apply the same concepts and design recipe. The resulting student, after a year, can approach programming problems with care (not hack until it works). This tutorial will demonstrate the design recipe on classroom problems, and how to teach the same concepts in Scheme and Java. You're all invited to a week-long summer workshop, covering in more depth the technical, classroom, and curriculum issues.

Read the paper · More papers on PaperTik