Friday, January 27, 2006

SICP = Rad

One of the things I decided I would finally do this year is self-study "6.001: Structure and Interpretation of Computer Programs," which is MIT's classic undergrad introduction to computer science. I have been hearing about this course and its accompanying textbook since I started getting seriously interested in software systems around 1998. There are video lectures available here.

I always assumed this would be really dry subject matter, and that it would be good medicine, but not actually enjoyable. To paraphrase Mark Twain, I figured it was something I wanted to have done, but not something I wanted to do.

I've seen three weeks of lectures now, and I can honestly say it is blowing my mind. Since I came to software from the top down and not from the ground up, I've never had an opportunity to contemplate computer programming from first principles. For that matter, most computer science curricula don't do this either, but rather introduce you to the minutiae of some programming language, be it Pascal, C++, or (lately) Java. SICP is astonishingly refreshing and illuminating. I've managed to learn a few things about software already, but this course is revealing the why of software design.

The video lectures were done in 1986 for employees of Hewlett Packard. One of the great side-effects of this is that the students in this class are asking really good questions, usually the questions that I wish I could ask.

Will this course turn me into a Lisp hacker? Paul Graham and Philip Greenspun are convincing advocates, but the pudding in which the proof really is is Andy Gavin of Naughty Dog. If Lisp is good enough for Jak and Daxter, it is freakin' good enough for me.

No comments: