On Teaching How to Design Programs

Norman Ramsey

This paper presents a personal, qualitative case study of a first course using How to Design Programs and its functional teaching languages. The paper reconceptualizes the book's six-step design process as an eight-step design process ending in a new ``review and refactor'' step. It recommends specific approaches to students' difficulties with function descriptions, function templates, data examples, and other parts of the design process. It connects the process to interactive ``world programs.'' It recounts significant, informative missteps in course design and delivery. Finally, it identifies some unsolved teaching problems and some potential solutions.

Full paper

The paper is available as US Letter PDF (272K) and PDF formatted for tablets (272K).