All of the 'fundamentals' courses - graph theory / data structures & algorithms, compilers / parsers / language processing, number theory, artificial intelligence / machine learning, networking, computer architecture, operating systems, graphics, databases, ... are taught using a programming language. To be able to learn them in today's educational system, where the practical examples are routinely given in the form of code, you must first have a firm grasp of the language employed. I would compare it to attempting to learn history from a book that is half English and half Mandarin when one does not speak Mandarin.
It's weird because I currently work as a developer and I'm definitely deeply reliant on other people who did study CS. But at the same time it seems like a lot of them have sacrificed way more than they're actually getting back. The only thing more cliche than non-technical folks who 'just need a tech person' is deeply technical folks wasting years of their lives building things that it would be obvious no one wanted if only they had a liberal arts background.
You must have been lucky, if you got to write code when you were learning those things. My experience was proofs, proofs, and more proofs. I took an algorithms/data structures course that had no programming assignments whatsoever.
Likewise Computer Science is not the study of programming or computers, it is the study of data and computing. Programming is just often the tool for the job.
Some European Computer Science departments actually call themselves Dataology departments...
Computer science is not vocational training and not training to be a good programmer. I've found many CS professors suck at programming anyhow, and people who never do much outside the curriculum aren't qualified to be programmers.
Btw, at my school, we had a co-op program. The undergrad program was 5 years long and you took three 6-month co-ops. This is a great way to get practical skills without changing the character of a CS curriculum.
edit: I have to add, plenty of web developers use Java, they just don't hang around HN.
"Object Oriented and used by business" is enough to sell the student customers who have yet to be trained and an administration that never will.
Because "Computer Science" and "Web Development" aren't even remotely the same thing.
I mean, if a school wants to offer a Web Development major or minor or vocational certificate program, great, but there's no reason to call it CS, which it isn't.