This is the first in a planned series of posts explaining what I do in my “day job” as a computer science PhD student. The idea is to write a series of posts of increasing specificity, but all aimed at a general audience.
Have you ever wondered what I actually do all day, other than write this blog? (Well, probably the answer is “no” since, as we all know, people on the Internet don’t actually have real lives, in the same way that kindergarten teachers live in the closet in their classroom.) But what I do will actually be quite interesting to readers of this blog, I think.
So, to start off: I am a computer scientist. What does that mean?
What I don’t do
Let me begin by saying that “computer science” is actually a terrible name for what I do. It’s akin to an astronomer saying they study telescope science, or a microbiologist saying they study microscope science. Of course, astronomers don’t study telescopes, they use telescopes to study stars and supernovas. Microbiologists don’t study microscopes, they use microscopes to study cells and DNA. And I don’t study computers, I use computers to study… well, what?
In a broad sense, what computer scientists study is computation, by which we mean processes of some sort that take some information and turn it into other information. Questions that can be asked about computation include:
- What are different ways of describing a computational process?
- How can information be structured to make computational processes easier to write, more efficient, or more beautiful?
- How can two different computational processes be compared? When is one process “better” than another?
- How can different processes be combined into a larger process?
- How can we be sure that some process really does what we want it to?
- What sorts of “machines” can be used to automate computational processes?
- What (if any) are the limitations of computational processes?
I’m sure other questions could be added to this list, but these are some of the most fundamental ones.
Notice that none of these questions inherently have anything to do with computers. A “computational process” could be carried out with piles of rocks, an abacus, paper and pencil (did you know that the word “computer” used to refer to a person whose job it was to carry out computational processes?), a carefully set up room full of dominoes, or a carefully set up test tube full of DNA. It’s just that modern computers can carry out (most) computational processes many orders of magnitude faster than any other method we know of, so they make exploring the above questions possible in much deeper ways than they would otherwise be. And indeed, the mathematical roots of computer science go back many hundreds, even thousands of years before the advent of digital computers.
So, I study computation. But as you can see from the list of questions above, that’s still incredibly broad. In fact, my research focuses on the first two questions in the list above. In Part 1 I’ll describe those questions in a bit more detail. Also, I’m happy to try to answer any questions left in the comments!