Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

What would one recommend after HtDP (for someone who is a complete beginner)?

As I've just about come to the end of the wonderful course on edx using this book, I have been considering what I should use for the next step.

SICP seems to be a common recommendation however I've read a few comments on the difficulties with math and other things seeing as the book was originally written for MIT students.

Seeing as how highly regarded SICP is should I try it even though I consider myself to be weak at math?



Have you done both courses (https://www.edx.org/course/how-code-complex-data-ubcx-htc2x is the second)? Your comment suggests you're only gone through one.

Beyond the courses, it depends on your goals and interest. I would stick with functional programming (FP) to avoid confusion right now, rather than moving to an imperative language. I would first go through PLAI (see http://racket-lang.org/books.html for a link and other Racket books) because I think understanding some programming language theory is super-useful. If you understand PLAI you're well ahead of most programmers IMO, and there is no need to read SICP. Learning a typed language such as Haskell, Scala, or O'Caml might be a useful next step. My own book, Creative Scala, is very much in the HtDP tradition (http://www.creativescala.org/) though it might be a bit basic at this point. Beyond that, whatever takes your fancy.

A quick note on SICP: I don't believe in great books, more the right book at the right time. When I read SICP it was at exactly the right time for me, but I can see with retrospect the presentation is a bit old-fashioned in many ways. If you can work through PLAI you'll have learned most of the big lessons from SICP.


Thank you for taking the time to write such a detailed response. I will absolutely be looking at your recommendation and hold off on SICP until it is the right time.


I agree with Noel about PLAI. It might be an excellent follow-up.

You could also look into the Racket Guide for transitioning to Racket.

If you want to keep working on more complex interactive programs, instead, the lux module (https://docs.racket-lang.org/lux/index.html) might be more efficient than 2htdp/universe. The latter is just amazing, but not intended to be used in contexts where performance may matter, at least in its current implementation.


You might want to consider the draft of how to design Classes http://www.ccs.neu.edu/home/matthias/htdc.html I haven't read it, so can't fully vouch for it.

noelwelsh's suggestions (and book) are good as well, seconding those.


Oh, that looks great. Thanks for the recommendation. This seems like it would be a great continuation from HtDP to OOP languages.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: