What I Do: Part 0

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!

About these ads
This entry was posted in computation, meta and tagged , , . Bookmark the permalink.

6 Responses to What I Do: Part 0

  1. Bryce Halpern says:

    Hi -

    Many years ago there was a mini-computer company named Digital Equipment Corporation in Massachussets (MIT spinoff). DEC failed because they did not respond to the PC revolution.
    One of the final internal projects of DEC was the “Digital Assistant”. This was to me a very exciting idea, which has not been seen yet.
    The Digital Assistant as an Artificial Intelligence module which actively watched the user’s actions in detail. If the Digital Assistant noted the user performing repetitive tasks, it would interrupt the user to ask, “Do you want me to do this for you?”, and show an example of how the DA would complete the repetitive tasks in the future.

    Are you aware of any “digital assistant” projects?


    • Brent says:

      Hi Bryce,

      The closest things I can think of are (1) Microsoft’s “Clippy” assistant, of which some of the core code later became (2) Apple’s “Siri”. Google apparently also has some things kind of like this for Android — e.g. if it notices you looking up information on a particular flight it will offer to send you updates on that flight in the future, and things like that.

      To me this is not an exciting idea, and I don’t think it will catch on. Here’s why: anything this “smart” is impossible for the user to control, in the sense that the user will not be able to predict when and what it will do. It is likely to get things slightly wrong, or activate at an inappropriate time, or fail to activate when the user wants it to, and the user will just be left bewildered and frustrated. Even if something like this worked well 80% of the time (which would be astounding) that remaining 20% would be enough to drive most users nuts. This sort of built-in “intelligence” works well only when limited to a very narrow domain. (Note that “Wolfram Alpha” has a similar problem.) Instead, we should be focusing on powerful but simple-to-use systems and languages allowing users to precisely describe some repetitive task to be performed (editor macros, mail merge, Apple Automator, and so on).

  2. Hi Brent. This looks like an interesting series.

  3. Pingback: Making a computer out of… dominoes? | The Math Less Traveled

  4. Michael Walther says:

    I once read a book about Charles Babbage: In Babbage times Computers were people, mostly plasterer, employed to calculate nautical tables. The task was divided in subtasks and very ‘Computer’ had to execute his subtask, to add two numbers f.e. The tables were apparently very important, tough full of errors, so Babbage tried to build a cogwheel computer.

  5. Pingback: What I Do, Part 1: Programming languages | The Math Less Traveled

Comments are closed.