3 ms·
I have found that the best way of learning the HtDP approach to program design, at least for me (I find the book itself a bit dry), are the EdX "How to Code" fr
by charlysl 8y ago
I have found that the best way of learning the HtDP approach to program design, at least for me (I find the book itself a bit dry), are the EdX "How to Code" free moocs [1] [2]. The instructor is fantastic. It completely changed the way I program and design.
If you like the approach and want to learn more, like, for instance, how to extend it to OO design, I list below links to several courses (most, except for the last one, offer enough material to complete them on your own, but I couldn't find any videos) at the university where HtDP's main author, Matthias Felleisen, is tenured (North Eastern). The courses are listed in the order in which they should be taken, and the rationale is explained by the professor in the paper "Developing Developers" [3]:
* CS 2500 - Fundamentals I [https://course.ccs.neu.edu/cs2500/ https://course.ccs.neu.edu/cs2500/]
* CS 2510 - Fundamentals II - Introduction to Class-based Program Design
[https://course.ccs.neu.edu/cs2510/index.html https://course.ccs.neu.edu/cs2510/index.html]
* CS 2800 - Logic and Computation
[https://course.ccs.neu.edu/cs2800/index.html https://course.ccs.neu.edu/cs2800/index.html]
* CS 3500 - Object Oriented Design - Spring 2018 (scaling up the 3 previous courses) [https://course.ccs.neu.edu/cs3500/ https://course.ccs.neu.edu/cs3500/]
* CS 4500 - Software Development [http://www.ccs.neu.edu/home/matthias/4500-f18/index.html http://www.ccs.neu.edu/home/matthias/4500-f18/index.html]
[1] https://www.edx.org/course/how-code-simple-data-ubcx-htc1x https://www.edx.org/course/how-code-simple-data-ubcx-htc1x
[2] https://www.edx.org/course/how-code-complex-data-ubcx-htc2x https://www.edx.org/course/how-code-complex-data-ubcx-htc2x
[3] http://felleisen.org/matthias/Thoughts/Developing_Developers.html http://felleisen.org/matthias/Thoughts/Developing_Developers...
- philonoist 8y agoI happen to best learn through video lectures more than reading. Thank you for your effort. I am starting with these.
- hackermailman 8y agoCould try both, the book (HtDP) is more rigorous than those two MOOCs as they're meant just as an intro where you progress into many more courses (as part of the micromasters on software development) while the book is a full grounding in CS 101. Somebody correct me if wrong but I don't remember any big-O analysis in the MOOCs or the parsing XML chapter, traversing graphs, the content on fixed-size arithmetic, plus the 500 or so exercises the book has compared to the three or four at end of each unit in the MOOCs. For example the sierpinski triangle assignment in the MOOC is pretty straightforward, but in the book you also generate a fractal savannah tree using trigonometry functions that isn't so straight forward, but when you see how they do the generative steps in the book you get that 'eureka' moment learning about Bézier curves. https://jeremykun.com/2013/05/11/bezier-curves-and-picasso/ https://jeremykun.com/2013/05/11/bezier-curves-and-picasso/
- charlysl 8y agoAgreed. But I would still recommend those interested to start with the online courses. The reason is that they hammer in the core principles that underlie all of systematic program design, with plenty of hand holding and exercises, and spending the right amount of time on each new concept, which is a lot harder with the book alone. The instructor is so good that in 10 mins one will understand what would otherwise take more than one hour with the book, at least in my case. After completing the moocs one will have a rock solid foundation from which to tackle more ambitious problems, including the ones you mentioned. Only then would I open the book.