How to Design Programs, Second Edition
ccs.neu.edu
ccs.neu.edu
I am so grateful to have had my education become heavily functional for my last two years. Changed my life permanently for the better.
Anyone who's read through this, do you think it's still valuable if you're already working through SICP?
I'm currently reading through SICP, and I think I'm going to stick with it instead of reading [the existent parts of] HtDP. I like the style of writing in SICP better. That said, if you're turned off by the writing in the first chapter of HtDP, this note appears at the end of the chapter:
"Oh, and by the way, the rest of the book uses a tone that is appropriate for a serious text."
It's an update of HtDP (http://www.htdp.org/) and it's still in progress. I taught an intro (CS1) course using last year's draft (when chapters 1, 2, and 4 were all there was) and had no problems.
I tried to read it, after having read SICP, but I couldn't get past two or three chapters. It's very much geared toward a complete beginner to programming and goes quite slowly, with tons of hand holding examples. This isn't really a fault, they obviously cannot satisfy a complete beginner and a working programmer with a CS degree who wants to fill in holes in their knowledge. I'd like to try to go at it again, maybe after they finish updating it, perhaps doing what Norman Ramsey has said on Stack Overflow in recommendations of the book: "If it's too easy, go faster!". There's a review on Amazon from someone who claims to have a PhD in CS, who said it was very valuable. (maybe that says something about their PhD program? zing! I jest.) So take my review with a dose of salt.
1. You can't learn how to program quickly, but you can learn how to program.
2. Remember the design recipe.
3. The structure of your programs should follow the structure of your data.