4 ms·
seems like an interesting addition to SICP. Anyone here who already worked through it?
by mpfundstein 9y ago
seems like an interesting addition to SICP. Anyone here who already worked through it?
- undecidabot 9y agoHaven't read this book yet, but it was designed to be a more accessible and practical alternative to SICP. Check the authors' paper comparing the two (pdf) [1]. Taking a look at the contents, once a person has read through SICP and understood it, they may find most of HtDP to be boring. It would be much better to read HtDP before SICP than the other way around. [1] https://cs.brown.edu/~sk/Publications/Papers/Published/fffk-htdp-vs-sicp-journal/paper.pdf https://cs.brown.edu/~sk/Publications/Papers/Published/fffk-...
- boojing 9y agoIt was the book that was used in my first programming class in college (Northeastern). One of the authors, Matthias, was part of the course staff. It's definitely interesting as it differs from most non-functional programming intro course books and sets up a more rigorous foundation for students to use when they go on to learn about class based design with Java in the second semester. I guess it might be a bit strange to think that we don't encounter iteration until the latter part of our second semester but it does make student get really familiar with recursion. Not sure how I would have handled it if I had to work through it alone but I would at least recommend people to give the book a look.
- readyp1 9y agoSimilar situation here... one of the core Racket dev team members (i.e. PLT) works here, and we use HtDP in our one-semester Intro to CS (211) class. They specifically advertise it to those who have little to no past programming experience, with the only prereq being high school precalc; it's pretty rigorous and definitely covers a lot of stuff that my past programming textbooks didn't at all (e.g. recursion out the wazoo, abstraction). Here, it sets up for our 212 class, Intro to Software Systems, which is another semester class, all done in Java and about OOP. Seems like a mildly jarring switch if you ask me. Even with my past experience, I still needed a ton of help from professors and other students. It's kinda daunting to think about doing it alone, without much help.
- brudgers 9y agoBack in 2013, when Coursera was free, Gregor Kickzales taught Introduction to Systematic Program Design. It was based on the principles in HtDP. The videos can be found on his YouTube channel: https://www.youtube.com/user/gregorkiczales/videos https://www.youtube.com/user/gregorkiczales/videos That class has since morphed onto Edx. It is now part of the Edx Software Development "micro-masters". https://www.edx.org/micromasters/software-development https://www.edx.org/micromasters/software-development The origin of all those courses is Kickzales' teaching at University of British Columbia...and the PLT Group centered at Boston University. In comparison to SICP, HtDP is slower paced and more basic in terms of Computer Science. Not surprising since the intended audience of SICP was MIT undergrads rather than those more toward the middle of the high school academic Bell Curve. The other major difference is that HtDP is a specific methodology utilizing specifications, tests, stubs, and other techniques for writing programs. In terms of Books as Books, SICP is better written. It has far better type-setting and binding. It is a pleasure to read. And to hold. HtDP has a poor physical format and below average typesetting for a textbook, it's just ugly and awkward all around. HtDP doesn't reflect a Knuthian concern with typesetting and the experience is closer to a bound website than TAoCP. =
- samth 9y agoAre you thinking of the print edition? Both books are typeset using TeX, and both are printed by MIT press, so this is a pretty surprising claim.
- brudgers 9y agoBy "books as books," yes, I mean the print editions. The first edition of HtDP specifically since that is the one I own. By "typesetting" I mean the entire process of producing a physical artifact from an edited manuscript. Thus, I am including aesthetic considerations such as typography, cover design, and binding. TeX is a technology. In the context of my literary criticism, citing TeX and MIT press is analogous to "styled with CSS and hosted on GoDaddy" in regards to a website. TeX is a tool. MIT Press is a good publishing house and its catalog contains quality, but some of its books are still better than others in terms of typesetting (in the sense described). The differences can reflect authors' goals; publishing economics; and just the times (HtDP came about in the era of the commercial web). Personally, I find the unconventional physical format of HtDP (8" x 9") awkward. It's unbalanced. The pages are too wide. The compensating increase in font size makes the lines so tall that there is low information density on each page. As a reader, the amount of head/eye movement for a disrupts my concentration. The gutters are far too wide. I suppose that the wide gutters were to accommodate the Lambda icon, but these peter out in the first quarter of the book. Because these could be taken away with little effect their inclusion is a decision that could have been revisited and a more conventional layout considered. The typography is haphazard. Code on page 191 uses san-serif. Code on page 322 is set in four faces; a mix of serif and san-serif, bold, and italics; and boxes. Page 299 has its own notation. Often its complexity obscures the big ideas: on page 278 the unimportant ideas are in bold (local is irrelevant to the local point of f's referent) [1] and the diagram's arrows connect the thinnest term and the thinnest term is typeset in italic. Please don't take my remarks personally except in so far as I think HtDP is a book worth owning and reading and that the world is better for it existing in its current form. It's useful and supports an important project that I like. Thanks. [1] Page 279 uses nested boxes to express locality. These have semantics distinct from boxes on page 322.
- closeparen 9y agoHtDP is a much less difficult warmup often used to prepare students for SICP.