Sunday, September 28, 2008

Thoughts on computer science

Thoughts on computer science.
Is it a science?
Note you can use some this for your SOP. However quote the original author's name :Dr. Robert Bridson of University of British Columbia.

The debate rages on: is CS a science, or engineering, or math, or even art? Funnily enough, often you don't hear from those arguing how they define science or engineering or math or art before they start listing arguments one way or another. This is not a silly exercise: I think it would be difficult to exactly define these disciplines, since the boundaries certainly are fuzzy. Is a physicist designing and building a new apparatus to test someone else's theory doing engineering? Is an engineer theorizing and testing by experiment how natural materials behave under loading doing science? One of the gold standards of traditional mathematical results is that they be elegant, beautiful, pleasing---is that art?

I think the truth is simply computer science is more or less all of these things. Attempts to nail it down will ultimately fail.

CS is science---if the defining feature of science is the scientific method of testing theory with experiment. Outside of some theory, most algorithm development goes along the lines of speculating how problems need to be solved according to some intuitive model of the domain, building an algorithm to fit that "theory", and then running experiments to demonstrate the (in)efficacy of the algorithm. HCI usability studies, performance tests, and the studies of many other branches are clearly scientific. Even debugging, beyond the searching-for-typos level, is arguably science: you start with a theory of how a program is (mal)functioning, then design experiments to tease out if your theory is correct allowing you to find and attack the bug.

CS is engineering---if the defining feature of engineering is building useful artifacts in a rigourously informed way. Building new hardware, large software systems, or studying how to do these things lies unquestionably in this domain. Even a lot of heuristic algorithm development is arguably engineering.

CS is math---if the defining feature of math is the logical synthesis of unambiguously true statements. Depending on the field within CS you look at, there may be more or less theorems and proofs in the papers, but even where they are not apparent, there is also the universality that computer science is steadily joining math and statistics in. In virtually every branch of science, the essential tools of analysis are math, statistics, and increasingly computation (or at least information technology).

I find it harder to argue that CS is art, though certainly aesthetics play an important role (but then again they play a role in virtually every endeavour). I would say the defining feature of art is the _expression of quintessentially human attributes to communicate those to other people. There are artists who indeed write software or build hardware as a means of _expression, but I would guess many would debate if that truly is computer science. I'm undecided---or rather as with most things in life it's not black and white, and trying to force a shade of grey one way or the other is unproductive.

No comments: