One of the things I talk about with everyone I meet at NYU if they're willing to listen is that we're not teaching programming and we should be. I think every person who graduates with a bachelor's degree should have one semester of programming, just as they should have one semester of journalism.
Dave Winer talks about some strategies for building a tech center. I agree with him on programming, or perhaps technical literacy. Just like journalism would teach many skills around critical thinking, writing, and so on.
Computer Science, of course, is not actually a programming degree. Depending on which institution you go to, it will lean more towards math & algorithms or towards a software engineering direction.
I ended up knowing how to program with my computer science degree from UVic, but I learned more during my co-op terms and afterwards on my own time about the craft of programming.
And that's the problem: we haven't decided whether programming is something technicians do (and thus, not taught at university), that engineers do (not yet enough predictability or bridge-building-like stability, I would say), or simply math & algorithms (the current state of computer science).