Skip to content

Comment on SICP in Python

Comments

This is ok, for a CS 101 class. I'm sure the students will turn out just fine. Some of them will likely be intrigued by the purple book their class name references. Looking at the schedule, it looks like it just covers the "Structure" and not the "Interpretation". My favorite parts of SICP are the 4th and 5th chapters, on metacircular evaluation, interpreters, lazy Scheme, Prolog, and compilation to byte code. I guess it's probably too much for CS 101 though. It would also be a lot more work to do those chapters in Python, since you'd need to cover scanning and parsing, instead of just using (read).

I think that the metacircular evaluator and friends are perfect for a CS 101 class--they really changed my perception of how software works. After all, this is a CS class rather than just a programming class, and SICP is a good overview of both while this new class is probably less so.

Oh, I definitely agree. SICP was the beginning of the rabbit hole for me. But I had spent a lot of time programming before I started it, so I'm not sure if it really is the best text for CS 101, where some students maybe have never written a line of code. Peter Norvig's review sort of sums up this regarding SICP: http://www.amazon.com/review/R403HR4VL71K8

I've never been involved in teaching CS or programming, and while I really do think SICP should be required reading for all CS students (and for all programmers) just because it's so good, I respect that teaching is very challenging, and fitting it all into a single semester might be tough. There are some very smart and experienced people who have spent a lot of time thinking about this (see "The Structure and Interpretation of the Computer Science Curriculum"), and I hesitate to put SICP on a pedestal where it can't be touched.

As I said, hopefully some (or many!) of the students taking this class at Berkley will be curious about the original book and will seek it out on their own.

One thing to note is that this class is really more like CS101.5--if you have never programmed, you're highly encouraged to take a very introductory class for a semester before this one. Apparently about 90% (or something) of the people taking it have had at least some programming experience.

I also don't think SICP is perfect; however, I think it inherently much better than anything--even itself--done in Python simply because Python basically forces less breadth. I recently read an interesting paper[1] that I think could lead to an even better class; if you're interested in this sort of thing, it's worth checking out.

[1]: http://www.sics.se/~seif/Publications/fdp.pdf

It's also not really designed for a completely introductory class, but I hope that most of the people coming into Berkeley CS aren't completely unprepared.

On a slightly unrelated note, a completely different approach to an intro class could be cool too: instead of focusing on learning, maybe the first semester should be dedicated to just building something cool on a computer and letting the learning happen naturally. The more formal classes can always come later. For something like that, I could see using Python--although it wouldn't be my first choice by far--but that's a completely different story.

i believe they still have to do a logo interpreter/evaluater for the final project of this new class.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.