You have no idea what computer science is really about.
(Unless you do it, of course, in which case you can go back to sleep.)
It’s surprising how many people just don’t know what computer science actually involves. Actually, it’s not all that surprising, since it’s not a very popular subject in the public mind, and it’s become connected with a shedload of negative associations over the years. Astrophysics, molecular biology, mathematics: they all bring up images of heroic white-coated lab legends developing miracle cures and developing theories about exploding stars.
Computer science not so. The default image is more like a spotty kid sitting behind a computer in a darkened room with the green light from his terminal making his skin get even worse. Okay, there have been some depictions of cool hackers (the hero of WarGames actually got the girl! Not to mention the bleeding Matrix) but there’s still always a chance that people are going to get The Wrong Idea.
One of the reasons for this is that The Right Idea is actually quite difficult to explain. It’s easy to understand what biology is about. It’s about animals and plants, innit? If you’re doing a biology thesis you can easily explain that it’s about, for example, the reactions going on inside a certain cell. Joe Public might not understand the name of the cell or what the reactions do, but he build a vague picture of it in his mind anyway.
And it’s easy to understand what physics is about
: it’s about understanding how the world works. We can get a vague picture of most physical theories because we’re used to the real world events which they describe: aerodynamics is airflow, electronics is about video players and such. Even string theory we can kind of grasp. It’s about those weird stringy things that underlie the fabric of the universe, innit?
Most sciences are easier to get because they’re about Stuff. They’re about the observable behaviour of tangible objects. But say I tell you that I’m studying complexity; or computability; or termination. You have no idea what the bleeding feck I’m on about. Because these things don’t actually exist; they’re abstract concepts, they’re crazy convoluted ideas build on top of a big tower of other mad ideas, each of which takes you a bit further away from reality.
(There’s also the name, which is a bit of a drag. Molecular biology! Astrophysics! Particle physics! Quantum electrodynamics! They all sound cool. They sound as if they’re practiced by attractive young people with trimmed facial hair and a killer attitude. But “Computer science.” Eurgh! Computers, as we all know, are slow, annoying, perpetually crashing and just generally ****e. And science is just the boring stuff, the three phases of water and the formula for density and all that. My subject is very much let down by its name.
People have tried to call it Informatics, but that just sounds even worse. Like a sort of ******* born from Information Technology, that horrible A-level about how to use the numpad properly, and your grandma’s Wash-O-Matic machine from 1972.)
You are not going to understand what computer science is about unless you climb the tower, or at least stand a bit further back so you can see what’s going on. That’s too much for a short article, because you’d have a fair bit of walking to do. But I’m going to show you a Polaroid and see if it helps.
Let’s start with what computer science is NOT about. These are the top few things that people usually think I do.
- Building computers
- Fixing computers
- Learning how to use Word & Excel &c
OK. Imagine I do fine art.
“Building computers” to CS is like putting together new types of paint roller for an artist.
“Fixing computers” to CS is like an artist repainting the trim on your cupboards.
Learning how to use Word is like an artist studying one of those paint mixing machines you get in Wickes.
Programming is kind of geting warm. But most commercial programming projects feel like being forced to redecorate your house in Dull Matt White for an artist.
We don’t put computers together. Idiots with soldering irons can do that. We don’t learn to use crappy Microsoft software either. Idiots without soldering irons can do that.We do program, and that’s getting close to the answer; but hardware is just the tool we use, the paper that the interesting stuff happens on.
Computer science is about problem solving.
It’s about taking a problem, and asking: can we solve this? How do we go about solving this? How long will it take? Can our computer do it in less than a year? Is this the most efficient way of doing it? Once we’ve solved this, what other equivalent problems do we have the answers to as well?
You’re probably wondering what sorts of problems. Answer: the difficult ones.
- How do you sort a list of numbers?
- If you’re a salesman with a list of towns to visit, what’s the most efficient way of doing it? (the infamous Travelling Salesman Problem)
- If a 10 megaton nuclear device goes off in Leeds, how many people are going to die?
- Into what orbit do we inject a satellite in order for it to reach Mars?
- Is there any such thing as an unsolvable code?
It’s about working out an algorithm, a recipe for solving the problem. Programming is different from this; it’s about implementing the algorithm, getting all the little details exactly right, making all the buttons nice and square, and making it print pretty pictures on the screen. We can leave that to the code monkeys, as Rembrandt had a man to fill in all the boring areas on his canvasses.
Yes, I’m comparing myself to an artist quite heavily here. This is because we are artists, thank you very much.
Science is where there’s one way of getting it right, and you’re either right or wrong. (Accounting. Physics. Biology.) Art is where there are infinitely many ways of doing it, and you try to do it as well as possible. (Creative writing. Theatre. And mathematics, because although there may only be one right answer, there are so many ways of proving it.) Computer science is art because you can whip up a program to do something horribly and slowly- or you can make it beautifully speedy and fast.
Science is about observing the world and thinking up theories to explain it. Art is about creating: coming up with things that have never gone through the human mind before, whether they’re novels or new ways for a machine to play chess.
Computer science is art because all of it, from transistors to supercomputer operating systems, has been created by man. We started off with static electricity and batteries made of copper and zinc, and we worked our way all the way up to the microprocessor, with billions of transistors and the complexity of a city. And then we transcended it; we wrote languages that lie on top of it and abstract away all the dirty electronics and let us juggle ideas and concepts and data by writing a few lines of text. The Internet, artificial intelligence, computer games and traffic light controllers and the programs that fly a Eurofighter: we built all of it, right up from the ground. We’re working on a massive intricate tower of ideas, each level taking the complexity of the previous one, making it simple and manageable, so that we can develop even more complexity on top.
And we’ve only been at it for fifty years. Look how far we’ve got. We can tell what the weather in Rio is going to be like a week from now; hell, we can pick up a phone and talk to someone in Rio, and our words are being bounced off pieces of metal flying 22 thousand miles about our heads.
We’re only now working on the foundations. What is the view going to be like from the top?