What is Computer Science?


Inspiration

What is the study of computer science? What makes it unique? This is a question that I have been pondering lately. I am a computer science student at Case Western Reserve University. This question however, actually comes from my history minor. One of my history professors on the first day of the semester asked the class what is the study of history? What makes it unique? What are the things that only historians do? How is it different from other disciplines that might use history like political science or anthropology?. For those curious, his answer was what he calls the historical method, or the combination of periodization and specification.

This little exercise on the first day of class then inspired my own curiosity on how it can be applied to computer science. What is the study of computer science, what are the unique things that a computer scientist does? How is different from other disciplines?

The Maturity of CS?

Unlike the study of history, computer science is a relatively new discipline. Charles Babbage introduced the idea of mechanical computing to the world in the first half of the 19th century, and Ada Lovelace wrote the first program meant for a computer. Digital electronic computers are barely a century old. Alan Turing’s foundational paper On Computable Numbers, with an Application to the Entscheidungsproblem, in which he introduced the idea of the Turing machine, turned 89 years old this past November.

The first computer science programs at colleges and universities didn’t appear until the 1950s and 1960s. Additionally, these programs did not have a uniform or standardized method of development. Some evolved from the math department, others from the engineering school. This of course was not an absolute divide, math born programs had engineering elements, and engineering born programs had math elements. Additionally, over time these influences changed and merged over time. For example, the computer science department at CWRU for example, as far as I can tell, evolved primarily from the engineering school. However, its faculty is now mostly dominated by those with a more mathy background. I think that this is mostly a result of how computer science Ph.D’s are usually a few math degrees in a trench coat.

This is all to say that computer science is a relatively new discipline which evolved from a variety of sources, so at first I questioned if computer science is even old or evolved enough yet to have a concise answer to my question.

Asking Around

I started asking computer science professors as well as some fellow students what their thoughts were on the discipline of computer science. The first two professors I asked had similar lines of thought. One believed that at the academia level, computer science was currently mostly indistinguishable from math. Though it did not used to be the case, and he thought that AI could possibly change the dominant paradigm or current in computer science academia. The other professor thought that computer science was a unique meeting point of combination of math, science, engineering and art. Interestingly, both of these professors, along with some others that I asked later who gave similar answers, were more of the engineering, rather than the math type.

I also asked a few computer science professors that leaned more towards the math archetype. They too, gave similar answers to each other. They all said that both mathematicians and computer scientists connect separate ideas together into a unified whole. One of them phrased it as “going from specific to general”. Like seeing all the stars in the sky and coming up with constellations to connect them together. A mathematician does not care what the solution is so long as they can prove it, a computer scientist tries to do it in an efficient and practical way. One professor put it as “a mathematician will give a correct answer, computer scientists will give an efficient one”.

During the conversations, several professors also commented on how attitudes towards the effects of computer science have changed over their careers. When they were younger, there was much more optimism. A genuine love of solving problems and for the technology, and/or a belief that what they were doing could radically change the world for the better. However, over time, research and development became more focused on what could make a profit. One professor noted that the primary purpose of the internet today is not to connect people anymore, but to move and make money.

My Answer

While all of my discussions were interesting, not one could give me an answer in just a few words like for the historical method. Except for one student, who said “simulation”. I found this argument interesting. At its core, all programs define some system that can imitate (or simulate) some aspect of reality, or an imagined one. A program can do this by defining objects, relationships, behaviors, etc. Take a simple script for example, that takes in a .txt file and adds a line number before the start of each line. The code itself is a simulation of this transformation.

This interpretation is admittedly quite philosophical, and perhaps stretches the definition of simulation, but I think the idea still has merit. Additionally, In the historical method, one word does not suffice, so maybe what is missing is a partner to simulation. I think when pared with abstraction, the process of hiding details in a representation of something, the combination holds more water. The programming languages we use are themselves systems of abstractions, and creating a program also provides an abstraction. Computer scientists simulate through abstraction.

At the moment, the combination of simulation and abstraction is my best answer, but this does not quite yet feel like the Right Thing to me. However, I am still young and relatively inexperienced with computer science. Maybe I will come up with a better idea in the future, or grow more confident in this one and find a more articulate explanation. To the reader, if you have any brilliant ideas or critiques of my argument, I would love to hear them, feel free to email me at hwodza [AT] gmail [DOT] com.