Does computer science help you program?

The relationship between programming and computer science is hard to describe. Purists will say that computer science has nothing to do with programming, but that goes too far.

Computer science is about more than programming, but it’s is all motivated by getting computers to do things. With few exceptions. students major in computer science in college with the intention of becoming programmers.

I asked on Twitter yesterday how helpful people found computer science in writing software.

In a follow up tweet I said “For this poll, basic CS would be data structures and analysis of algorithms. Advanced CS is anything after that.”

So about a quarter didn’t find computer science useful, but the rest either expected it to be useful or at least found the basic theory useful.

I suspect some of those who said they haven’t found (advanced) CS theory useful don’t know (advanced) CS theory. This isn’t a knock on them. It’s only the observation that you can’t use what you aren’t at least aware of. In fact, you may need to know something quite well before you can recognize an opportunity to use it. (More on that here.)

Many programmers are in jobs where they don’t have much need for computer science theory. I thought about making that a possible choice, something like “No, but I wish I were in a job that could use more theory.” Unfortunately Twitter survey responses have to be fairly short.

Of course this isn’t a scientific survey. (Even supposedly scientific surveys aren’t that great.) People who follow the CompSciFact twitter account have an interest in computer science. Maybe people who had strong feelings about CS, such as resentment for having to study something they didn’t want to or excitement for being able to use something they find interesting, were more likely to answer the question.

 

3 thoughts on “Does computer science help you program?

  1. > I suspect some of those who said they haven’t found (advanced) CS theory useful don’t know (advanced) CS theory. This isn’t a knock on them. It’s only the observation that you can’t use what you aren’t at least aware of.

    I don’t think this is right. You can use a result that you aren’t aware of, but you won’t realize that that’s what you’re doing. There should be some smallish population of programmers who say that they don’t find CS theory useful because they don’t know what it is, but who, if they were exposed to formal training, would realize they already get use from parts of it, and would therefore change their answer to the question “is CS theory useful?”.

  2. In computer science, it’s enough to do something once, or show how it could be done. In software engineering, it’s necessary to actually implement slightly-different variations on the same basic ideas, over and over and over.

  3. Language and automata theory are more advanced than data structures and analysis of algorithms, yes? Regular expressions and parser generators are something I use pretty often in my work, and the foundations to my understanding started in upper-level CS classes. I remember the afternoon after an automata theory course lecture where I finally understood what regular expressions were supposed to be. Until then, I translated them in my head to glob-style patterns, which means I didn’t understand most of their power.

    Most people working with modern compilers use methods out of advanced CS theory. I’m thinking specifically of static single assignment form. But for most people that is only an indirect way in which advanced CS theory helps write software.

Comments are closed.