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.