Live data from Hacker News

Why Did M.I.T. Switch from Scheme to Python?

danweinreb.org

11–20 of 66 posts

Re: Why Did M.I.T. Switch from Scheme to Python?

#11
post #2

This issue is a fundamental one that everybody teaching programming or computer science must answer. Is it better to teach CS from the ground up or top down? The ground up approach is something like SICP, with fundamentals in lambda calculus or Turing machines. Students learn rules such as how a Lisp evaluates an expression and write programs which apply the rules. It's not necessary that this be taught using Lisp, b…

Unfortunately, when MIT moved from 6.001 in Scheme to 6.01 in Python, they also changed later courses to Python because now students wouldn't have Scheme experience.

This results in: 6.005 ("software engineering") in Java 6.006 (intro to algorithms) in Python 6.034 (intro to AI) in Python 6.035 (compilers) in Java

(6.005 was 6.170 which used Java and 6.035 has always used Java afaik so this list isn't all the new curriculum's fault... but it does give a good overview of MIT's undergrad CS decline)

Frankly, this is unacceptable. I'm not sure I would hire an MIT CS grad that did the new curriculum. It is absolutely absurd that MIT (which purports to have one of the best CS programs in the world) is teaching Java and Python in their undergrad CS curriculum even in places where Java and Python are not the best suited (compilers!? algorithms!? AI!?). For instance, one 6.005 pset is to build a Sudoku solver... in Java. Every MIT undergrad should have the ability to learn a new programming language. 6-3 students (CS majors) should especially be able to do this. MIT is getting watered down.

Students don't learn other programming paradigms and they learn to accept the bloat and poor design decisions of the required languages. Where once students would build a text adventure and a metacircular evaluator in Scheme for 6.001, they now build what amount to Lego Mindstorms kits. Seriously?

Re: Why Did M.I.T. Switch from Scheme to Python?

#12

I find this justification downright weird. Yes, a class like 6.001 is an extremely purified and unrealistic view of modern software engineering. But the same could be said of any theoretical subject. The people at the Large Hadron Collider are probably spending a lot more time reading 300-page technical manuals than they are reading Feynman. A lot of the charm of academia, to me, is that it gives you some breathing r…

From what I've been reading about this issue, I think many people are missing one important point: 6.001 was an introductory course, the contents of which would be rehashed and expanded in several later courses. That the contents of this course has changed does not mean that MIT students do not learn about these concepts anymore.

Sort of... I don't think MIT has any required undergrad CS courses that use ~(Python || Java). I'd call that a problem.

Re: Why Did M.I.T. Switch from Scheme to Python?

#13
I'm graduating from MIT (hopefully) in under a month with a degree in CS. The new curriculum is an abomination. If you are teaching some of the (supposedly) brightest students in the world, you shouldn't worry about teaching marketable skills or using popular languages. Your students should be able to pick up a new language easily.

Luckily, I took all old-curriculum classes. If I were a student entering college for CS now, I would not choose MIT. I don't know other schools' curricula in depth but some place has got to be more rigorous (Berkeley? Stanford? CMU?).

Re: Why Did M.I.T. Switch from Scheme to Python?

#14
Teaching has always to do with bringing something really new and perfect to a still quite fresh mind.

So, when teaching, you always need to bring the simple and perfect theory.

Practice is what your students will make out of your 'perfect' theory -- slumming down quite a bit -- but if you start with bringing a 'practical' theory to begin with, your students will never learn to fly high (bringing in some really fresh new ideas).

Re: Why Did M.I.T. Switch from Scheme to Python?

#16
post #2

This issue is a fundamental one that everybody teaching programming or computer science must answer. Is it better to teach CS from the ground up or top down? The ground up approach is something like SICP, with fundamentals in lambda calculus or Turing machines. Students learn rules such as how a Lisp evaluates an expression and write programs which apply the rules. It's not necessary that this be taught using Lisp, b…

Unfortunately, when MIT moved from 6.001 in Scheme to 6.01 in Python, they also changed later courses to Python because now students wouldn't have Scheme experience. This results in: 6.005 ("software engineering") in Java 6.006 (intro to algorithms) in Python 6.034 (intro to AI) in Python 6.035 (compilers) in Java (6.005 was 6.170 which used Java and 6.035 has always used Java afaik so this list isn't all the new cur…

Quite frankly I'd rather be working with robots than building text adventure games (been there, done that: when I was 13). And while building a meta-circular evaluator is interesting, I don't see how it can be considered a central tenet of introductory computer science. Also, both Python and Java have implementations that are meta-circular (PyPy, Jikes RVM, and Squawk), so it's not like you're shutting the door on these concepts to beginner students by bootstrapping them with conceptually-limited languages.

Re: Why Did M.I.T. Switch from Scheme to Python?

#17

I'm graduating from MIT (hopefully) in under a month with a degree in CS. The new curriculum is an abomination. If you are teaching some of the (supposedly) brightest students in the world, you shouldn't worry about teaching marketable skills or using popular languages. Your students should be able to pick up a new language easily. Luckily, I took all old-curriculum classes. If I were a student entering college for C…

The arguments for changing the course do not include teaching marketable skills or using popular languages. The main argument is that the practice of computer science has fundamentally changed since the course was originally developed.

The argument is that computer scientists rely more on existing libraries and systems that often require fundamental research for an individual to comprehend. They have changed the course to reflect this using robotics and a library to control the robots. That library happens to be written in Python. They didn't start with "Let's change to using Python" and develop the course around that.

The validity of this argument is debatable. But I don't think your reasons address it at all.

Re: Why Did M.I.T. Switch from Scheme to Python?

#18
post #2

This issue is a fundamental one that everybody teaching programming or computer science must answer. Is it better to teach CS from the ground up or top down? The ground up approach is something like SICP, with fundamentals in lambda calculus or Turing machines. Students learn rules such as how a Lisp evaluates an expression and write programs which apply the rules. It's not necessary that this be taught using Lisp, b…

Unfortunately, when MIT moved from 6.001 in Scheme to 6.01 in Python, they also changed later courses to Python because now students wouldn't have Scheme experience. This results in: 6.005 ("software engineering") in Java 6.006 (intro to algorithms) in Python 6.034 (intro to AI) in Python 6.035 (compilers) in Java (6.005 was 6.170 which used Java and 6.035 has always used Java afaik so this list isn't all the new cur…

The program I was in didn't even try to do things like this. Web course? Use perl. OS course? Use C. Soft Eng? Use Java (people demanded at least one Java course). If you can't learn the appropriate language within the first week of the course, you probably should have a different major.

Naturally some people were very upset about this, but it definitely made for a better program all in all.

Re: Why Did M.I.T. Switch from Scheme to Python?

#19

I'm graduating from MIT (hopefully) in under a month with a degree in CS. The new curriculum is an abomination. If you are teaching some of the (supposedly) brightest students in the world, you shouldn't worry about teaching marketable skills or using popular languages. Your students should be able to pick up a new language easily. Luckily, I took all old-curriculum classes. If I were a student entering college for C…

looks like 61a at cal is still scheme based (http://inst.eecs.berkeley.edu/~cs61a/sp09/) and still taught by the incomparable Brian Harvey. damn I loved that class.

Re: Why Did M.I.T. Switch from Scheme to Python?

#20

I'm graduating from MIT (hopefully) in under a month with a degree in CS. The new curriculum is an abomination. If you are teaching some of the (supposedly) brightest students in the world, you shouldn't worry about teaching marketable skills or using popular languages. Your students should be able to pick up a new language easily. Luckily, I took all old-curriculum classes. If I were a student entering college for C…

What remaining classes do you think best exemplify the old curriculum?
Post reply on HN