From my experience working in management over the past decade, I can say with some confidence that most computer science programs excel at pushing out people that can not, in fact, code in the real world.
Sure, they can solve ACM-style challenges and spit out Dijkstra on a whim, but I can't recall the last time I needed to deliver on a business objective that mapped to either of those things.
This is not to say that understanding computer science is bad! Having a deep understanding of the underlaying theory and technology is a requirement to attain mastery.
But being able to ship maintainable, well-factored, and properly-tested code in a collaborative environment is far more important to me than having memorized every algorithm in TAOCP.
I mean, if I can have both skillsets, I'll totally take both skillsets, but given the choice between the two, I know that a wizard-level software engineer with very weak algorithms skills will, in general, bring a lot more value to a project than a wizard-level computer scientist that can't write code that the rest of the team can maintain.
About the only time that a computer science wizard is useful to me, is if I already have a team of solid software engineers, so that they can mentor each other and lift the overall skill level of the team.
What universities really need to start doing is including a multi-year track built into their curricula whereby students build and maintain production software over the course of their studies, with quarterly rotation between teams.