Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
SICP is being taught again at MIT (web.mit.edu)
200 points by gnosis on Jan 18, 2012 | hide | past | favorite | 37 comments


It's too bad that this is just a compressed sampler course and that they are not reinstating the original class. I took the equivalent course at Berkeley, which also taught SICP with Scheme, and I can't possibly imagine a better introductory Computer Science class, for 2 reasons:

First, as is stated everywhere else, SICP is a beautiful book and it does an amazingly fun and efficient job teaching you many, many fundamental topics in CS, and more than that it teaches you how to think and develop good intuitions for it.

Second, and maybe an opinion you haven't heard, teaching the class in Scheme is a huge benefit, and anyone who says the opposite just plain sucks. Pardon my coarseness, but so many kids who start out their college career are little shits who think they know everything about programming and that taking an introductory class is beneath them. I've heard that sentiment expressed almost verbatim, along with people listing off all the projects they've done in python and java and whatnot. When the professor (no longer Brian Harvey unfortunately!) starts teaching the class in Scheme they all shut their grubby little mouths and actually listen and try to learn something. The naysayers don't understand that the class isn't about programming, it's about computer science, and just the beauty of seeing that this weird functional language you've never seen before can be used to do everything from taking derivatives elegantly to implementing it's own interpreter to developing a query language or an OO language, etc, goes a long way in illustrating the malleability, openness, and sheer potential of Computer Science to new students who should be learning just that.


Looks like Brian Harvey is retiring, but before he does, he's working on a self-paced version of 61A, which will also include chapter 5 of SICP! (Cal, historically, has always only taught chapters 1-4, to the point, IIRC, of having a special SICP published without chapter 5).

http://www.cs.berkeley.edu/~bh/61a.html

I hope this is made available to the public, as it's a bit like discovering a long-lost director's cut ending to a much-loved film.


I don't have my copy of SICP with me at the moment. Could you explain what is covered in chapter 5?

Edit: Internet to the resucue: http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-30.html...


> Pardon my coarseness, but so many kids who start out their college career are little shits who think they know everything about programming and that taking an introductory class is beneath them.

Unfortunately enough, most intro classes are beneath a lot of these "little shits". SICP, not so much.


I can't possibly imagine a better introductory Computer Science class

MIT student here. My year was the first to have to do the new curriculum. Here's my understanding of it.

The replacement courses (6.01 and 6.02) are not supposed to be intro CS courses. They are meant to expose people to broadly applicable engineering principles in both electrical engineering and computer science. And like SICP, they are not about programming.

What used to happen with the old curriculum is that everyone --- both electrical engineering and computer science students --- would take 6.001, circuits, signals & systems, and architecture. With the current curriculum you get broad exposure in the beginning with 6.01 and 6.02 and have a bit more flexibility in your other requirements (if you're into pure CS, you can avoid sitting through a semester of circuit theory, if you want).

How was it in Berkeley? Are the EE and CS departments separate?


The departments are not separate, but the majors are; that is, the EECS department runs several majors, broadly speaking falling into the categories of a) pure CS, with a a course or two of EE to give the general idea; and b) EECS, two majors (Electrical and Computer Engineering, or Computer Science and Engineering) which offer varying combos of CS and EE. (I may have missed one or two). All of these degree programs require CS61A (the local version of SICP), though the department has switched to a version of the course taught in Python.


Ah, 6.001

Brings me back to the fall of 1998, and many long Thursday nights spent working on problem sets. This was before you could do the exercises on the web, so you had to go into an ancient lab with grayscale terminals (unless you wanted to download a special version of emacs onto your computer). If you needed assistance, you had to get on the TA's help queue, which was written on a chalkboard.

Typically I would finish my problem set and emerge just in time to see the sun rise.


> Brings me back to the fall of 1998,

Bah. I took it in 1983, on a TOPS-20 machine iirc with vt100's. We might as well have submitted our work in crayon.

Now get off my lawn.

(Sussman's book was still notes at that point. I wouldn't have guessed it would turn into the institution that it has turned into.)


Bah. I took its predecessor course, 6.031, in 1977. We used an 11/45 with D(r)ECwriters. And you're bitching about a VT-100?

Now get off my lawn!


You had to write it in 1s and 0s ? We only had 0s at the time !


This is still how (many) CS problem sets were done at Harvard circa 2008, except we had whiteboards instead of chalkboards.

(There was no technical reason that problem sets were done in the lab - I think it was just less depressing to be coding at 3 a.m. when you knew you weren't alone).


Here at Berkeley we have the same thing. For example, I had a computer-oriented discrete math course where the professor decided a fun time to have homework due would be 8:00 AM. Naturally, you could pop by the lab next to the turn-in box at obscene times in the morning and see a bunch of people working.

One benefit of this is that sometimes great discussions about completely random--although usually technical--subjects emerge as everybody is procrastinating. It really makes even the most annoying homework assignment bearable.


MIT didn't have color monitors standard in 1998?? Or local area networking connecting the labs to the dorms?


The 6.001 lab didn't have color monitors, and the software was only available in the 6.001 lab -- not even on Athena. Well, in 1988, anyway.


Wouldn't that "special version of emacs" be Edwin? :-)


Are we sure this website is current? I don't see 2012 anywhere, and professors oftentimes forget to take down old course websites.

If this is true, though, that's great news. SICP is the perfect way to teach computer science from the ground up, assuming that you're dealing with a student dedicated enough to do things the 'hard way' (or at least, the way that's less immediately/obviously rewarding at first). This is harder to do at other schools where students are not yet certain that they want to study CS, and there is a need to 'sell' them very quickly on the merits of learning CS (which is why you end up with some intro classes designed around mobile app development, rather than fundamental CS theory).


This website is current. I'm one of the alumni involved in this version of the course.

To give some more context, this is a course taught by a group of MIT alumni over MIT's "IAP" January term (http://web.mit.edu/iap/). As such, it's only 8 lectures over the course of a month, not a full semester-long class. It's partially sponsored by the EECS department and worth 6 units of P/D/F credit, but is not affiliated with the official EECS curriculum in any way, and does not fulfill any department requirements.

It's mostly just an effort by a few of us who loved SICP to give students these days an opportunity to be exposed to some of the Big Ideas from the class, that we feel haven't really found their way into the revamped curriculum.


Just wanted to say: thank you for helping to restore SICP.


I am not sure, but there is this: "Racket (previously DrScheme)"

Does anybody know if that rename was after MIT stopped using SICP?

If this is current, then it really is great news. This is probably one of the best times in quite a while to get into functional programming.


I'm pretty sure it was. Racket was renamed just a little over a year ago (though the previous name was actually "PLT Scheme" — DrScheme is an editor that became DrRacket).


Ah, right you are.


The Project 1 handout says it was due yesterday, so I think it is.


If you follow the link to the "SIAB IAP page", it's pretty obviously for 2012.


SICP was killed--well, is in the process of being killed--at Berkeley just this year. However, largely at the prodding of the old (and really awesome) SICP professor, it has also reemerged, now as a self-paced course. I know some of the people working on administering the self-paced version, and I am very impressed with where it is going. So there is hope yet ;)


Hmm, this looks pretty interesting. Would anyone happen to know why they dropped the course originally? Is there any sort of push for more functional programming at MIT now? I saw that they had a Haskell class listed on the SIPB IAP 2012 page.

CMU also has a Haskell course and also is pushing for a complete "elimination" so to speak of OOP from their curriculum (http://reports-archive.adm.cs.cmu.edu/anon/2010/CMU-CS-10-14...).

EDIT: Okay, I can't seem to find the page about the haskell course at CMU now. Maybe I'm thinking of a different university. Oh well, the message stays the same in regards to functional programming.



See also: http://www.codequarterly.com/2011/hal-abelson/

The change wasn't the primary subject of that interview but Seibel is a Lisper so he was clearly interested in hearing about it and asks some interesting questions about it.


CMU doesn't have any course explicitly on Haskell. There is a freshman course on functional programming, which is taught in Standard ML and therefore definitely has a focus on the advantages of an expressive type system.(http://www.cs.cmu.edu/~15150/).

There are multiple other courses where a functional paradigm is either necessary or very useful as well (http://www.cs.cmu.edu/~15210/, http://www.cs.cmu.edu/~rwh/courses/ppl/, http://www.cs.cmu.edu/~crary/hotc/, http://symbolaris.com/course/compiler11.html, among others).

There are currently no courses which teach object-oriented programming.


For those that are unfamiliar, SICP is a book - Structure and Interpretation of Computer Programs

http://mitpress.mit.edu/sicp/full-text/book/book.html


And while on that subject, you can check out: Structure and Interpretation of Classical Mechanics http://mitpress.mit.edu/sicm/book.html

[ A complete course on Lagrangian mechanics (the stuff you need to solve mechanics problems more complicated that the simple types of motion covered by Newtonian mechanics), with each equations are actionable.] http://mitpress.mit.edu/sicm/book-Z-H-11.html


A very interesting feature, the Online Tutor: http://icampustutor.csail.mit.edu/6.001-public/


In my experience, people's reactions to the XTutor have been hit or miss. Some people despise it, while others (me included) love it!

I taught an abbreviated version of 6.001 in China many summers ago, and it was sponsored by Microsoft's iCampus project to test out different learning tools. XTutor was one tool we used, and while it certainly helps the student in that it gives immediate feedback, what was surprising to me was how much it helped us, the somewhat inexperienced teachers. Teaching the 6.001 course would have been much more difficult without it.

Lots of people have knowledge they'd be happy to share. The easier we can make it for them to connect with learners, the better.


Is SICP just not taught at a lot of places anymore? SICP used to be the first CS class at Caltech, but now its generally the second CS class (with programming) that people with no prior programming experience take.


Any hope of video for the lectures? :)

Or did anyone sneak a camera into the C++11 talk?


If you want videos, use the videos of Sussman and Abelson: http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussma...


nice to see them using racket this time around. it's one of the best environments i've seen for scaling all the way from beginner to professional needs.


awesome, 6.001 was one of the best courses I took.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: