During my undergraduate years, when we had to register for courses at the beginning of each semester, there were certain subjects that most students preferred to avoid, if possible. Not only did they find the subject matter of these courses uninteresting, none of them could be considered an easy way to fill your credit requirements nor did they provide easy grades. I don’t think some even realized why those subjects were there in the first place.
And it’s quite understandable – they wouldn’t need those subjects in the industry as a developer. In fact, only a small amount of the knowledge gathered at the university would be needed for the average developer or the engineer. Most students who come to study Computer Science are not really sure what to do with subjects like Theory of Computing. The knowledge that is really needed for the industry by a fresh undergraduate can be found in small number of courses, such as Software Engineering, Object Oriented Programming, Web Programming, and Database-related courses.
The term “Computer Science” implies that it is about the science of using computers and hence, almost any subject that is about using computers can be put under this umbrella term. But the subjects above mentioned would be the ones truly at home here, because they are indeed about using computers.
On other end of the spectrum are those subjects which only a minority of students actively pursue. What the other students often do not see is that those subjects are geared towards furthering our knowledge about computers themselves, and thus most students who take those subjects aim to do research in the future. I would categorize these subjects as “Computing Science” rather than “Computer Science”.
If you look back to your CS undergraduate curriculum, “Computer Science” subjects would be, for example,
Software Engineering
Object Oriented Programming
Computer Security
Web Programming
Databases
whereas examples for “Computing Science” subjects would be
Theory of computing
Cryptography
Algorithms
Most AI Subjects (e.g. Neural Networks)
Fuzzy Logic
Other subjects such as Operating Systems and Programming Languages fall more in-between. An almost trademark characteristic of subjects in the latter category is that a large part of them overlap with Mathematics, or, they are simply mathematics subjects. Computer Science grew out for the most part from Mathematics, and these subjects still retain that nature.
The Scientist vs. The Engineer
This division represents an important decision a CS student must make about his or her career: are you going to become a Scientist or an Engineer? It would be helpful to remember that the engineer is more concerned with how to do things, while the scientist is concerned with how things are – thought of course, Computer/Computing Science is an area where these two aspects really mesh. Most students who study CS focus on the engineering aspect of it. I chose to focus on the other.
I believe it would be useful for students if universities invested some time in explaining to new students how the different subjects are geared for different paths. In my experience some faculty members certainly did their part to educate students about this, but it didn’t happen always.