Last night and this morning, I watched the first of the Structure and Interpretation of Computer Programs lectures that Joel Spolsky recommends in the post below. Good stuff.

The other hard course for many young CS students was the course where you learned functional programming, including recursive programming. MIT set the bar very high for these courses, creating a required course (6.001) and a textbook (Abelson & Sussman’s Structure and Interpretation of Computer Programs) which were used at dozens or even hundreds of top CS schools as the de facto introduction to computer science. (You can, and should, watch an older version of the lectures online.)

The Perils of JavaSchools - Joel on Software