4 ms·
This series is brilliant. Why don't they teach computer science this way any more? I was so disappointed to learn that MIT switched from Scheme to Python in Pro
by cup-of-tea 9y ago
This series is brilliant. Why don't they teach computer science this way any more? I was so disappointed to learn that MIT switched from Scheme to Python in Programming 101.
- yorwba 9y agoTheoretically, all the same concepts could be taught in Python as well, but I doubt they are doing that. Many of the more mind-bending things that are made relatively easy in Scheme due to the uniform syntax and small core actually become much more complex to do for Python (e.g. writing a self-interpreter).
- bitwize 9y agoThe reason why is because in the 80s it was useful to build up programs from scratch. So you could build an introductory course around that and even use an arcane language like Scheme, which the students are bound to almost never encounter in real-world usage, to illustrate the principles. These days, to teach someone real-world software development, you have to show them how to find and use a library that does what they want, or maintain an already-existing code base -- use cases for which Python is a much better fit. Building a program up from scratch is almost never done.
- hjek 9y ago> an arcane language like Scheme, which the students are bound to almost never encounter in real-world usage Posted on a site running on MzScheme.
- vram22 9y ago>> an arcane language like Scheme, which the students are bound to almost never encounter in real-world usage >Posted on a site running on MzScheme. Posted on a site running MzScheme, that probably tens, if not hundreds of thousands of people, read often, get useful info from, that is of help to them in the real world, and that many people get jobs from.
- erikj 9y agoThis shift of focus from fundamental computer science to "real-world software development" training seems to be short-sighted and more appropriate for a vocational school or a coder bootcamp rather than a place like MIT.
- dragonwriter 9y agoIn the 1980s, people used libraries and maintained already existing code bases in "real-world software development", too. Computer science education isn't just vocational training for software development gruntwork, though.
- brudgers 9y agoYes. As Perlis put it: 54. Beware of the Turing tar-pit in which everything is possible but nothing of interest is easy. Unlike Scheme, Python requires extensive research of the documentation in order to get the correct syntax and semantics even for the simple code in SICP. It's not just simple facts like operator precedence, it's the conceptual baggage of statements versus expressions. It's the one true way of iteration rather than recursion. It's the arbitrary distinctions of a core language, built in functions, a standard library and PiP. And Python has objects just because. But everything isn't an object. SICP was an introductory programming class (though obviously being used at MIT allowed certain assumptions).
- fulafel 9y ago"[...] Costanza asked Sussman why MIT had switched away from Scheme for their introductory programming course, 6.001. This was a gem. He said that the reason that happened was because engineering in 1980 was not what it was in the mid-90s or in 2000. In 1980, good programmers spent a lot of time thinking, and then produced spare code that they thought should work. Code ran close to the metal, even Scheme -- it was understandable all the way down. Like a resistor, where you could read the bands and know the power rating and the tolerance and the resistance and V=IR and that's all there was to know. 6.001 had been conceived to teach engineers how to take small parts that they understood entirely and use simple techniques to compose them into larger things that do what you want. But programming now isn't so much like that, said Sussman. Nowadays you muck around with incomprehensible or nonexistent man pages for software you don't know who wrote. You have to do basic science on your libraries to see how they work, trying out different inputs and seeing how the code reacts. This is a fundamentally different job, and it needed a different course. [...]" (From http://wingolog.org/archives/2009/03/24/international-lisp-conference-day-two http://wingolog.org/archives/2009/03/24/international-lisp-c...)
- cup-of-tea 9y agoSurely the best engineers writing code for cars and aeroplanes are not programming like this? MIT is teaching people to be web devs.
- sokoloff 9y agoOne of the most common complaints about MIT CS (from outsiders and hiring managers) is that it’s not practical enough. There’s very little “applied” industry CRUD-type programming in the curriculum. I think this is a good thing, but also lament the changes in 6.001.
- msla 9y agoIf courses were less expensive, they could afford to be less practical. Maybe this wouldn't quiet the hiring managers, but it's easier to tell someone to screw off when what you're selling isn't a huge investment which has been built up to be vitally important to justify that pricetag.
- vram22 9y ago>This series is brilliant. Why don't they teach computer science this way any more? I was so disappointed to learn that MIT switched from Scheme to Python in Programming 101. Does anyone know why they did that? I did read about it around the time, but do not remember reading about the reasons. As a Pythonista, and one interested in Lisp, I'd like to know. Update: Okay, I was going sequentially and did not at first see a few answers (sibling comments) below. Still, if anyone else has any insights, interested to know more.
- PricelessValue 9y agoIt's ridiculous. My university tried to switch the CS program from C/C++ ( OS, networking, etc ) and Scheme ( functional, programming languages, etc ) to java and there was a mass movement against it and we kept the "traditional" languages. I don't know why there is such a movement in academia to dumb down everything.
- 0x445442 9y agoOne reason might be because their (academia's) customers demand a return on investment. And that return is difficult to realize when Recruiter Joe is screening you for a job and asking how many years of "The Java" you've had. Don't get me wrong, this is in no way an argument against what you said. I'm just offering up a possible answer.
- erikj 9y agoTheir demands should be fulfilled by vocational schools, not universities.