Criticizing First Language Choice in CS Curricula

The article Slashdot references is from a journal on software engineering for the defense industry. Provably correct software is a big deal for hackers in that trade and probably colors the editorial a bit.

It is important to not that this is not a lambasting as Java in education, but its selection as a first language. I think you could easily stub in a whole slew over other, simple languages and the commentary would make as much sense. However, I cannot disagree with their view that educators have shifted to Java as a first language to cater to perceived industry demand.

Outside of the author’s industry, I would have to downgrade their concerns over mathematics. Maybe for pure research, like algorithmic complexity, or systems engineering math is still critical but for general programming, not as much. I would lump their comments on understanding discrete, floating point math alongside Java fostering an ignorance of machine architecture. I know my own entry into programming via Java and similar languages delayed my full understanding of low level machine architecture, organization and operation. I cannot say it has hurt my career overly much but I doe recognize that if someone ignorant of these topics was working on real time, embedded software, that would be a huge risk.

More generally, I agree with their issue with any curriculum that takes more of a cookbook approach. I think the implication that CS curricula need to train engineers how to problem solve more generally with good discipline, regardless of particular technology or language, is one I can readily endorse.

However, the economic reality is that much paid development is simply application development that really is little more than plumbing. Systems engineering and other more demanding disciplines have been in decline in the market for some time. It is unrealistic to train every CS graduate for the minority need in the marketplace.

I don’t think application development would be hurt, really, by better low level understand and skills. I just don’t think the time or cost required is appropriate for situations of scale. That is to say the majority of work for which the software programming market is currently paying. Better to ask how to ensure at least a viable minority of systems engineers are produced each year to balance the majority and ensure there are always some engineers of all required stripes. Honestly, systems engineering will never go away but neither do I think its proportion in the paid workplace will increase in relation to applications development.

One Reply to “Criticizing First Language Choice in CS Curricula”

  1. Part of the issue here is differing expectations about the goal behind a CS degree. It’s been almost 20 years since I graduated from UMBC, with BS in CS, and in many ways I think the industry has changed significantly. Back then if you were looking to write “business” applications, you got a degree in IFSM and learned COBOL. If you got a degree in CS, it was assumed that you were either going into some kind of guts-level software development job or continue on in academics, and the first language that was taught was PASCAL, followed by C and Assembly Language, with access to more "esoteric" languages such as LISP, PROLOG and FORTH. While IFSM students studied business practices and project management, CS students studied compilers, operating systems and artificial intelligence.

    Really and truthfully though, even back in the 1980’s CS program generally did not provide their graduates with what I would call skills “required to hit the ground running” in their first job out of college. I honestly believe that the principal reasons I was able to apply the knowledge that I had acquired in college were that I worked in my field the entire time I was in college, and therefore had access to people who had been in the field for several years and fortunately were cool enough to help me learn the ropes. If I had not taken advantage of those opportunities, I don’t think I would have done as well when I stepped out into the “real world” in 1988.

    For what it is worth, I’ll actually extend my statement in the first sentence of the last paragraph to most undergraduate programs regardless of discipline. When it comes to training students

    …how to problem solve more generally with good discipline, regardless of particular technology or language…

    I think that most undergraduate programs fail. If you are a good problem solver, if you are able to understand the 10k foot view as well as the 100 foot view, then you have the capability to succeed in almost any job that you are qualified to do based on your other skills / knowledge. Conversely, you can know all of the Java libraries by heart, but if you don’t understand how to break down the problem at hand to appropriately apply that technology, there’s a much higher chance of crashing and burning.

    The best thing universities can do to help the students in all of their programs is look at how integrate coursework involving problem solving, interpersonal skills, managing information in this age of information overload, and basic personal and business finance. Those are survival skills that you can take into any arena, including one’s personal as well as professional life.

Leave a Reply

Your email address will not be published. Required fields are marked *