5 ms·
Well, MIT started the Scheme for education thing with SICP/6.001 (https://en.wikipedia.org/wiki/Structure_and_Interpretation_of_Computer_Programs https://en.wik
by hga 11y ago
Well, MIT started the Scheme for education thing with SICP/6.001 (https://en.wikipedia.org/wiki/Structure_and_Interpretation_of_Computer_Programs https://en.wikipedia.org/wiki/Structure_and_Interpretation_o...) in the early '80s, the thesis being that you could start fresh with it, no introduction to computers or the particular language used in the course, and get right to business, instead of wasting half the class between learning a more complex and picky syntax and fighting with the language to express things not natural to it.
It's also default interpreted, so the write code->run code cycle is instantaneous (although the ones MIT used had compilers, and nowadays machines are so fast LISPs tend to immediately compile everything typed into the REPL). Typing is of course important, the argument here is that for initial education, dynamic typing when these small programs are run is better than adding the complexity of declaring types, especially since so few are needed in an introduction course.
A CS (and EE, i.e. 6-3) or EECS (6-2, what most students major in today) major would learn CLU, later Java, when they took either the software engineering or compiler course. And of course there were many opportunities to learn languages and get paid for programming, including the co-op program, which is now mostly formalized into a MEng program that most students do.
The dot.com crash cratered EECS enrollment, which had been steady at 40% of the undergraduate for decades, it dropped by more than half. People panicked, Lisp haters made sure all of it was expunged from required undergraduate courses, and MIT just plain changed what it meant to be a MIT EECS graduate. With a lot of surface politeness, here's one for the record explanation: http://www.wisdomandwonder.com/link/2110/why-mit-switched-from-scheme-to-python http://www.wisdomandwonder.com/link/2110/why-mit-switched-fr...
It's now much more about making gadgets than, oh, trustworthy libraries. Pity almost no one, proprietary or FOSS, provides any of the latter. A portion of 6.001 is taught by the 6.001-zombies in January, with credit available for the first N who sign up, as 6.037, and if you don't know Python when you arrive, there's courses which will teach you it before you take the new 6.01 that pretends to start replacing 6.001.
Or, if you're really serious about pure CS, you're likely better off going to some place like CMU if you can get into the program. (I got the impression some years ago when CS became popular again that Stanford is more like CMU and U.C. Berkeley more like MIT, but I don't know if that's true or still true. If you're serious about CS and can't get into one of those 4 best in the world with no one close behind, you should think very carefully about your path forward.)
- nickpsecurity 11y agoWow, that was some quote by Sussman. Terrible. However, they will be more skilled at dealing with the crap industry will throw at them. Far as trustworthy, at least we're seeing a minor resurgence of that. I write about many of those techs. I think Ocaml community is one of best examples. There's an inherently robust language, a good compiler, integration with formal methods via Coq extraction, smart academics invested in it, uptake in industry (i.e. Jane St), and mainstream uptake to a degree. Leroy et al have something really good going on there. Need more academic stuff like that.
- agumonkey 11y agoMy old univ caved in too. They retired the lisp/recursive introductory course for a python one centered on component/libraries IIUC.
- nickpsecurity 11y agoAt least Python is one of the higher quality languages and codebases to go mainstream. The code they make might at least be readable...
- hga 11y agoThe biggest problem I see with it is the author's allergy of functional programming. He even attempted to remove some of the existing ad hoc FP features in the move to Python 3 or the like. Hence my comment about wasting time fighting the language. It plus Java, as MIT and I'm sure many other schools do (those that aren't just pure "JavaSchools") are going to leave students who don't make extra effort ... deficient when it comes to FP, the virtues of which I don't need to extol to you, although I'll add that it seems to be one of the good answers to making the most of our current "Moore's Law maybe", "Dennard scaling no" multi-core situation.
- nickpsecurity 11y agoI came from an imperative background so it didn't bother me so much. I agree it makes people suck at FP. Least there's good free work like "How to Design Programs" with the Racket tools. Should give them a nice boost. However, there's lots of ways to scale. FP is better at it but not necessary. It's easier for a decent imperative programmer to learn to scalable concurrency than to learn FP. So, path of least resistance & backward compatible means that non-FP approaches should get most traction. That's what we see in practice. Good news is that your point got many interested in making an attempt and led to more FP developers + languages. I even saw a case study of a company in finance using Haskell for production due to concise, correct, and concurrent properties. Plenty potential here.