On the contrary, I don't really think that it is the University's job to teach "programming". University traditionally focuses around teaching the skills to do research. Higher level skills such as analysis and problem solving. Consider learning history. It is expected that you "know" how to write an essay. You may be critiqued on it, but it is not the primary motivation for your study of that subject.
My personal opinion is that university is not a place to learn tools (i.e. programming), but to learn to apply knowledge to form solutions to complex problems. We learn about algorithms, data structures and techniques because that is what we need to know to learn to solve hard problems. Programming, while not separate from this (i.e. you can hardly build anything without knowing how to use a screwdriver) is something that is assumed knowledge. Teaching it at university would waste valuable time in courses that are already too packed to give rigorous treatment of all topics covered.
I don't think we should assume the students have the knowledge 1) because they obviously don't have the knowledge and 2) it doesn't match the methodology of every other applied science. I don't assume that students are competent to work in a biology lab before college. Why should Computer Science get a free pass from teaching the lab work techniques that all other applied sciences are expected to teach?
The CS undergrad curriculums that I have been a part of (on the student and teaching side) were designed so that people with no prior exposure to CS or programming could succeed. For that reason, the introductory class taught programming. Sure, they (we) tried to instill general CS concepts along the way, but the fundamental task was to teach the students how to think algorithmically, how to use that skill to solve a particular problem, and, yes, how to use the particular tools we chose (that is, the language, compiler, editor or IDE).
To do otherwise is to require that incoming students already know how to program. That is, I think, indefensible. If students want to test out of the introductory course, fine. But it must exist, just as the intro to physics course must exist for physics majors.
My personal opinion is that university is not a place to learn tools (i.e. programming), but to learn to apply knowledge to form solutions to complex problems. We learn about algorithms, data structures and techniques because that is what we need to know to learn to solve hard problems. Programming, while not separate from this (i.e. you can hardly build anything without knowing how to use a screwdriver) is something that is assumed knowledge. Teaching it at university would waste valuable time in courses that are already too packed to give rigorous treatment of all topics covered.