How to Design Programs: Difference between revisions

Content deleted Content added
Tags: Mobile edit Mobile web edit Advanced mobile edit
m Disambiguating links to Object-orientation (link changed to Object-oriented programming) using DisamAssist.
 
(7 intermediate revisions by 5 users not shown)
Line 1:
{{shortShort description|BookComputer programming textbook by Matthias Felleisen and colleagues}}
{{Use mdy dates|date=July 2018}}
{{Infobox book
Line 28:
 
Like ''[[Structure and Interpretation of Computer Programs]]'' (SICP), HtDP relies on a variant of the programming language [[Scheme (programming language)|Scheme]]. It includes its own programming [[integrated development environment]] (IDE), named [[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 prior one. Except for the largest teaching language, all languages for HtDP are [[functional programming]] languages.
 
==Pedagogical basis==
In the 2004 paper, The Structure and Interpretation of the Computer Science Curriculum,<ref>{{Citation
Line 37 ⟶ 38:
|archive-url=https://web.archive.org/web/20080511171056/http://www.ccs.neu.edu/scheme/pubs/jfp2004-fffk.pdf
|archive-date=May 11, 2008
}} a paper in which the authors compare and contrast HtDP with SICP.</ref> the same authors compared and contrasted the pedagogical focus of [[''How to Design Programs]]'' (HtDP) with that of ''[[Structure and Interpretation of Computer Programs]]'' (SICP). In the 14-page paper, the authors distinguish the pedagogic focus of HtDP from that of SICP, and show how HtDP was designed as a textbook to address some problems that some students and teachers had with SICP.
 
The paper introduces the pedagogical landscape surrounding the publication of SICP. The paper starts with a history and critique of SICP, followed by a description of the goal of the [[computing]] curriculum. It then describes the principles of teaching behind HtDP; in particular, the difference between implicit vs. explicit teaching of design principles. It then continues on to describe the role of [[Scheme (programming language)|Scheme]] and the importance of an ideal [[Computer programming|programming]] environment, and concludes with an extensive evaluation of content and student/faculty reaction to experience with SICP vs. HtDP.
Line 49 ⟶ 50:
#The book assumes less ___domain knowledge than that of SICP.
 
The paper then distinguishes between structural [[recursion]], where the related data definition happens to be [[self-referential]], requiring usually a straightforward design process, and generative recursion, where new problem data is generated in the middle of the problem-solving process and the problem solving method is re-used, often requiring ''ad hoc'' mathematical insight, and stresses how this distinction makes their approach scalable to the [[Object-oriented programming|object-oriented]] (OO) world.
 
Finally, the paper concludes with a description of responses from various faculty and students after having used HtDP in the classroom.
Line 58 ⟶ 59:
== External links ==
* {{Official website|htdp.org}}, 2018 2nd edition, 2003 1st edition
* [http://mitpress.mit.edu/sicp/ Official SICP site, including the full text in HTML]
* [http://www.cs.kent.ac.uk/people/staff/dat/miranda/wadler87.pdf A critique of Abelson and Sussman - or - Why calculating is better than scheming]
{{Lisp programming language}}
 
Line 65 ⟶ 64:
[[Category:Computer science books]]
[[Category:MIT Press books]]
[[Category:Computer programming books]]
[[Category:Scheme (programming language)]]
[[Category:Creative Commons-licensed books]]