Ah, that's what it's about. Not my needs but theirs: not real-world skill but academic credibility.
Of course it would be what I needed if, and only if, I intended to become an academic in the field myself, but that is what universities are---farm leagues for finding and developing future professors.
Since professors are only a small portion of the work force, most people weren't even supposed to attend universities. Most people were supposed to enroll in other educational programs (tech schools, art/cooking/etc. academies, apprenticeships, and so on) if they intended to work for a living.
But these days, no employer wants you without a university degree, so universities can go on serving themselves and you'll pay for it anyway, because the end for non-professors is a general purpose "degree" credential that employers use as a proxy for generic employment qualification.
I'm not saying that computer science isn't important, just that it is a higher priority for academia than for business, and academia serves academia.
But more to the point, universities try to be more than job training programs.
I'm not convinced of this at all (this is the first time "citation please" popped into my mind, and I hate that response :). Of course, there are some problems that have a strong need for erotically background, but those positions tend to require a graduate degree.
On the other hand, I've seen self-taught engineers who have far more passion for developing software, which seems (in my experience) to correlate more with engineer productivity.
I have a CS degree from an institution that has an extremely strong theoretical computer science department. I value my degree and the knowledge I gained to get it, but, beyond getting me in front of hiring managers early in my career, I don't think it particularly made me a better developer. A little understanding of algorithms and data structures (much of the need for which is obviates by today's VMs and libraries) and some understanding of what is really going on under the hood (again, not as helpful in the VM word).
For me, a degree is a nice-to-have, but you won't get hired if you can't convince me you are a good learner.
DYAC? I'm sure you meant "theoretical" background there :)
I had a feeling I should have proofread that one. The small box makes it annoying, though.
I totally agree that an attitude of self-teaching makes better developers. There is a lot in the application of CS, but I would call that Software Engineering.
More generally, having seen more kinds of software kind of broadens one's way of approaching programming problems, so even if you don't directly use anything you see when you study operating systems or compilers or AI, you can grab vague approaches and ideas from those fields.
If you're interested in writing performant software, you'll care about big-O, algorithms, and data structures. Understanding algorithms and data structures enables you to intelligently choose and apply them even if you don't have to develop them from scratch.
A computer science curriculum (even a theoretical one) need not consist only of abstract concepts. And it need not include software if the purpose is to have a theoretical curriculum. I've always been a fan projects whose primary purpose is to help you learn the concepts. My favorite courses have been of the type where the problem sets are: "read this paper; understand it; implement the algorithms; write a report with results and discussion."
Because most colleges teach "computer science" not "software engineering". Computer science is primarily about abstract concepts, and not so much about necessarily doing anything worthwhile with them. (This is similar to saying, "Why doesn't physics teach me to build X?" Because that's mechanical engineering!) Admittedly, there's hopefully some occasion to apply the concepts, rather than just memorize them, but the focus should be on the science, not the engineering.
In my curriculum, software engineering was one of my possible senior classes (including OSes, compilers, etc., almost all focused on application).