The usual justification is "we're not a vocational college" which I think is kind of bullshit.
We got one quarter of C++, then everything else was "you are all grownups, use whatever the hell you want so long as it works on [cs cluster]". Most people continued to use C++ of course. It was not until an intro to languages course (preceding a few compilers courses, if you elected to take them) that course material again included learning a new language (scheme).
This, aside from the initial obnoxious first quarter, seems like the absolute proper way to run a CS department. A bunch of courses teaching different languages, as I would expect from some sort of "vocational college", is absolutely not what I was paying for.
Then people graduate and start a job, and they can't code their way out of paper bag, but they sure can write the tuple relational calculus for some given query.
Another example is my OS class. We just spent half a semester going over concurrency problems. Now we're rushing through everything else that goes on in an OS. We spent one day on filesystems and I/O. Not once have we said anything like "well this is how Linux or FreeBSD does it".
1) Every University has some courses which need a refresh.
2) The OS and Compilers courses certainly need refreshing at the moment at CWRU.
3) We have created a new class called "Software Craftsmanship" which address much of the concerns placed at the foot of the "Software Engineering" class.
4) It isn't the job of the university to teach any particular technology. It is the job to teach the theory and fundamentals.
5) Java probably isn't the best language but we have a new intro professor how is doing a good job with the intro course.
6) You never know who you will meet on the internet.
7) TRC and relational algebra are actually a pretty useful formalisms that helped me become a better user of databases.
8) The early circulum refresh has introduced many more software engineering principles earlier in the curriculum.
9) The best place to learn software engineering principles is on the job at a good company. There is no replacement for doing things for real.
10) There are good and bad things about our department but that is the same everywhere.
We also had a Software Engineering major which a lot of people in CS took courses from. The only required (non-track) CS courses in our suggested 4th/5th year were software engineering classes though. I think the coverage there was more than adaquate. Honestly it got a bit too "vocational" for my tastes.
On the other hand, most of my peers (70-80%?) took the AI/Games track; they probably got closer to the sort of coverage on the other topics that you're mentioning. IIRC only two arch classes (MIPS), no OS to speak of, and a single 3-month quarter of concurrent programming. I don't think that is satisfactory, but the last I have heard most of them have been doing fine in the real world. That stuff is neat and good fun, but I don't think it will really effect your ability to perform in the industry.