>In most universities, the computer science program is the best way for people to learn how to program. In the future, I think CS departments will split into software engineering (which focuses on teaching students how to program and engineer software) and computer science (which prepares students for careers researching in the field of computer science). But that's not how things are in most places.
Too right. I agree with this. I think that the "field" of software has generally gone in three directions.
1. How do you compute it (or Thinking about it)? That's CS
2. How do you plan to build it (or Planning it)? That's Software Engineering
3. Go build it (or Doing it)! That's IT
Sadly, at least at my alma mater, the trend of keeping these three fields separate has reversed. Instead, with budget cuts, the departments have merged under the CS umbrella. I think this continues to push forward the layman idea of these three things being equal because of how they are co-mingled -- but really they are as separate of disciplines as Physics is from Road Paving.
Ideally the number of students and practitioners in each fields should be distributed like a pyramid (a la any other engineering discipline). Most people doing, fewer people planning, and even fewer people thinking.
>Also, "theory of computation" is an area of computer science theory. There is much more to a CS curriculum than theory of computation.
I guess I also agree with this. I've always chafed at calling Computer Science the "Science of Computing" though since it's not a science in the classical sense. But everything I ever learned in my undergrad (not counting unrelated curriculum coursework) was definitely related to "computing" in even a loose sense of the term. I just don't think calling it the discipline of "computing" makes it any more clear since "computing" - the act of using a computer (like a Mac) and "computing" the act of performing computations, are easily confused. The "Theory of Computing" has always seemed to have the best balance while providing context for "computing". But I'm open to accepting other 2 word descriptions ;)