How to Design Programs
|Author||Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi|
|February 12, 2001|
|LC Class||QA76.6 .H697 2001|
How to Design Programs (HtDP) is a textbook by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt and Shriram Krishnamurthi on the systematic design of computer programs published in 2001 by MIT Press. The book introduces the concept of a design recipe, a six-step process for creating programs from the problem statement. While the book was originally used in conjunction with the TeachScheme! project (now ProgramByDesign), it has been adopted at a number of colleges and universities for the teaching of program design principles.
According to HtDP, the design process starts with a careful analysis of the problem statement with the goal of extracting a rigorous description of the kinds of data that the desired program consumes and produces. The structure of these data descriptions determines the organization of the program.
The book therefore carefully introduces more and more complex kinds of data, which sets it apart from every other introductory programming book. It starts from atomic forms of data and then progresses to compound forms of data, including data that can be arbitrarily large. For each kind of data definition, the book explains how to organize the program in principle, thus enabling a programmer who encounters a new form of data to still construct a program systematically.
Like Structure and Interpretation of Computer Programs (SICP), HtDP relies on a variant of the Scheme programming language. Indeed, it comes with its own programming environment, dubbed DrRacket, which provides a series of programming languages. The first language supports only functions, atomic data and simple structures. Each language adds expressive power to the previous one. With the exception of the largest teaching language, all languages for HtDP are functional programming languages.
In the 2004 paper The Structure and Interpretation of the Computer Science Curriculum, the authors distinguish the pedagogical focus of HtDP from that of SICP, and show how HtDP was designed as a textbook to address certain issues that some students and teachers had with SICP.
Use in Postsecondary Education
A number of Colleges and Schools have used HtDP in their classes, including the following:
- University of Chicago Chicago IL
- Suffolk County Community College (Ammerman Campus) Selden NY
- Adelphi University, Garden City NY
- University of California, Irvine, Irvine CA
- California Polytechnic State University, San Luis Obispo, CA
- Northeastern University, Boston MA
- Seton Hall University, South Orange NJ
- University of Delaware, Newark DE
- Westmont College, Santa Barbara CA
- Vassar College, Poughkeepsie NY
- Worcester Polytechnic Institute, Worcester MA
- University of Notre Dame, South Bend IN
- University of Waterloo, Waterloo Canada
- UNAM, Mexico
- Rhode Island College, Providence RI
- Pacific Union College, Angwin CA
- University of Tübingen, Tübingen Germany
- University of Freiburg, Freiburg Germany
- University of Dallas, Irving TX
- İstanbul Bilgi Üniversitesi, İstanbul Turkey
- South Carolina State University, Orangeburg SC
- Berry College, Rome GA
- Monmouth College, Monmouth IL
- Manhattanville College, Purchase NY
- University of Minnesota, Morris
- University of British Columbia
- Brown University, Providence RI
- Zefat Academic College, Israel
- University of Chile, Chile
- The Structure and Interpretation of the Computer Science Curriculum (PDF), NEU, 2004, a paper in which the authors compare and contrast HtDP with SICP.