How to Design Programs: Difference between revisions

Content deleted Content added
External links: recategorize
Line 2:
{{Use mdy dates|date=July 2018}}
{{Infobox book
| name = How to Design Programs
| image = How to Design Programs (front cover).jpg
| caption =
| author = [[Matthias Felleisen]], [[Robert Bruce Findler]], [[Matthew Flatt]], [[Shriram Krishnamurthi]]
| cover_artist =
| country = United States
| subject = [[Computer programming]]
| genre = [[Textbook]]
| publisher = [[MIT Press]]
| pub_date = February 12, 2001
| media_type = print
| pages = print720
| pages isbn = 7200-262-06218-6
| isbn oclc = 0-262-06218-6
| oclc dewey =
| deweycongress = QA76.6 .H697 = 2001
| website = {{URL|htdp.org}}
| congress = 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 programsprogram]] first published in 2001 bys. [[MIT Press]]. Thepublished secondthe first edition ofin 2001, and the text,second publishededition in 2018, iswhich alsois freely available online and in print. The book introduces the concept of a ''design recipe'', a six-step process for creating programs from thea problem statement. While the book was originally used in conjunctionalong with the 'education project ''TeachScheme!''' project (nowrenamed [[ProgramByDesign]]), it has been adopted at a number ofmany colleges and universities for the teaching of program design principles.
 
According to HtDP, the design process starts with a careful analysis of thea 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.
 
TheThen, the book therefore carefully introduces moredata andforms moreof complexprogressively kindsgrowing of datacomplexity, which sets it apart from every other introductory programming book. It starts fromwith data of ''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 programming language [[Scheme (programming language)|Scheme programming language]]. It Indeed, it comes withincludes its own programming [[integrated development environment]] (IDE), dubbednamed [[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 previousprior one. WithExcept the exception offor the largest teaching language, all languages for HtDP are [[functional programming languages]] languages.
 
In the 2004 paper, [[The Structure and Interpretation of the Computer Science Curriculum]],<ref>{{Citation
| url = http://www.ccs.neu.edu/scheme/pubs/jfp2004-fffk.pdf
| title = The Structure and Interpretation of the Computer Science Curriculum
| year = 2004
| publisher = NEU
| format = [[PDF]]
| deadurl dead-url= no
| archiveurl archive-url= https://web.archive.org/web/20080511171056/http://www.ccs.neu.edu/scheme/pubs/jfp2004-fffk.pdf
| archivedate archive-date= May 11, 2008
| df =
}}, a paper in which the authors compare and contrast HtDP with SICP.</ref> the authors distinguish the pedagogicalpedagogic focus of HtDP from that of SICP, and show how HtDP was designed as a textbook to address certainsome issuesproblems that some students and teachers had with SICP.
 
== Use in postsecondary education ==
 
A number ofMany colleges and schools have used HtDP in their classes, including the following:
 
* [[University of Chicago]] , Chicago IL, United States
* [[Northwestern University]] , Evanston IL, United States
* [[Suffolk County Community College]], (Ammerman Campus) Selden NY, United States
* [[Adelphi University]], Garden City NY, United States
* [[University of California, Irvine]], Irvine CA, United States
* [[California Polytechnic State University]], San Luis Obispo, CA, United States
* [[Northeastern University]], Boston MA, United States
* [[Seton Hall University]], South Orange NJ, United States
* [[University of Delaware]], Newark DE, United States
* [[Westmont College]], Santa Barbara CA, United States
* [[Vassar College]], Poughkeepsie NY, United States
* [[Worcester Polytechnic Institute]], Worcester MA, United States
* [[University of Notre Dame]], South Bend IN, United States
* [[University of Waterloo]], Waterloo, Canada
* [[UNAMNational Autonomous University of Mexico]] (UNAM), Mexico
* [[Rhode Island College]], Providence RI, United States
* [[Pacific Union College]], Angwin CA, United States
* [[University of Tübingen]], Tübingen, Germany
* [[University of Freiburg]], Freiburg, Germany
* [[University of Dallas]], Irving TX, United States
* [[Indiana University]], Bloomington IN, United States
* [[Istanbul Bilgi University|İstanbul Bilgi Üniversitesi]], Istanbul, Turkey
* [[South Carolina State University]], Orangeburg SC, United States
* [[Berry College]], Rome GA, United States
* [[Monmouth College]], Monmouth IL, United States
* [[Manhattanville College]], Purchase NY, United States
* [[University of Minnesota, Morris]], United States
* [[University of British Columbia]], Canada
* [[Brown University]], Providence RI, United States
* [[Zefat Academic College]], Israel
* [[University of Chile]], Chile
 
== References ==
{{Reflist}}
<references />
 
== External links ==
* HTDP{{Official website|htdp.org}}, 2018 [Second2nd edition], http://htdp.org/2003 1st edition {{openaccess}}
 
* HTDP, 2003 [First edition] http://htdp.org/2003-09-26/ {{openaccess}}
{{Lisp programming language}}
 
[[Category:2001 non-fiction books]]