Content deleted Content added
Rosalina2427 (talk | contribs) Undid revision 850006162 by 217.114.161.24 (talk) |
m Disambiguating links to Object-orientation (link changed to Object-oriented programming) using DisamAssist. |
||
(29 intermediate revisions by 14 users not shown) | |||
Line 1:
{{
{{Use mdy dates|date=July 2018}}
{{Infobox book
| name
| image
| caption
| author
| cover_artist
| country
| subject
| genre
| publisher
| pub_date
| media_type = print
| |
|
|
|
| website = {{URL|htdp.org}}
}}
'''''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
According to HtDP, the design process starts with a careful analysis of
Like ''[[Structure and Interpretation of Computer Programs]]'' (SICP), HtDP relies on a variant of the programming language [[Scheme (programming language)|Scheme
==Pedagogical basis==
In the 2004 paper,
|
|
|
|
|url-status=live
|
|
}}
▲}}, a paper in which the authors compare and contrast HtDP with SICP.</ref> 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.
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.
One of the major focuses of the paper is the emphasis on the difference in required [[___domain knowledge]] between SICP and HtDP. A chart in the paper compares major exercises in SICP and HtDP, and the related text describes how the exercises in the former require considerably more sophisticated ___domain knowledge than those of HtDP. The paper continues on to explain why this difference in required ___domain knowledge has resulted in certain students having confused ___domain knowledge with program design knowledge.
The paper claims the following four major efforts that the authors of HtDP have made to address perceived issues with SICP:
#HtDP addresses explicitly, rather than implicitly, how programs should be constructed.
#To make programming easier, the book guides students through five different knowledge levels corresponding to data definition levels of complexity.
#The book's exercises focus on program design guidelines, rather than ___domain knowledge.
#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.
== References ==
{{Reflist}}
== External links ==
*
{{Lisp programming language}}
[[Category:2001 non-fiction books]]
[[Category:Computer science books]]
[[Category:MIT Press books]]
[[Category:Computer programming books]]
[[Category:Scheme (programming language)]]
[[Category:Creative Commons-licensed books]]
|