The phrase “computer science” is still, in some circles, battling for acceptance. Some
people, not necessarily antagonistic to computers, consider it an illegitimate merger of
two disconnected ideas (much as I feel myself about the phrase “computer literacy”). They
don’t see where the science comes in; what is taught in computer science departments is
mostly how-to tricks of the trade, comparable to medical or legal training. Such training is
valuable to the individual and to society, but the trainees are not learning to be scientists.
My own feeling is that there is some truth on both sides. There some science
in computer science. Abelson and Sussman, in Structure and Interpretation of Computer Programs
use the words “complexity” and “process” to explain what it is that computer
scientists study. A process need not take place inside a computer, but it happens that
computer processes are particularly amenable to formal study and they shed light on the
idea of process in general. On the other hand, Abelson and Sussman are exceptional.
A great deal of what is called computer science is much more a matter of programming
techniques; many computer science students are first offered courses in several different
programming languages and then taught specific techniques for particular problem
domains, like graphics or data base systems or compiler construction. And many students
who find themselves in computer science departments because they love programming
computers are impatient with theory and weak in mathematical sophistication. Such
students are perfectly satisfied with the how-to approach. (I don’t mean this as an insult.
I have in mind some excellent students I’ve taught who are brilliant programmers, very
intelligent people, but happen not to have a theoretical bent.)