Gene Spafford explains the goals of computer science education as opposed to just teaching someone to program:
We don’t produce programmers. Anyone can learn programming — all they need to do is buy “C for Dummies” and they can learn to program. But that isn’t learning fundamentals. For instance, ask people who know how to program to write a sort routine and they can do it, although the results may not be pretty — or efficient. But task people with a good CS education — who have had some background in algorithms, big “O” complexity, and data structures — and they should ask about input data set sizes, whether identical key sorting needs to be non-destructive, whether the set is pre-ordered, and whether the sort needs to be inplace or not. That may be obvious to you, but non-obvious to someone who hasn’t been exposed to the science in computer science.
He makes me wish I’d actually studied computer science.