Computer Science Is Not About Programming

This is not yet another war post about the difference between this and that. In fact, what’s motivated me to write this post is a TA at my university who was shaming students who graduate university without learning how to program properly. This idea was intriguing to me as I thought to myself that computer science is not about programming!

Hamada Helal, the king of obvious

Actually, what I believe is that computer science is about computing. According to Merriam-Webster, the definition of computer science is “a branch of science that deals with the theory of computation or the design of computers”. On the other hand, programming is merely one way to do computation, supposedly, in a short period of time using a big calculator that is a computer (I know, cell phones exist!). Having computers do calculations for us is just an extra privilege.

More so, computations don’t have to be done on a computer. An A4 sheet of paper and a pencil could be used as a computer, although this is much slower and many times harder to follow and keep track of compared to a regular computer. There are indeed many ways to do computations without a programming language. A theoretical model of computation is a model which describes how a set of outputs are computed given a set of inputs. One of the most famous models of computation is the Turing machine. A Turing machine is an abstract computer that has an infinite memory and can sequentially traverse this memory as needed. It resembles a program which takes an input and computes an output (in terms of accepting or rejecting the input) but has access to an infinite memory.

Computer science is about computing.

I have seen many students who were excellent students but were poor programmers and that’s totally fine. Those students, if they want to, can pick up academia and research for example, become computer scientists and excel at that. In contrast, I consider myself a fairly good programmer, however; I also consider myself a not-so-good student. It doesn’t have to be a choice between either of this or that; of course, this is not a general rule. One can be a good academic and a good programmer at the same time.

The thing about degrees is that computer science students expect that their major should include more “programming” courses and they blame their degrees for the lack of computer programming classes (I used to think that way when I started my degree). However, what they are missing here is what computer science is actually concerned with —namely, the theory behind computation.

In conclusion, computer programming is only one form of doing computation. Understanding the theory behind computation is different from writing programs to do the computation.

Things I read on the topic