Industry wants to rely on tried-and-true tools and techniques,
but is also addicted to dreams of "silver bullets,"
"transformative breakthroughs," "killer apps," and so forth.
This leads to
immense conservatism in the choice of basic tools (such as
programming languages and operating systems) and a desire for
monocultures (to minimize training and deployment costs).
The
idea of software development as an assembly line manned by
semi-skilled interchangeable workers is fundamentally flawed and
wasteful.
"for many, "programming" has become a strange combination of unprincipled hacking and invoking other people's libraries (with only the vaguest idea of what's going on). The notions of "maintenance" and "code quality" are typically forgotten or poorly understood. " ... seen so many of those students :(
and ad "My suggestion is to define a structure of CS education based on a core plus specializations and application areas", I am not saying the austrian university system is good, but e.g. the CS degrees in Vienna are done like this, there is a core which is the same for everybody 4-5 semester, and then you specialise in e.g. software engineering or computational mgmt and so forth, and then after 2 semester you specialize again into one of I think 7 or 8 master degrees ...
It does not make it easy for industry to hire people, as I have noticed, they sometimes really have no clue what the difference between Software Engineering is compared to Computational Intelligence, at least in HR :/