Computer Science: sorry, I can't fix your printer

Why isn't my internet working? What laptop should I buy? My PC is slow, can you fix it?

Little do my friends know that computer science is no more about computers than astronomy is about telescopes1.

I’m not going to lie, if I had a question about my telescope I’d probably ask an astronomer rather than a chef. I would do so, however, knowing telescopes are not their subject of study, but a tool they happen to usually use and, consequently, handle better than a chef does.

That doesn’t seem to be the case with computer scientists. Some people will probably be surprised to know computer scientists don’t take courses like "Introduction to printers", or "Advanced Microsoft Excel Formulas II"—because not only are we expected to know everything about computers2, but also about every tool ever built on them.

I must admit I was there too. I remember being confused seeing teachers at my university struggling to make the projector work, teachers that would end up being the bests I had. Aren’t you supposed to be an expert on electronics?

It wasn’t until my second year of university that I began to understand what computer science is all about. It would have been before if I had stopped to think about the definition of "compute":

com·pute - /kəmˈpyo͞ot/
v. calculate or reckon (a figure or amount).

Computer scientists study computation, that thing computers are designed to do—extremely fast, by the way. Studying computation means studying ways of calculating things, studying ways of getting a desired result from some data. Kudos to Spanish for picking a better name: “ciencias de la computación”, translated as "computing science".

Trip around Portugal (source)

But what is computation? Is calculating the tip for a waiter computation? It is, but calculating tips is probably not the most interesting nor complex problem we have. Take the well-known Travelling Salesman Problem as an example: let’s say you are driving, and you want to visit 10 cities in your country. In what order should you visit those cities so that you consume the less gas possible?

From a computer science perspective, solving the Travelling salesman problem would mean to state a sequence of instructions—what we call algorithms—that given the position of all those cities would determine the best route to take. An algorithm to calculate a tip could be something like this:

  1. Sum the costs of all dishes had.
  2. Multiply the total calculated in 1 by 0.2.

If you know how the algorithm for the Travelling salesman problem would look like, send me a message, I'm interested .

Within computer science, the TSP can be categorized as an optimization problem, but there are many other fields of study. Some computer scientists work closer to a computer2 because of theirs. Some of them may deal with 0s and 1s on a daily basis, while some others may be drawing matrices on a whiteboard and rarely write a line of code.

The fact that computer science is so coupled to all these electronic devices is just a huge (and happy) accident, that can also explain why electronic engineers know how to program. If computers were made out of living cells, we would have had computer scientists that (are expected to) know about biology; it’s just about having a machine that can execute instructions, our instructions.

Unfortunately, computer science is not the only field suffering from such a misunderstanding. I learned architects are not plumbers and mechanical engineers may not repair your car, but who knows how many other disciplines I still misinterpret. Anyway, show me that printer and I’ll see what I can do. But I warn you, I won’t be writing about that in my blog.


1 Usually attributed to Edgar Dijkstra
2 Our modern understanding of “computer”

Written on March 12, 2019