5 ms·
While some of this makes sense... this "Undergraduate courses lose their technical currency in something like five years on average" sticks out like a sore thum
by imok20 17y ago
While some of this makes sense... this "Undergraduate courses lose their technical currency in something like five years on average" sticks out like a sore thumb.
How well would we be served if C were taught in undergraduate programs? In depth. Add to that a Lisp and Java, and who knows what we would be capable of in a shorter timeframe? C and Java have not gone obsolete, and along with Lisp, many different paradigms of programming are taught. Not only that, but technical skill with important and oft-used languages would be transferred.
I add Lisp simply to include another paradigm and because it's an old concept that's never really gone away, and seems to be gaining traction (see this site, see Clojure, see the continuing development and expansion of Scheme and CL and Gambit etc etc.)
- markdennehy 17y agoIt does stick out... but apparently too far as it blocked out the following qualification "(obviously different sectors age at different rates – web programming has a very fast cycle, embedded systems a very slow one)". C is a systems language, it's been around forever and is not about to be replaced anytime soon, possibly anytime in our lifetimes. It's too good at what it does. And that's why it's taught in a lot of universities. As is Lisp, for the reasons you mentioned. As is SQL. As are several others (though I'd disagree with Java myself because it's really more set up to do things than to teach things and there are too many shortcuts in there - but many others disagree with me on that point :) ). I'm not for getting rid of established languages from courses. C is 37 years old; C++, 30 years; Lisp, 51 years; Objective C, 23 years - these are well-established languages that won't vanish in the four-year span of an undergrad course. Java at only 14 years (and so many releases that stability is a valid question) tends (to my mind at least) to mark the start of the gray area there. Some though, like Perl and C++, are really hard to teach in compared to others and that can outweigh their stability as a factor. Still though, I look at languages like Python and would love to work them into a course. But it is still a risk for the students. Maybe for the final year work though. But teaching a four-year course using Ruby as a primary language, intellectually interesting as that sounds, is an unethical act at the moment. It's a beautiful language, a real joy even to read - but what the students start learning on day one may not be around, or be a useful thing to know for the jobs they'll pay their mortgages with four years down the line. That's the responsibility the university is taking on when it creates a course. The student invests four years of their life - the university must produce a return on that, and conservative thinking is needed for that.
- imok20 17y agoAnd that's exactly the problem. In liberal arts educations (such as the one I'm receiving) or even at universities such as MIT, Python is the language of choice. It's great fun to teach, very easy to learn, but it's not an industry standard, and many would argue that it's too easy to use.
- alexgartrell 17y agoBeing the introductory language of choice doesn't make it the language of choice. MIT kids learn the real stuff too.
- sketerpot 17y agoPython is "the real stuff", and I'm always annoyed by the snobbishness that leads some people to dismiss it. Python is an excellent language, with a large user base, and some compilers in the works. Just because C is hardcore and Lisp is amazing and Haskell is mind-exploding doesn't mean that Python isn't a great language.
- brown9-2 17y agoAre you really saying that Python is "not useful"?
- imok20 17y agoThat was a mistake: Python is QUITE useful. But I wouldn't call it an industry standard. Corrected.
- dagw 17y agoReally? Python seems to be showing up everywhere I look. I don't think I've seen any largish company in quite a while that wasn't using python for something somewhere.
- markdennehy 17y ago
- spamizbad 17y agoIt's easy to point to Java and C as stalwart success stories in hindsight, but I can recall with Java there was a tremendous amount of histrionics from the C++ and VB crowd claiming that Java was merely another passing fad. C faced down Pascal and COBOL, two languages which were considered far more favorable to programmers at the time. ---- I feel sorry for CS/CEng departments these days, as they're facing pressure from both sides: The industry wants more vocational-style training, and students want "real world" experience but also want a world-class western liberal arts education. It's as if their idea of a perfect school is one with the prestige of Harvard married with the curriculum of DeVry. I'm afraid you cannot have both.
- imok20 17y agoI can't imagine a better course than writing a Lisp interpreter in C, and then a Java implementation in Lisp. They're clearly not fads, they're clearly useful, and the kind of knowledge and education that doing such an exercise would require is exactly something that proponents "world-class western liberal arts education" would laud. It can work, it seems to me.
- lg 17y agoC/assembly to learn about the machine and because they're everywhere, Lisp to learn about all the paradigms, and a popular scripting language if you need big libraries. Java is so ugly, it'll just confuse them. It confused me, anyway.
- gaius 17y agoYeah, it's kinda like the point of learning the different sorts is not really to learn how to sort things - it's a vehicle for teaching big-O notation.
- tsuraan 17y agoPerhaps it's not too popular, but VHDL or Verilog are a ton more useful for learning about how a machine works. Seriously, writing some x86 assembly teaches you a thing or two, but implementing a full CPU from the design of the ISA to putting it on an FPGA is the way to go. Once you've done that, all the magic is gone, and computers are completely transparent and understandable.
- lg 17y agoYeah, you're probably right. This is my 'limited life experience' showing...
- sethg 17y agoIf I had learned C, Lisp, and Java "in depth" when I was an undergraduate, much of the effort to learn them would have been wasted. My first programming-ish job involved documenting C++ libraries (in an era where C++ templates had just started to be supported by mainstream compilers). Then I had a job involving Perl and Java, and even though I had no experience with Java I had no trouble getting up to speed with it. Then I had a job involving J2EE; I hear that the "enterprise" Java world is doing a lot with Hibernate and other lightweight frameworks these days, so what little I learned about EJBs on that job is now stale. And now almost all of my coding involves some combination of shell scripts, Python, and SQL. There's a place in every software shop for the language lawyer who really knows a programming language's subtle tricks and traps, but not everyone needs that coming out of a CS program.