I taught CS at University of Colorado, Denver for several years. Just one course per semester. We had many discussions about just this problem. UCD is a satellite campus. Most courses are taught at night. Students often have full time jobs. They want better jobs. They go to school specifically to get better jobs and they don’t have a lot spare resources to spend on school. They just want to learn the latest hot technologies like Java and .NET and be marketable. In other words, they want job training.
The problem with job training is that the information is perishable. In the mid-90s all the rage was C++. Many universities, ours included, altered their curriculum to use C++ as the teaching language in order to be more appealing to students. After all, you can teach theory using pretty much any general purpose programming language.
Except that C++ is a terrible teaching language. (Actually, its just a terrible langage). It is too complicated and I wasted many classroom hours helping students cope with the quirks in the language instead of focusing on the content. And now, the C++ knowledge is mostly useless. Nearly all C++ work has been supplanted by Java work. So the students need to retrain.
A better idea is to use languages that can most clearly illustrate the concepts with minimum extraneous complexity. More languages means more viewpoints, and tends to make students understand that the language or tool isn’t that important. It is the underlying concepts.
The University is between a rock and a hard place. With education funding cuts, they need to attract students to survive. To attract students, they need to offer classes the students want to take. Students find training classes most attractive as they offer instant gratification. But training classes are like candy. They’re not good for you in the long run and the fix is short lived. Education is more like vegetables. It is good for you, but maybe not so pleasant to digest. The University would like to stick to vegetables, but if noone orders them, they have to sell candy too.
Which is unfortunate. The state of the software industry is deplorable. I think 90% of the people programming out there ought to be doing something else. They suck at their job and aren’t even educated enough to understand that they suck much less how they suck. One trick ponies, they flounder if given a problem that isn’t pre-solved in their platform. FACT: the best indicator that a candidate is likely to fail the interview process at big river books is if they characterize themselves as a “Java Architect” or “Java Developer”. It usually means they don’t know anything else. They think Java (or .NET) is the pinnacle of software achievement. Without a proper education, they can’t conceive of anything else.
The real solution is to properly fund universities as institutes of higher learning and stick to education. If the universites want to also offer vocational training, that’s fine. Just don’t cheapen the academic programs by offering “degrees”. Certificates of completion should be adequate.