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…
I have been taking Carnegie Mellon graduate CS classes part time, and for the most part I have been able to use any programming language I want for assignments (within the bounds of "The TA knows at least enough of that language to read and understand your code"). I have used this as a fun excuse to learn a new language just to do the projects and assignments for a course. I've done this with Common Lisp, Python, and…
Why Did M.I.T. Switch from Scheme to Python?
31–40 of 66 posts
Re: Why Did M.I.T. Switch from Scheme to Python?
#32Earlier 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…
Note that I said, with added emphasis, "the practice of computer science has fundamentally changed." This idea rings true for me, as a systems researcher. I have to do as they describe to do my own research. "Library use is relatively easy" greatly underestimates the difficulty of accomplishing non-trivial tasks with new hardware, even in the presence of published specs and available library.
Also, answering your own rhetorical question even though you don't actually know the answer is not support for your argument.
Re: Why Did M.I.T. Switch from Scheme to Python?
#33At the end of the day, the department won't make the student great. To a degree, a driven and talented student can succeed anywhere, regardless of how many ooh's and aah's a name-dropping of their school will produce.
Re: Why Did M.I.T. Switch from Scheme to Python?
#34The title is a bit misleading. The gist of TFA is that MIT is switching from Scheme to Python in its INTRODUCTION TO PROGRAMMING course. That would seem to me to be a bit of a no brainer. I find python to be a much more acceptable alternative than BASIC in introducing people new to coder in a way that is more in line with sound computer engineering practices.
Why is this guy being voted down for a decently formed comment?
Re: Why Did M.I.T. Switch from Scheme to Python?
#35This 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…
While I understand the fondness many people feel for Scheme, building an entire CS curriculum around it strikes me as particularly problematic. Scheme and Scheme's approach to programming can, I'm sure, be useful as one part of a larger curriculum, but more often it feels as if I'm talking to someone who, say, learned how to take a derivative via limits, and then decided that it would be all right never to learn anything more about calculus in the course of a mathematics degree. By analogy, building a REPL given only a small set of atomic language bits to start with simply is not the totality of either theoretical or applied computer science, and should not be pushed as such.
Re: Why Did M.I.T. Switch from Scheme to Python?
#36Earlier 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…
Frankly, I know I would never hire anyone with your view of CS. While I understand the fondness many people feel for Scheme, building an entire CS curriculum around it strikes me as particularly problematic. Scheme and Scheme's approach to programming can, I'm sure, be useful as one part of a larger curriculum, but more often it feels as if I'm talking to someone who, say, learned how to take a derivative via limits,…
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 term) competitions to UROPs (undergrad research). MIT doesn't have a lot of REPL building opportunities.
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. That seems a little... misguided.
I don't rail against this change because I mourn Scheme or hate Python. I rail against this change because I feel it fundamentally weakens the quality of an MIT CS education.
Re: Why Did M.I.T. Switch from Scheme to Python?
#37Earlier quoted context omitted.
Frankly, I know I would never hire anyone with your view of CS. While I understand the fondness many people feel for Scheme, building an entire CS curriculum around it strikes me as particularly problematic. Scheme and Scheme's approach to programming can, I'm sure, be useful as one part of a larger curriculum, but more often it feels as if I'm talking to someone who, say, learned how to take a derivative via limits,…
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…
Hasn't this been the case since at least 1999?
Re: Why Did M.I.T. Switch from Scheme to Python?
#38Earlier 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…
How have I been misled regarding popularity and marketability? That is, what information do you have that I do not? Note that I said, with added emphasis, "the practice of computer science has fundamentally changed." This idea rings true for me, as a systems researcher. I have to do as they describe to do my own research. "Library use is relatively easy" greatly underestimates the difficulty of accomplishing non-triv…
"Library use is relatively easy" is not true for all cases; you are correct. 6.01 uses libraries which are well-built and relatively friendly. This is the first 6 class students take, after all. Classes later in the curriculum will have students using libraries of their own selection or writing compilers or operating systems for modern processors (should the student choose to take those courses). Between teaching fundamental concepts and teaching how to use a library, concepts should win out in introductory courses. Whatever skill it takes to use a library or documented system will be learned in time.
I don't absolutely know the answer to whether Caltech would do something similar but I would wager a great deal that they wouldn't. Have you looked at Caltech's required courses? Talked to Caltech students? Looked at MIT's required courses? Talked to MIT students? If you do, you will notice a very clear trend. Although MIT and Caltech are ostensibly peer institutions, the last two decades have seen a marked (relative) decline in the intensity and rigor of MIT's undergraduate programs.
Re: Why Did M.I.T. Switch from Scheme to Python?
#39There is a strong religious backing to Scheme being the only way to teach core CS fundamentals at MIT. I think that is an emotional almost fanboy reaction at times probably filled with heavy bias.
Python is a great balance of showing many sides of programming, it can be as eye opening as Lisp. Python is functional and object-oriented. Python is a simplifying tool and culture. All platforms used here should be simplifying.
Python can get you building market ready desktop applications, web applications, building robotics, scientific computing, game development, algorithms and AI and nearly anything out there Python is at the tip of the spear. Python is rapid iterations and prototype friendly. The frameworks of Python are more capable to wrap nearly anything, that is what software engineering is about now. It is the same evolution software process has taken from the CMM, to CMMI (supporting modular and libraries), to Agile and a more natural iterative process rather than top down design everything from the bottom up approach. You can still do that, it is just not the majority of software engineering today, and it will continue to simplify.
Are Scheme and Lisp programmers who are biased because they had that more hardcore bottom up technique really thinking this degrades the experience or is this more of a bias that is being attacked. Or has software engineering fundamentally changed?
Scheme will not go away. This does not mean that people will stop making compilers or REPL. It simply means the starting place is different. It might even drive some better compilers and multi-platform tools because of the quirkiness of many compiler systems out there will drive good engineeers to simplify that process.
That is what we do, we simplify problems.
I would argue Python makes for more marketable and capable graduates to be successful almost immediately after school, but I don't think it harms the fundamentals much. Good developers and engineers still take time to get better. No one is the best programmer in college, it takes time and experiences after the academics to be highly skilled. Python fits closely with computer science and is very capable of taking the torch.
I do think that there is a benefit to learning from a more difficult and core understanding because it is more downhill from there but Python is hardly the worst case scenario here.
I think that Python is perfect for teaching CS because of the flexibility, libraries, open source but support by Google (they are big on CS and like Python) and many other reasons.
What can you make in Scheme that you can't make in Python, very little.
Would you rather it be Java or C# they are teaching?
Re: Why Did M.I.T. Switch from Scheme to Python?
#40This 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…
There are constant opportunities within the MIT curriculum to learn other languages, and while I had the pleasure of taking 6.001, frankly - if an undergrad doesn't take advantage of any of those opportunities and leaves college only having used Python and Java, that's their flaw - not the Institute's.
Finally - to play devil's advocate in response to the REPL / compiler argument, of all of the assignments in 6.001, writing the metacircular evaluator gave me the least accurate representation of the power of computer programming as a whole. While it was an interesting exercise, if I had been interested in language design, I could have taken an elective more focused on the topic - as is still an option at the Institute.
I think your claims about the tragic decline of the quality of an MIT CS education are a bit dramatic - few MIT students seriously considering a career in computer science graduate as lopsided as you seem to believe. Your efforts may be better spent railing against why 40% of all undergrads graduate to take jobs in finance and consulting, despite the vast majority of students graduating with engineering degrees. (Source: http://web.mit.edu/career/www/infostats/graduation.html)
ubernostrum - a point of clarification, the "entire CS curriculum" was never built around Scheme. 6.034 was the only class that used Scheme after 6.001. I believe a graduate class existed in the recent past that also focused on Scheme and its interesting properties as a language.