Computer Science is not a Science: It’s a Life Skill
This piece was influenced by this by Adam Wiggins on Computer Science as a Universal Literacy.
One of the great things about working as a technical writer is that I get to spend a lot of my time reading through technical material. Increasingly, this means watching more and more technical material, and most of it is, of course, very, very recent.
But not all of it.
One of the best things I’ve seen in a long time is MIT’s course on the Structure and Interpretation of Computer Programs that was recorded in the mid-1980s. The course was given by Hal Abelson and Gerald Jay Sussman and, until recently, it was MIT’s standard introduction to programming and computer science. You should take a look. Why? Well in the first five minutes of the first lecture Hal Abelson says some of the most profound things you are ever likely to hear about computer science. Don’t believe me? Let me explain.
In the first lecture, Professor Abelson explains the problems he has with the phrase computer science. It really comes down to two things:
- It doesn’t need to involve computers, and
- It’s not a science
To see what he means by that, let’s look at a far older discipline: geometry. You might already know that geometry was invented by the Ancient Egyptians. In fact the word geometry comes from geo and meter — so it means to measure the Earth. To the Ancient Egyptians geometry was what we would call today surveying. It involved measuring out land in order to predict the size of the harvest. It wasn’t an abstract study, it was a practical profession. The Egyptians were very practical people. They never created any advanced philosophy or higher mathematics. The one major work of Egyptian mathematics (the Rhind Mathematical Papyrus) is really a crib sheet of accounting calculations useful for anyone planning to join the Egyptian civil service.
So geometry was originally vocational rather than an academic. Much as most computer programming is today. When did that change? The clue is in the name: geometry comes from the Greek γεωμετρία. It was when the Greeks conquered Egypt in the time of the Ptolemies that geometry become something more than a vocation.
The Greeks took the lowly trade of surveying and made it into a branch of mathematics. Geometry was no longer a way to measure the area of a field, instead it became the study of spatial reasoning. By becoming more abstract, it become more general. And more valuable. Geometry gave Euclid material to understand reason itself. It allowed Archimedes to build war engines. It was used by Newton to create the calculus.
What does this have to do with computer science? Well, computer science is currently at the stage that geometry was at in Ancient Egypt. It’s mostly vocational. And that’s not a bad thing. A development job is a good job to have. Much like surveying is a good job. But that doesn’t mean computer science is only vocational. In the same way that geometry is reasoning through space, so computer science is reasoning through time. Computer science is the study of how to create and describe processes. And processes work through time. The fact you can take a precise definition of a set of processes and run it on a computer is almost incidental. That’s why Hal Abelson said that computer science really doesn’t have much to do with computers. And the creation of computer programs doesn’t really have a lot to do with the collection and study of data, so it’s not really a science.
Why does any of this matter? It matters because of the way we are currently teaching computer science in schools. It’s still seen as a vocational subject. Children learn about office tools and spreadsheets and email and the web. In my country, the United Kingdom, computing inschools didn’t even involve programming until very recently. But it’s unlikely that any tool that a child of 9 or 10 currently uses will even exist in 10 years.
Instead, I believe computer science should be studied by children for the same reason that they study geometry — because it will teach them to think.