6 ms·
Every time a university switches their Intro to Computer Science course from C or C++ to Java, a kitten dies.
by LiveTheDream 17y ago
Every time a university switches their Intro to Computer Science course from C or C++ to Java, a kitten dies.
- WalterGR 17y agoWhat about if they use Scheme instead? Or switch not from C/C++ to Java, but from Scheme to Python?
- Locke1689 17y agoHave a three-letter university in mind? ;)
- jdp 17y agoNew Jersey Institute of Technology has recently switched from Java to Python. I remember seeing my classmates struggle with the syntax of Java rather than struggling with the actual problem, I'm interested to see the results of the switch.
- hga 17y agoHeh. Or sigh. And actually it was from Scheme to Python and Java. The software engineering course changed from CLU to Java a long time ago and that was fine, but the new course (6.005) that's a bridge between the intro "make neat things using Python" courses to it, that in theory tries to teach the bulk of what's in SICP, uses Java. For that purpose Java is not even wrong. MIT's EECS department panicked when enrollment crashed after the dot.com bubble burst (for the previous quarter century or so they had 2/5ths of the undergraduates (!!!)) and it was decided from on high to change the very nature of its CS foundation and to purge Scheme from the base curriculum. You can find Sussman's comments on this here and there; here's one paraphrase: http://muckandbrass.com/web/display/~cemerick/2009/03/24/Why%20MIT%20now%20uses%20python%20instead%20of%20scheme%20for%20its%20undergraduate%20CS%20program http://muckandbrass.com/web/display/~cemerick/2009/03/24/Why... Although I can't at the moment find the sharpest direct quote of him, very roughly, it's a change from understanding what's really going on to patching together libraries. Now, this is in the cause of building really interesting things, or that is my trying to put a positive gloss on it all and my impression of what it's actually accomplishing. If you're a pure CS type this is an unmitigated disaster ("So the reason, basically, is that software today is a train wreck, and you might as well embrace helplessness and random tinkering from the start? Horrifying." Andy Hefner, http://www.wisdomandwonder.com/link/2110/why-mit-switched-from-scheme-to-python#comment-310 http://www.wisdomandwonder.com/link/2110/why-mit-switched-fr...) and you should go to one of the other top schools like Berkeley, where they still teach SICP. If you want to go out into the world and make cool stuff, it's probably still pretty good to great.
- pkulak 17y agoThat's just silly. What does C++'s language cruft have to do with CS? The C languages are actually missing a lot of the important concepts, like lambdas, and discourage other important things like recursion.
- LiveTheDream 17y agoIMO the problem is not so much transitioning away from C++, but to Java. Java is great, and the JVM is especially cool, but I think it's a bad place to start CS education. I saw this C++ to Java transition happen firsthand at a university and compared to before, students developed handicaps on the IDE and had a much harder time grasping concepts like memory management. (Saying you will never write a memory manager in the workplace is irrelevant; it's a learning exercise just like writing quicksort). Also, Java doesn't cover lambas or recursion any better than C++. Part of the fallout that I witnessed was due to bad planning, since later courses expected students to have knowledge that they never picked up in the new intro course. I guess ultimately it just comes down to the student and the professor, not the language, but my view is tainted from that experience.
- pkulak 17y agoYeah, I left Java out of my argument because I agree with you 100%. I think Scheme or Ruby would be much better.
- jemfinch 17y agoWhat does C++'s language cruft have to do with CS? Generic programming, among other things. The C languages are actually missing a lot of the important concepts, like lambdas, Lambdas are functions without names. They're not important concepts, they're really just syntactical sugar. and discourage other important things like recursion. Just because the language doesn't require TCO doesn't mean it discourages recursion; it just discourages teaching recursion with trivial examples like factorial. Quicksort, for instance, would be an excellent place in a C or C++-based course for teaching recursion.
- 17y ago
- Locke1689 17y agoHmm, Fundamentals of Computer Programming II (for majors) is taught in Scheme at Northwestern... I happen to think that's the right decision.