Thursday 7 June 2012

What is Computer Science?

In a rather unhelpful attempt to work out what I really want to do with my life, I decided that since my main interest at the moment is computer science, I would try googling the difference between Computer Science and Computer Programming or Software Engineering. Unfortunately for me, no-one really seems to know what the difference is, and this leads to some rather interesting discussions on forums (such as this one on Advogato) that actually told me nothing that I didn't already know.

In other words, I know that computer programmers write programs (no duh!) but that they have to understand a decent bit of theory to program well. It is also a fact that a self-taught computer programmer is able to learn enough to be one of the top at whatever they do, without a formal university education in programming or computer science. I also know that computer science is a fairly theoretical field much like physics is, but that most people consider it to be all about algorithms.

Now I know that there is far more to computer science than just algorithms, but I still can't work out what it is. My current university degree doesn't seem to help, since I've done the first three computer science courses and so far all I've learned is how to write average Java code and maybe solve problems (although I mostly learned that by entering programming competitions where the problems were harder and there was time pressure). Also I know that there is a lot more to programming that we haven't covered yet(but I did in high school) like documentation, and proper design.

All the posts that I come up with about computer science vs programming seem to be UK based where people have the opposite problem to me, they are being taught real computer science in their computer science degrees, when actually they just want to know how to do some good coding and get a job as a software engineer. I agree that that is what most people want from their computer science degree, and so my degree is teaching what most people expect it to teach them, unfortunately it doesn't seem to teach the difference between computer science and programming.

In my ignorance I feel like I am completely missing the point somehow, however, I really wanted to know the answers to my questions, and I can't find them.