The "debate" had an interlude, in which Costanza asked Sussman why MIT had switched away from Scheme for their introductory programming course, 6.001. This was a gem. He said that the reason that happened was because engineering in 1980 was not what it was in the mid-90s or in 2000. In 1980, good programmers spent a lot of time thinking, and then produced spare code that they thought should work. Code ran close to the metal, even Scheme -- it was understandable all the way down. Like a resistor, where you could read the bands and know the power rating and the tolerance and the resistance and V=IR and that's all there was to know. 6.001 had been conceived to teach engineers how to take small parts that they understood entirely and use simple techniques to compose them into larger things that do what you want.
But programming now isn't so much like that, said Sussman. Nowadays you muck around with incomprehensible or nonexistent man pages for software you don't know who wrote. You have to do basic science on your libraries to see how they work, trying out different inputs and seeing how the code reacts. This is a fundamentally different job, and it needed a different course.
So the good thing about the new 6.001 was that it was robot-centered -- you had to program a little robot to move around. And robots are not like resistors, behaving according to ideal functions. Wheels slip, the environment changes, etc -- you have to build in robustness to the system, in a different way than the one SICP discusses.
And why Python, then? Well, said Sussman, it probably just had a library already implemented for the robotics interface, that was all.
>>2
Actually, the bluntness and finality of the last sentence is what makes this anecdote particularly humourous.
Name:
Anonymous2009-03-24 19:45
#define all 0
rand(all);
Name:
Anonymous2009-03-24 19:48
/221/
lol so random xD
Name:
Anonymous2009-03-24 20:02
prime number get
Name:
Anonymous2009-03-24 20:07
smallest noncototient get
Name:
Anonymous2009-03-24 20:28
smallest two digit prime palindrome get
Name:
Anonymous2009-03-24 20:42
property that didn't come straight out of wikipedia get
first two prime gaps get
Name:
Anonymous2009-03-24 20:47
composite number get
Name:
Anonymous2009-03-24 20:49
Floor of (the amount of dalmations in disneys 101 dalmations divided by eight), plus two
Name:
Anonymous2009-03-24 20:51
Oh! You pretty things!
Name:
Anonymous2009-03-24 21:51
combo breaker get
Name:
Anonymous2009-03-24 21:55
First ``Hax my Anus'' reference GETTO
Name:
Anonymous2009-03-24 22:28
>>2
It doesn't need to be funny. It really happened.
Name:
Anonymous2009-03-25 3:13
Now this is just sad.
Name:
Anonymous2009-03-25 3:32
OP is a troll.
Name:
Anonymous2009-03-25 5:03
Having taken the new MIT course with Python (6.01), I would like to be the only person here to stick up for it. While it is still a work in progress, they have made some significant improvements since the old SICP days.
The structure of the current class does not "replace" the old 6.001 fully, but rather offers quite a different angle. When one enters 6.01 on the first day, it is already assumed that one knows how to program: functionally, procedurally and recursively. They only offer a one-day review lecture of OOP. If you don't have significant experience with programming, or have never used python before, you definitely will have a hard time adjusting.
However, the purpose of this class is more than programming. It teaches an array of large conceptual ideas, starting first with basic OOP and building up to state machines and system functions. It is about this point that the students begin to notice that everything that they're doing is quite interrelated--they are programming the "brains" or a robot, something that is very rewarding when one watches the simulations (both virtual and real life) run.
The course then moves on to circuits and many EE topics. This course isn't about SICP; it is not supposed to be. It has a completely different aim. While it is quite different from the 6.001 of old, it teaches many new things that are infinitely suitable for the modern world that one would have never touched upon in 6.001.
Name:
Anonymous2009-03-25 5:04
Sussman is a troll.
Name:
Anonymous2009-03-25 5:13
The significance that Scheme really provided is the correct way of decomposing a problem and coding it up. Iteration is a construct that doesn't (lexically) exist in Scheme, thus when one promotes themself from problems that can be solved iteratively to ones that MUST be solved recursively there is no major hangup in the thinking. In addition, concepts such as dynamic programming go from a paradigm shift in programming to a simple macro.