Live data from Hacker News

Brian Harvey: Why SICP matters

eecs.berkeley.edu

1–10 of 52 posts

Re: Brian Harvey: Why SICP matters

#4
I just finished watching MIT 6.00SC for the hell of it. It was really sad experience.

Of course, prof. Guttag is really a big-shot and seems like no one could say anything, but I cannot even properly describe how much worse it was than CS61A by Brian Harvey.

It is not just Python, it is ugly Python, boring Python, without any hint of elegance it could be. No list-set-dict comprehensions, which is what makes Python interesting, very few slicing examples and one or two use of yield.

I must say that usage of classes was reasonable - only when there were even a small advantage to structure the code this way, but it is just boring stuff.

Each lecture of CS61 keeps you alert and awake, and curious, time passes unnoticed, and you almost feel how a new connections growing in your brain,) while in 6.00CS you're forcing yourself to to stay alert, almost yawning.

So, if one is engaged in self-education just do CS61A and old 6.001 classic videos. After you can skim trough all those mainstream Python-based courses very quickly with great ease. I can do 4-5 lectures per day.)

Re: Brian Harvey: Why SICP matters

#5
> What MIT decided was to move from a curriculum organized around topics (programming paradigms, then circuits, then signal processing, then architecture) to a curriculum organized around applications (let's build and program a robot; let's build and program a cell phone).

While this is offered as an excuse for switching away from SICP, I don't like this either.

Programming paradigms are the perfect introduction to programming. First, it naturally teaches you one of the most fundamental concepts in computer science (abstraction) by example; with the SICP approach, you learn about abstractions by constructing your own idioms for abstractions within a programming paradigm!

Second, applications become easier and easier to develop the more one learns to break out of a single paradigm and borrow ideas and tools from each as needed - otherwise, it's easy to get stuck in a rut and miss a simple but elegant solution to the problem at hand. Being able to cross-pollinate features or ideas idiomatic in one language to another gives you a Leatherman instead of an x-acto knife.

Having a fundamental grasp of programming paradigms makes programming languages feel like a second skin, rather than an obstacle sitting between the brain and the binary output.

Re: Brian Harvey: Why SICP matters

#6
My high-school CS teacher structured his course around SICP--he worked with Brian Harvey to build the curriculum--and looking back I can definitely see the power of this approach.

I agree whole-heartedly with what he's said in this piece and hope that others can continue to reap the value of SICP. It's made me a clearer thinker and better programmer.

One might say that SICP is unique in as much as it transcends coding as an act of "slinging code at a screen", pushing readers to think carefully about the nature and design of their programs. That's only a sliver of what it does, but it's ever so easy to miss that as a beginning programmer.

Yeah, it definitely takes discipline to get through, but it's quite rewarding.

Re: Brian Harvey: Why SICP matters

#8
Brian Harvey was a wonderful, wonderful teacher. Most of what I have learned in CS since has been more-or-less an addendum to his version of CS61A. The world just doesn't make hackers (and teachers) like that enough.

Re: Brian Harvey: Why SICP matters

#9
Awesome point about just how language agnostic the course was: the key idea that every programming language has 3 components (primitives, one or more means of combination and one or more means of abstraction) and once you figure those out you can do the same things in just about any other language is really not highlighted enough. Still haven't seen any other programming courses that point that out: getting bogged down in syntax trivia seems to be the pattern of the day.
Post reply on HN