How to Design Programs
Encyclopedia
How to Design Programs 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.
Matthias Felleisen
Matthias Felleisen is a computer science professor and an author of German background.Felleisen is currently a Trustee Professor in the College of Computer and Information Science at Northeastern University in Boston, Massachusetts. In the past he has taught at Rice University after receiving his...
, Robert Bruce Findler
Robert Bruce Findler
Robert Bruce Findler, colloquially known as "Robby", is a computer scientist, currently teaching at the Northwestern University. He is also a member of the PLT group and, as such, responsible for the creation and maintenance of DrRacket. In addition to DrRacket, Findler has contributed numerous...
, Matthew Flatt
Matthew Flatt
Matthew Flatt is a computer scientist, currently teaching at the University of Utah . He is also a member of the PLT group and, as such, responsible for the creation and maintenance of Racket....
and Shriram Krishnamurthi
Shriram Krishnamurthi
Shriram Krishnamurthi is a computer scientist, currently teaching at Brown University . He is also a member of the PLT group and, as such, responsible for the creation of several software packages in Racket, including the Debugger, the FrTime package, and the networking library.Krishnamurthi...
on the systematic design of computer programs published in 2001 by MIT Press
MIT Press
The MIT Press is a university press affiliated with the Massachusetts Institute of Technology in Cambridge, Massachusetts .-History:...
. 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
Data
The term data refers to qualitative or quantitative attributes of a variable or set of variables. Data are typically the results of measurements and can be the basis of graphs, images, or observations of a set of variables. Data are often viewed as the lowest level of abstraction from which...
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
Structure and Interpretation of Computer Programs
Structure and Interpretation of Computer Programs is a textbook published in 1984 about general computer programming concepts from MIT Press written by Massachusetts Institute of Technology professors Harold Abelson and Gerald Jay Sussman, with Julie Sussman...
(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 Structure and Interpretation of the Computer Science Curriculum
The Structure and Interpretation of the Computer Science Curriculum is a monograph published in 2004 by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt and Shriram Krishnamurthi comparing and contrasting the pedagogical focus of How to Design Programs with that of Structure and...
, 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.