“When all is said and done, the only thing computers can do for us is to manipulate symbols and produce results of such manipulations.” --Edsger Dijkstra (1930 — 2002)
What is computer science? What does a computer scientist actually do? This is actually a difficult question to answer, but if we hope to learn anything about the subject then I suppose we'd better deal with it.
Looking for the definition of computer science in a dictionary won't be much help because there are as many different definitions as there are dictionaries. In fact, even computer scientists don't tend to agree on the definition of their subject, so what chance have the dictionary writers? What's more, the subject has developed a huge array of sub-fields over the years and at first glance they seem absurdly diverse. For instance, computer vision specialists look at how computers deal with images; network experts concern themselves with how to get computers talking with each other; and information theorists don't even deal with computers at all, instead spending their time worrying about how to process and quantify information. Given all this, how could I possibly discuss computer science in a way that covers the whole discipline?
But physics also covers a lot of diverse ground, and physicists can collectively claim that they are studying the fundamental nature of matter and how the universe behaves, whether it's sub-atomic particles or whole families of galaxies. Surely, then, we can also sum up computer science in such a nice, tidy phrase. That's one thing I'll do in this first part. I'll show that there is a way to address computer science collectively, and in so doing I'll show that all its practitioners share a stock in trade, which is studying how to compute.
Furthermore, no subject is born in a vacuum. Every science we developed branched off from some predecessor, taking a handful of ideas with it along the way and using them to form the core of a new discipline. To demonstrate the kind of concepts essential to the subject, this first part will also explain a few ideas that pre-date computer science but nevertheless lie at its heart.