A Terrible Name for this Business

Harold Abelson writing 'Computer Science' on the board in front of a class of Hewlett-Packard corporate Trainees. Taken from a 1986 Lecture on 'The Structure and Interpretation of Computer Programs'Image from Structure and Interpretation of Computer Programs (CC BY-SA 3.0)

 

I double-click on the video I’ve just downloaded from the MIT OpenCourseWare online collection. The recording of the 1986 lecture begins with a nostalgic musical intro, before Harold Abelson walks across the room. He addresses the desks of corporate trainees before him;

“I’d like to welcome you to this course on Computer Science”.

The camera zooms in as his chalk slowly scratches the name of the topic on one of those old green blackboards: C O M P U T E R, S C I E N C E… Finally, he turns around to face the class.

“Actually, that’s a terrible way to start,” he admits. “Computer Science is a terrible name for this business”.

It’s not really about computers

Hal goes on to explain that Computer Science is not really about computers, in the same way that Biology isn’t really about microscopes and Petri dishes. The problem is, when you’re starting a new field, it’s very easy to confuse the ‘essence’ of what you’re doing with the tools that you use.

History is filled with examples, like the origin story of Geometry. The creators of Geometry—the Ancient Egyptians—surveyed their land to restore farmland boundaries after the annual flooding of the Nile river. Doing so involved reasoning and calculating with spatial information. Eventually, these ideas formed the foundations of modern Geometry, and perhaps all of modern Mathematics; a formal way of reasoning with knowledge about space, about truth, about what is.

Of course, realising all this takes thousands of years of hindsight. At the time, the Ancient Egyptians literally just called what they were doing ‘land measurement’:

Etymology of 'Geometry'Well, what would you have called it? Author’s own image.

 
How about ‘Problem Solving’?

In the same way, we might not really be in a position to come up with a truly appropriate name for what it is, exactly, that Computer Scientists study. In my experience, it really has very little to do with computers.

You see, Computer Scientists study problems. That’s everything from solving an integral, to taking two DNA sequences and counting how many gene transformations it takes to get from one to the other, to finding the quickest route from here to there on a map.

But it’s not that simple; we’re not just coming up with solutions to a particular case of a problem. Instead, we’re looking for a procedure for finding these solutions. We want instructions that you could follow to find an answer once you have the problem specifics, regardless of what they might be.

These are the ‘problems’ we’re trying to solve. The ‘solutions’ aren’t tangible answers, but general strategies.

Imagine trying to solve an integral, but without me telling you which integral it is. Or, trying to count the transformations between two DNA sequences, without knowing what the DNA sequences are. How do you find the quickest path from here to your destination, without knowing where you are? Or where you’re trying to go? Or what the map looks like?

These are the ‘problems’ we’re trying to solve. The ‘solutions’ aren’t tangible answers, but general strategies for producing the answer to any particular problem. We call these strategies algorithms.

Okay, how about ‘Solving Problems about Problem Solving’?

That’s what Computer Scientists study: algorithms. We create algorithms. We analyse algorithms, comparing different strategies for the same problem to see which one is faster, or more economical. A classic example is the armamentarium of algorithms available for sorting (that is, say, ordering a hand of cards by their value, to plug my last post).

We study the inherent difficulty of particular problems, by finding the least possible effort required by any strategy to find a solution. We also relate problems to one another. For example, it turns out that problems involving protein folding—a process underpinning diseases like Alzheimer’s and Cancer—are essentially the same as solving Sudoku puzzles. Actually, so are hundreds of other practical problems with incredibly useful solutions in the real world.

More profoundly, we study the limitations of algorithmic power, asking questions like ‘are there problems that can’t be solved with any algorithm at all?’. As it turns out, there are.

A Blank Sudoku PuzzleA clever sudoku strategy might solve all the world’s problems.
Image by Tim Stellmach via Wikimedia Commons (public domain)

 

What’s a better name?

An important part of the study of algorithms is expressing them as clear, unambiguous instructions. That brings us to computers, which happen to be really great at following simple instructions quickly. If we make our instructions so simple and clear that a computer can follow them, then the computer can quickly test our strategy for us, showing us whether the strategy works the way we wanted.

Maybe, thousands of years from now, looking back, it will seem obvious that what we’re really studying here isn’t the computers, but the methods that we can use to solve problems. We’re dealing with how to knowledge: knowledge about the process of finding answers to the kinds of questions that we are faced with every day. That’s my take on the ‘essence’ of Computer Science. What would a better name be?


5 Responses to “A Terrible Name for this Business”

  1. Matt Farrugia says:

    From my mailbox:

    “Computer science” is perfectly acceptable once you realise that a “computer” is not what the average person thinks one is. CS is more than just “algorithms” and “problem solving” – for example, formal verification, cryptography, language design all fall under the remit of CS, but wouldn’t easily fit into those categories. Also, many (if not all) other fields in mathematics would also be describable as “problem solving” so it seems a bit unfair to just use that label for one subset of discrete mathematics.

    Thanks for reading!

    Before today’s digital computers were a thing, there was a time when “computer” meant “one who computes”, in the sense of computing the answer to a problem. I agree that this original meaning of “computer” makes “computer science” a more accurate name than today’s meaning of “computer” does.

    I also agree with your point that algorithmics is not all of computer science — I didn’t have as many counterexamples in mind when I wrote the post, but you raise some good ones!

    However, I don’t think I am saying that computer science is about just problem solving. Rather, that the problems computer scientists are trying to solve happen to be problems about problem solving!

  2. Matt Farrugia says:

    Love it! BRB getting a ‘Ph.D. in Algorithm Mastery’. Actually, ‘Algorithmics’ is an alternative to ‘Computer Science’ that I am hearing more of these days.

    Computer science does include things other than algorithms, though. Some look at it as the study of information and its storage, processing, transformation and its meaning. This results in the name ‘informatics’. This is similar to how Physics can be viewed as the study of energy. I like this name, I think it’s actually even more popular than ‘computer science’ in Europe.

  3. Matt Farrugia says:

    Thanks for reading Fred, and thanks for your comment.

    I am certainly not trying to say others aren’t problem solvers. Just that computer scientists study problem solving itself! It’s what drew me in during first year, back when I was also an aspiring engineer/physicist/mathematician. Because, to me, solving problems about problems is the most challenging, most interesting, and most awesome type of problem solving I’ve ever tried!

  4. Nelsongc says:

    This has given me a whole different look on the field Matt. And i think you make a good point about the “essence” of what a field is about, and how we often see a very inaccurate depiction of them because of how they are put across. Maybe Computer Science should be called Algorithm Masters? XD

  5. Fred Doolan says:

    I did a programming subject last semester and so I completely understand how you computer scientists try to optimize and create better algorithms. Some problems can be solved in just a few lines of code which seem virtually impossible to the human brain, while others seem simple but cannot be solved by an algorithm we know of yet.

    I’m studying to be an Engineer so you can’t really take the ‘problem solver’ tag from my fellow engineers, mathematicians, physicists, or just about any other scientist. I think that is what makes science special.

    The blog was a good read and a good way to sign off from Scientific Scribbles.