views:

1330

answers:

5

MIT abandoned its legendary 6.001 (Structure and Interpretation of Computer Programs) course and replaced it with 6.00, 6.01 and 6.02 in the new curriculum. They are AFAIK about Python and robots. What is your opinion about the loss of SICP and Scheme in computer science education? Is it a necessary step in the right direction or a bad mistake?

A: 

I'm sure that MIT teaches a functional language later on in their curriculum. To do otherwise would be to leave the functional side of lots of more advanced computer science topics out in the cold, as an introductory course can only touch on so much. Python has some functional elements in it, like lambda functions and it even has a map function! I attend Carnegie Mellon and we don't hit on a functional language (Standard ML) until typically sophomore year. So all is not lost...

mhahnenb
A: 

At my uni (UQ) I was in the second last group of students to go through a subject that was practically 6.001. I enjoyed it as it was something I'd never encountered before. I'm largely undecided about the whole switch. It's a shame because it was advantageous to know, but Python will (arguably) be more "practical" in industry

mdec
+1  A: 

I was taught Scheme as part of my introduction course at University (ITCR, heh) and, as probably as "uninteresting" or "useless" as Scheme might be considered nowadays, I thought starting with that was a pretty fascinating idea and was pretty useful as a way to introduce useful terms and concepts in functional languages and programming in general. Curiously, as soon as I was done with the course, subsequent semesters started to use Python along with Scheme, probably to make a gradual transition into Python-only. It's not necessarily a shame, but losing a functional language as the first before going into OOP and other concepts seems like a lose to me. Python is used in many other courses anyway.

Sergio Morales
+15  A: 

SICP is so much more than learning a programming language, it's about fundamentals like language design and elemental program design. Scheme is crucial to this, as its simplicity is essential as a platform for language implementation and experimentation.

While Python is an excellent choice as a language itself, it's an order of magnitude more difficult to implement a Python interpreter or compiler than it is with Scheme. So the debate shouldn't be Python vs. Scheme as a practical language, it should be Scheme vs. Anything as a suitable language for learning about languages themselves, and to my mind there is no better choice.

Fortunately we can get a glimpse of 6.001 and SICP on the web ([1], [2]), but the world can only become intellectually poorer if universities start handing out fish instead of teaching people how to fish (or how to conjure up their own superfish.)

(1) http://mitpress.mit.edu/sicp/ (2) http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/

Matt Curtis
+1 for the superfish imagery
Inaimathi
+2  A: 

Abelson and Sussman's goal is to teach students about computation; not to promote Scheme.

Using Python is an experiment in teaching, and it is very much in the spirit of Scheme! :)

SICP will always be a classic, that will never change.

grettke