How to Design Programs

How to Design Programs

"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, 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 startsfrom "atomic" forms of data and then progresses to "compound" forms ofdata, including data that can be arbitrarily large. For each kind of datadefinition, the book explains how to organize the program in principle, thusenabling a programmer who encounters a new form of data to still construct aprogram 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 DrScheme, 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* [ [http://www.ccs.neu.edu/scheme/pubs/jfp2004-fffk.pdf The Structure and Interpretation of the Computer Science Curriculum] , a paper in which the authors compare and contrast HtDP with SICP] , 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.

References

External links

* [http://www.htdp.org Official site of HtDP] , including full text


Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Look at other dictionaries:

  • Design methods — is a broad area that focuses on: Divergence – Exploring possibilities and constraints of inherited situations by applying critical thinking through qualitative and quantitative research methods to create new understanding (problem space) toward… …   Wikipedia

  • Design thinking — refers to the methods and processes for investigating ill defined problems, acquiring information, analyzing knowledge, and positing solutions in the design and planning fields. As a style of thinking, it is generally considered the ability to… …   Wikipedia

  • Design management — is the business side of design. Design managers need to speak the language of the business and the language of design …   Wikipedia

  • Design U — Genre Design Created by Tim Alp Starring Maureen Ross Neilson, Ernst Hupel, Melanie Martin, Baron Bryant, Christina Maureen Rice, William Mood, Blair Varden, Penny Southam, Ramón Robleto, Tyler Hamilton, Jeff Palmer, Lucie Soulard Theme music… …   Wikipedia

  • Design by contract — (DbC) or Programming by Contract is an approach to designing computer software. It prescribes that software designers should define formal, precise and verifiable interface specifications for software components, which extend the ordinary… …   Wikipedia

  • Design Academy Eindhoven — Established 1947 Location Eindhoven, Netherlands Website http://www.designacademy.nl/ Design Academy Eindhoven is a school for industrial design in …   Wikipedia

  • Design for testing — Design for Test (aka Design for Testability or DFT ) is a name for design techniques that add certain testability features to a microelectronic hardware product design. The premise of the added features is that they make it easier to develop and… …   Wikipedia

  • Design For Test — (aka Design for Testability or DFT ) is a name for design techniques that add certain testability features to a microelectronic hardware product design. The premise of the added features is that they make it easier to develop and apply… …   Wikipedia

  • Design on a Dime — Genre Reality, Home improvement Country of origin United States Language(s) English Production Running time 30 minutes …   Wikipedia

  • Structure and Interpretation of Computer Programs — ( SICP ) is a textbook published in 1985 about general computer programming concepts from MIT Press written by Massachusetts Institute of Technology professors Harold Abelson and Gerald Jay Sussman, with Julie Sussman. It has been used as the… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”