SICP is Under Attack
51–60 of 207 posts
Re: SICP is Under Attack
#52Earlier quoted context omitted.
It's not "what the school wants to teach" but more "what the student needs to know at the end of the semester". I love SICP -- for me it was a revelation which opened a new world, and is still my favorite book -- but not everyone is like that. 90% of my colleague in my university would hate that book.. (As they hated the dragon book and anything less practical). So, as they say, "Hate the game, not the gamers". What…
There is a compelling argument that, in the age of nearly limitless computing resources, it doesn't matter anyway. You will in all likelihood be a glue programmer: you'll rely on APIs and libraries, most of which have been written by someone else, and you will simply string them together by applying the functions that most obviously address whatever problem you're trying to solve. Who cares, really, if you're using Q…
If a student in college wants to acquire a CS degree, they should be exposed to fundamental ideas in CS, not just what they'll need to be a professional programmer.
Re: SICP is Under Attack
#53The author makes the assumption that the only books people will ever read are those books that were assigned as part of a formal course. That may be true of some people, but it's certainly not true of the average programmer!
Re: SICP is Under Attack
#54Practical programming should not be the point of early computer science curricula.
Re: SICP is Under Attack
#55At a place like Stanford, a majority of undergraduates will have taken an introductory computer science course by the time they graduate, but it's obviously not true that a majority will be computer science majors. And while I appreciate SICP and Scheme and functional programming, and completely understand why that kind of thinking should be valued, it may not be the best way to present a breadth of introductory programming knowledge that will motivate, interest, and offer practical examples. Sure, lambdas are awesome, but when you are just starting out in your first programming course, the deep theory behind why lambdas are so interesting will almost certainly be lost on the students. It's like building up a field of math from, say axiomatic set theory or algebra. By the time you get to multiplication and fields (perhaps akin to variables or for loops in programming), you gain a very deep understanding and appreciation for the topic that can only be gained by this bottom-up problem based approach, but then again, a non-mathematician (or non-computer scientist) could have probably just assume the existence of multiplication or loops for the sake of solving higher-level problems.
Re: SICP is Under Attack
#56Re: SICP is Under Attack
#57I basically agree with the OP that Dive into python is a pale replacement, but at the same time there is something to SICP's critics. Peter Norvig seemed to think most people would get the most out of it after getting some experience, and the HtDP authors definitely have a point about how much heavy math is involved. It's still a wonderful book, and won't be lost, I'm sure. http://www.amazon.com/review/R403HR4VL71K8…
I have to strongly agree with that. In general, you can't understand a solution to a problem until you encounter the problem yourself, and SICP too many solutions, too quickly, for problems you've never encountered, for it to stick very well to a novice. It may seem strange to criticize something for student use for having "too much solution in it", but based on what I've seen it's the truth. It would be a better junior or even senior level course than a freshman intro, when you have something to hook the solutions on to. Or an honors freshman course, for people you know have done some prior programming.
Re: SICP is Under Attack
#58I basically agree with the OP that Dive into python is a pale replacement, but at the same time there is something to SICP's critics. Peter Norvig seemed to think most people would get the most out of it after getting some experience, and the HtDP authors definitely have a point about how much heavy math is involved. It's still a wonderful book, and won't be lost, I'm sure. http://www.amazon.com/review/R403HR4VL71K8…
> ...and the HtDP authors definitely have a point about how much heavy math is involved. I get why people object to heavy math in programming -- it makes the entire field less accessible -- but programming is heavily based on mathematics, if not entirely a subset of mathematics. Saying, "it requires too much math to learn this" strikes me as a lot like saying "there's too much biology in learning to be a doctor".
But simple imperative programming at the level of assembler, for example, I would argue is more closely related to cooking recipes than it is to mathematics. And the reverse mapping of mathematics to programming isn't terribly strong either; most general-purpose programming isn't abstract enough to get big gains from maths.
As a practical matter, I work professionally on compilers - i.e. far closer to the CS end than the glue code end of things - and outside of the usual bits of parsers and grammars and graph theory, I would still submit the only really important piece of CS maths a self-motivated student programmer needs is the analysis of algorithm complexity; big-O notation for space and time, in other words.
All that said, I'd prefer by far students being taught from SICP or CTM[1] than any book targeted at introducing people to a programming language, rather than using a programming language to introduce people to CS concepts. Using practical, industrial languages like Python or Java warps your perspective because in the interests of practicality, those languages are quite opinionated in how you should structure your programs. Things are different with Scheme or Oz.
[1] Concepts, Techniques, and Models of Computer Programming
Re: SICP is Under Attack
#59The assumption that college should prepare you for a career is a fallacy. You should be able to teach yourself programming well enough to program, and take a few classes on the side for kicks+extra progress. But going to a 4-year institution and expecting that to be your golden ticket to a career? Ludicrous.
I go to school to be exposed to things I wouldn't otherwise. I go there to meet people I wouldn't otherwise. I go there to figure out myself, and challenge myself. If I wanted to go into a career working with Spring MVC, I'd have been ready for that out of high school (less the degree many places require–the requirements are a separate issue).
Re: SICP is Under Attack
#60Earlier quoted context omitted.
I completely agree, but at the same time, it's a barrier to entry that I think might be unnecessary. Some college freshman haven't taken calculus, and SICP would seem a bit daunting at times to those students, I imagine. Unfortunately, I think HtDP goes too far; it's too dumbed down.
> Some college freshman haven't taken calculus... Yeah, and that's a serious problem, too -- and one that I'm guilty of! ...that is, if I'd ever gone to college. :-( I am very much not encouraged by a "race to the bottom" when it comes to education. If calculus is too difficult for the student, then perhaps the student should not consider a career in programming. I say that without any malice whatsoever; I'm not symp…
The only time I've ever used calculus in a program in 20+ years of programming is in physics simulation in some toy game apps; and that was just to derive some formulas that plugged in. They could have easily been solved today with some googling (other people probably solved the same problems) or questions on forums.
(FWIW, mathematics has always been my best and favourite subject in school, aptitude tests put me in 99th percentile, etc. IOW, I have no personal grudge against maths. I just see very little connection to programming outside niche areas, and even then they usually barely scrape the surface of the related mathematical area.)
PS: I think your specific bugbears are not related to mathematics either. Bugs: best approached with proper programming style like invariants and defensive programming, along with testing. The quality of software that people actually use can be measured from feedback, bug fix rates, etc. A bigger issue with bugs is usually economics; it's frequently more important to get things into people's hands quickly and cheaply than it is to have higher quality and compromise the other two. Bloat and sluggishness have two cures: measurement and big-O. I'd put both in engineering rather than maths. Understanding big-O, either explicitly or intuitively, is absolutely essential, though it's all blatantly obvious when you spend some time thinking about it.