Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon.

Pages: 1-

SICPy

Name: Anonymous 2011-06-27 5:33

>yfw the SICP course at MIT is now being taught in Python

Name: Anonymous 2011-06-27 5:38

I'm OK with this.

really, if the world keeps getting pumped with unenlightened programmers that's fine by me. Makes me look better.

Name: Anonymous 2011-06-27 5:48

Nothing wrong with Python. After writing the metacircular evaluator in Scheme I was able to write a Scheme interpreter in Python in one evening. It's been my favorite scripting language for some time now.

Name: Anonymous 2011-06-27 5:51

>>2
SICP is not about Scheme. I hope your enlightenment illuminates that fact.

Name: Anonymous 2011-06-27 6:03

I’ve been seeing mail and blog postings, particularly from people in the Lisp community, why MIT has switched from using Scheme to Python in the freshman core curriculum for the department of Electrical Engineering and Computer Science.

At the International Lisp Conference, Prof. Gerry Sussman gave a short impromptu talk explaining the new freshman curriculum.  Just to get a second opinion, I later called Prof. Jacob White, one of the designers of the curriculum and lecturers for the core courses.  (Digression: Jacob and I have been close friends since I was six years old!)  He confirmed Gerry’s description.

Asking why they changed languages is, in some sense, the wrong question.

The freshman software engineering course, since 1985, has been based on the book Structure and Interpretation of Computer Programs (known as SICP), which uses Scheme.  The course is now nearly thirty years old.  Engineering has changed quite a lot in thirty years.  Since 1995, Gerry and his co-author Prof. Hal Abelson have advocated changing the freshman curriculum radically, not basing it on SICP.

In 1980, computer engineering was based on starting with clearly-defined things (primitives or small programs) and using them to build larger things that ended up being clearly-defined.  Composition of these fragments was the name of the game.

However, nowadays, a real engineer is given a big software library, with a 300-page manual that’s full of errors.  He’s also given a robot, whose exact behavior is extremely hard to characterize (what happens when a wheel slips?). The engineer must learn to perform scientific experiments to find out how the software and hardware actually work, at least enough to accomplish the job at hand.  Gerry pointed out that we may not like it this way (“because we’re old fogies”), but that’s the way it is, and M.I.T. has to take that into account.

The new approach also has the big advantage that it combines computer science with electrical engineering, whereas the old one taught them as entirely separate disciplines.  This way, students see how they interrelate.  Also, as Jacob points out, some of the same macro-principles apply to both software and hardware, and the students see this illustrated.  There is extensive lab work, making robots and mobile applications.

It just so happens that the robotics substrate software that comes with the system they’re using is programmed in Python.  Similarly, the mobile software environment is based on Python.  (Or, at least, the original plan was to use such a substrate, although it may have changed for various business reasons.)

Changing programming languages was absolutely not a goal of the curriculum change.  It was merely the result of the consequences of various decisions.  We can always discuss how it came to be that the robots and mobile devices are using Python instead of some other language, but that’s not the question being addressed here.  M.I.T. has nothing against Scheme. (And, of course, M.I.T. does teach classic software engineering, later in the curriculum.)

Name: Anonymous 2011-06-27 6:47

>>3
Reminds me that I need to finish my SICP some day.

I started it a few years ago but didn't finish the first chapter (IIRC).  Started playing around with Common Lisp for fun in the past couple weeks, but I could start using Scheme too if I'm gonna do SICP.

Name: Anonymous 2011-06-27 13:11

>>3
There is lots wrong with Python. Lots. I don't even know where to begin. It's semantics are just hideous and undesigned.

Why have both objects and dictionaries? Why have both duck-typing and type-dispatch? Why have both closures and classes? Why have both second and first class functions? Why have both a stack and a garbage collector? nonlocal? wtf? why have both generators and closures? Why not abandon the fucking stack and have real coroutines/continuations? why why why why? Every time I use Python I feel like everything in the language is an insult to my intelligence.

>>4
SICP is about lots of things Scheme demonstrates better than Python does, like lexical closures and simple eval/apply loops. Imagine writing a Python parser/interpreter. That is not a freshman-level task.

>>5
>Gary Sussman thinks kids don't need theory any more.
>MIT believes that CS is about robotics and mobile development
>rain of frogs. any day now.

Don't change these.
Name: Email:
Entire Thread Thread List