Computer Science is no more about computers than astronomy is about telescopes.

Edsger W. Dijkstra

The purpose of computation is insight, not numbers.

Richard Hamming

"What is Computer Science?" Do not expect a single answer to this question (or to similar ones; "What is Mathematics?", "What is Applied Mathematics?", "What is Physics?", "What is Theatre?", "What is Literature?" have all been answered many times, and differently each time).

It is tempting to view CS "merely" as the theoretical basis of computing: some formal language theory, some logic and mathematical logic, lots of computational complexity, some algorithms, a little discrete mathematics (the author's bias clearly shows in this list!). They're all important parts of what has come to be known as "Theory of Computer Science" (TCS). Computers and their programs, if you will, are merely a few bits taken from Mathematics and (depending on your point of view) either "frozen" or "given life".

But is that "all"?

Probably not; computers are more interesting than that. The choice of these particular fields isn't arbitrary; the fields "in" CS are chosen because of their applicability to real problems, as implemented with real software on real hardware. Of course, not every problem (or solution!) is directly applicable to a current problem. But the same is true in Physics: Physics is not Engineering.

CS is the academic backing to computing. Computing raises many questions: How can I optimize the flow of goods between several centres through given delivery channels? How can I best pack different-sized pallets onto airplanes? How can I build a cheap circuit to add integers quickly? How can I automatically debug programs? The choice of solution "in the field" needn't be the optimal choice; the optimal choice might not be known (or might be known but too expensive to implement). CS tries to answer the theoretical questions, but also to provide tools to choose and implement the practical solution.

So is CS the "techniques of molecular biology" of Mathematics, a servant whose sole task is to free mathematicians by providing the services required by certain branches of engineering? Of course not. The questions of CS stem from real problems, but are of independent interest!

Questions of distributed computing were studied well before modern "P2P" systems were a glimmer in anyone's eye. The practical motivation was always clear, even if one particular application (deployment on a worldwide Internet) was not. And distributed computing is not relegated to serving P2P systems; it is "universal": similar questions arise (and are solved) when distributing databases (across a closed, controlled network), or on a Beowulf cluster running certain tasks. And they will arise in yet other systems.

That's what a theory is: a recognition that certain different problems are similar in some ways, and (hopefully) some techniques for solving them.

And that's what CS does. It starts from interesting problems related to particular engineering disciplines, and provides theories to help attack them. But the source of interest in the problems is not the monetary worth of the solution, or the engineering importance of the solution (that is why there is much more theory of databases than there is of word processors, for instance). Unlike other sciences, the problems of CS stem from human creations, not from Nature. But like other sciences, CS is a "good bits version".

The scope of most CS departments is certainly wide enough to reflect this point of view. Nonetheless, many academic CS departments insist on also being engineering departments. This is probably a mistake. The considerations of engineering are very different from those of science. There is much common ground between the two, of course, but there are many more differences. Software engineering is a related but separate discipline (just like different people build dams and create techniques to solve partial differential equations, even though both are about holding water).

It is instructive to consider some of the field's founders.

Computation is not computer science. Neither is the servant of the other. Both co-exist, and each provides ideas for the other.