Hacker News new | ask | show | jobs
by tsally 5829 days ago
You're going to be tempted to skip exercises because you think you understand the exercise or it is not applicable to you. Don't fall into this trap, as we humans are notoriously bad at judging what will and will not be useful for our own learning. Do all the exercises.

The two month time frame seems very optimistic unless SICP is one of your only responsibilities. It's my understanding that most semester courses that use/used the book usually never even get/got through the last chapter.

You might consider reading How to Design Programs (HtDP) as an alternative or supplement to SICP. The authors of HtDP have published a paper comparing the two works (mostly detailing the perceived shortcomings in SICP that motivated them to write HtDP in the first place). Read it here: http://www.ccs.neu.edu/scheme/pubs/jfp2004-fffk.pdf.

Good luck. :)

1 comments

However, do skip some of the more difficult/theoretical exercises, if you feel they are over your head. As usual, doing half of the exercises probably provides 80% of the benefits. As an example of a question you may want to skip: the proof question 1.13 asks you to give requires some mathematical background knowledge concerning how to go about proving something. Don't let those questions demotivate you if you lack that knowledge.
Strongly disagree. You should be able to do exercise 1.13. Knowing how to prove something is very valuable. I remember spending several hours trying to do exercise 1.13 and when I finally got it I had learned a great deal about proving, induction (altough I didn't know its name) and manipulation of exponentials.

The exercises that are hard for you are exactly the exercises that you'll learn a lot from.

Hm, the way I read it, "Confusion" wasn't suggesting to skip the exercise because it's hard, but because it assumes specific mathematical knowledge which, strictly speaking, is unnecessary to master SICP concepts.

As you point out, it may still be useful to have that knowledge, and if you have the time and the mathematically-inclined brains, it may be a skill worth learning... but I feel that it shouldn't be required to successfully learn the concepts in SICP. SICP is hard enough as it is, no need to get sidetracked if you don't absolutely have to.

(I realize this comment may bring all the "programming is math" fans out of the woodwork, but so be it. :-)

Learning what a proof is is valuable for programming too. Many people don't see a difference between a proof and an argument. It is valuable to learn the difference between "This is why this program is correct" and "Here are some reasons why this program is probably correct".
It's been 10 years, but I do distinctly remember an SICP exercise which stated that a proper solution was worthy of a phd thesis. So I'm going to agree. :-)