Live data from Hacker News

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

danweinreb.org

41–50 of 66 posts

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

#41
post #40

Earlier quoted context omitted.

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…

silentOpen - The only class in which the language has been changed due to the lack of Scheme in 6.001 is 6.034. As students branch out and take electives, there are plenty of opportunities to learn other programming languages - the UI class this year, 6.813/6.831 (undergrad/grad), had problem sets using Adobe Flex. My current Distributed Systems class (6.824), the Graphics class (6.837 - an undergrad elective), and t…

Your efforts may be better spent railing against why 40% of all undergrads graduate to take jobs in finance and consulting

I was going to make a snide comment wondering why Scheme was necessary for training future investment bankers and lawyers, but I just had anecdotal experience and didn't want to spread false information. Thanks for the numbers.

(Through chance I was a TA at MIT at the turn of the millennium. Pretty much everyone I taught had plans of working on wall street or going to law school.)

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

#42
post #17

Earlier quoted context omitted.

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 cour…

It's not just 6.01/6.001 -- it's the entire undergrad CS curriculum. Moving these classes toward Python because 6.01 found a Python robotics library (from MIT, coincidentally) does not justify moving other things to Python. Python's a great language, don't get me wrong but you're being misled if you think that popularity and marketability were not factors in selecting Python for the new course 6 curriculum. As for th…

Interestingly enough, I'm also an MIT '09 (hi) - and while yes, I loved the old curriculum and I wish they were still on it, you're making all these claims about the new curriculum that are simply not true. The "entire undergrad CS curriculum" has NOT changed to accommodate the shift to Python. 6.034 was the only one that changed at all.

6.006 does Python, but it's new and 6.046 had no practical edge to it at all. As a student who had a little bit of difficulty with the theoretical steps in 046, I can understand why they added the "test this and prove to yourself that this makes sense" exercises in Python.

As lame as it sounds, look into 6.00 - it's an "intro intro" programming class mostly required for Course 20 (Biological Engineering) students, but it's surprisingly robust as an introductory class - covering a lot of the topics you just listed, and well.

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

#43

Earlier quoted context omitted.

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.

Before 6.01 was introduced, MIT didn't have any required undergrad CS courses that required anything besides Scheme and Java! Is that much better? Frankly - I think if you're starting to argue simply based on language, you'll find few supporters.

The strengths of the old curriculum were the concepts you learned through 6.001 and using Scheme, not the Scheme skills themselves. Do I think 6.034 would be significantly different if I had to use Python versus Scheme? Not at all - and frankly using Scheme added nothing to my experience in that class.

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

#44
post #43

Earlier quoted context omitted.

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

Before 6.01 was introduced, MIT didn't have any required undergrad CS courses that required anything besides Scheme and Java! Is that much better? Frankly - I think if you're starting to argue simply based on language, you'll find few supporters. The strengths of the old curriculum were the concepts you learned through 6.001 and using Scheme, not the Scheme skills themselves. Do I think 6.034 would be significantly d…

It's not the language that is important, it's the programming style(s) the language supports. With Scheme and Java, you get a functional language (and one in which other paradigms can easily be implemented) and an OO-ish language. Pedagogically, I think that's superior to a sorta-functional-and-sorta-OO language and a OO-ish language.

I had a different experience in 6.034 than you did, I suppose. I think Scheme suited the class well and offered a nice way to express searches, minimizations, and decision systems. I'm sure you can do everything you can do in Scheme in Python but you could also do it in Java. Functional languages are particularly well-suited to these tasks. I wouldn't necessarily pick Scheme, though. Why not use the most appropriate tool for the job? If students have to learn a new language, OK. If you really do think Python is the best tool, OK.

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

#45
post #42

Earlier quoted context omitted.

It's not just 6.01/6.001 -- it's the entire undergrad CS curriculum. Moving these classes toward Python because 6.01 found a Python robotics library (from MIT, coincidentally) does not justify moving other things to Python. Python's a great language, don't get me wrong but you're being misled if you think that popularity and marketability were not factors in selecting Python for the new course 6 curriculum. As for th…

Interestingly enough, I'm also an MIT '09 (hi) - and while yes, I loved the old curriculum and I wish they were still on it, you're making all these claims about the new curriculum that are simply not true. The "entire undergrad CS curriculum" has NOT changed to accommodate the shift to Python. 6.034 was the only one that changed at all. 6.006 does Python, but it's new and 6.046 had no practical edge to it at all. As…

6.034, 6.046 (now 6.006), 6.001 (now 6.01), 6.02 all use Python. There are/will be more most likely. These are all new or refurbished classes to support the new curriculum. That's a pretty major shift.

I've helped a number of people with their 6.00 work and read quite a bit of the course material and I have to respectfully disagree. Students in 6.00 don't learn anywhere near what was taught in 6.001.

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

#46

Earlier quoted context omitted.

You don't believe in using the right tool for the job? In learning a variety of paradigms? Perhaps we have misunderstood each other. I'm not pushing Scheme or the metacircular evaluator as the totality of theoretical or applied computer science. My interest is entirely in the educational value of building a REPL versus, say, a robotic control system. MIT has a lot of robotics opportunities from clubs to IAP (winter t…

In fact, I believe it is possible with the new curriculum to graduate from MIT with a degree in CS and have never built a REPL or a compiler Hasn't this been the case since at least 1999?

6.001 was required and at least walked you through the construction of a metacircular evaluator. While this isn't building a compiler or interpreter (Scheme cheats), it seems to be more than we have now. :-(

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

#47
post #30
post #28

Earlier quoted context omitted.

I didn't do my undergrad at Stanford, but I'm here as a grad student, and I believe they use Java for the intro classes. They do teach Python and C eventually, but no Lisp AFAIK. I did my undergrad at Georgetown, where nearly every class used C++ (or C, for classes in things like OS and security).

I did undergrad CS at Georgetown too (hi). What year were you, if you don't mind me asking?

Hi! I graduated last year ('08). You?

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

#48
post #40

Earlier quoted context omitted.

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…

silentOpen - The only class in which the language has been changed due to the lack of Scheme in 6.001 is 6.034. As students branch out and take electives, there are plenty of opportunities to learn other programming languages - the UI class this year, 6.813/6.831 (undergrad/grad), had problem sets using Adobe Flex. My current Distributed Systems class (6.824), the Graphics class (6.837 - an undergrad elective), and t…

6.828 uses C. C++ and C are still the same paradigm as Python and Java. I'm glad these courses use the right language for their topic but they don't really expand your horizons.

I want to know where Lisp, ML, Prolog, and Smalltalk are. I'm particularly concerned about Lisp and ML (incl. Haskell and ML derivs). Does MIT just not care about FP any more?

If you're a CS student and you haven't seriously worked with functional languages by the time you graduate, something is wrong. There is nothing to prevent this now. Many students will not seek out these languages on their own but it is decidedly in their best interest to acquire experience with them and MIT, to produce 'well-rounded' computer science graduates, should require/encourage it.

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

#49
post #42

Earlier quoted context omitted.

Interestingly enough, I'm also an MIT '09 (hi) - and while yes, I loved the old curriculum and I wish they were still on it, you're making all these claims about the new curriculum that are simply not true. The "entire undergrad CS curriculum" has NOT changed to accommodate the shift to Python. 6.034 was the only one that changed at all. 6.006 does Python, but it's new and 6.046 had no practical edge to it at all. As…

6.034, 6.046 (now 6.006), 6.001 (now 6.01), 6.02 all use Python. There are/will be more most likely. These are all new or refurbished classes to support the new curriculum. That's a pretty major shift. I've helped a number of people with their 6.00 work and read quite a bit of the course material and I have to respectfully disagree. Students in 6.00 don't learn anywhere near what was taught in 6.001.

Right, but 6.00 is also not aimed at Course 6 students. I brought it up to provide an example of what I would've liked to see 6.01 / the intro 6 class be like, if they were going to Pythonize / simplify 6.001 at all.

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

#50
post #28

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…

I didn't do my undergrad at Stanford, but I'm here as a grad student, and I believe they use Java for the intro classes. They do teach Python and C eventually, but no Lisp AFAIK. I did my undergrad at Georgetown, where nearly every class used C++ (or C, for classes in things like OS and security).

I did my undergrad at Stanford, and after taking two simple intro courses, we had the first real intro to paradigms course (CS107). In that course, three languages were used: C++ (for a data structures project), Java (for an OOP and Concurrency project), and Lisp (for a context-free grammar project). I don't know if the course is still taught this way, but I thought it was great.
Post reply on HN