3 ms·
SICP is an interesting case because some of its "hardness" is actually incidental to the subject matter. It is written by, and for, people who enjoy pure mathem
by koreth1 12y ago
SICP is an interesting case because some of its "hardness" is actually incidental to the subject matter. It is written by, and for, people who enjoy pure mathematics and numerical functions. That describes a lot of incoming CS students, but not all of them.
Almost all the examples in the first few chapters are things like estimating the values of convergent series, and a less mathematically-inclined student will spend more time puzzling over the problem definitions than over the concepts of recursion and encapsulation that the problems are trying to demonstrate.
I think the book would be much stronger with a broader diversity of examples, especially early on. I'm not advocating completely getting rid of the pure-math ones, but a wider range of problem domains would very likely help the concepts "click" more quickly for a larger set of students.
There is certainly the "CS is a branch of mathematics" viewpoint that suggests that someone who hasn't already mastered basic calculus as a university freshman has no business pursuing a CS degree in the first place, but I don't personally subscribe to that idea.
- hga 12y ago"It is written by, and for, people who enjoy pure mathematics and numerical functions." The latter wasn't strictly true of CS focused MIT undergraduates back then ^_^, but by definition they could do math at that level. It was a common background Ableson and Sussman could safely assume everyone taking the course could do without much sweat, i.e. it avoided accidental complexity to focus on teaching the CS concepts they cared about. Just like the very simple syntax of Scheme takes a whole lot less time to grok than the Algol family standards, at least of the day (have not learned Python so I'm not qualified to comment there, but from what little I've seen it's still more complicated). A broader diversity of examples would indeed be a good thing, and I'd be surprised if no one has done some work in that direction. On the other hand, as is it works for any CS program with a strong, non-optional EE component, e.g. MIT and I gather UC Berkeley, and once upon a time as I recall it was the intro course for CalTech, which is a lot more mathematically intense than MIT (when you show up you're expected to know single variable calculus and are dumped into Apostol, with an option to finish in a more applied track, or so was the case the last time I checked a few years ago). As for your later point, I've very unsure a grounding in continuous mathematics (no matter how fun it is, at least conceptually) is essential for mastering a lot of CS, I thought the most relevant domains were in the area of discrete mathematics, with of course various areas dipping back into continuous math.