Earlier quoted context omitted.
I'm really not sure what you mean. I have a CS degree from a ~50th ranked US University. It is not considered a math degree, but instead a CS degree from an engineering department. My education was engineering focused. My degree says I am a graduate from the Engineering school. I can write assembly, program a fpga, write OO programs, OS drivers and System calls. Shoot, I even wrote My own file system. I learned java…
That sounds exactly like the sort of degree I mean. It's not all that common though, in my experience, to find a CS degree with that sort of curriculum. Do you just cross me off the list because I have a CS degree. That's silly :) You may have noted from my post that I do hire CS majors. but do they understand the inner workings of a computer? Do they understand complexity, even the basic data structures. Yes, usuall…
Curriculum wise UIUC actually does an excellent job of addressing this issue. I imagine other schools are similar. We basically have our three core theoretical courses and everything else involves programming. Every course that isn't a theory course involves several significant programming assignments. For example, in our networking course the final programming assignment (in C) is to implement TCP over UDP. We have a seperate course called Programming Studio that is required. The entire course just focuses on learning programming well. And students can opt to do a large software engineering project instead of a thesis their senior year (the vast majority do software engineering, not a thesis).
I think all these measures help, but despite the heavy emphasis on programming, a lot of graduates are still horrible programmers. I think the root cause is that we are still learning how to teach programming well; we've had a much larger head start on learning to teach mathematics.