Tuesday, December 9, 2008

Computer Science

It is true that most fundamental questions are answered at the end only. So, at the end of my MS in CS i ask:

Why Computer Science is a science?

Milena in one of her class asked us this question and i couldn't find an answer. Computer Architecture, Systems, Software were all engineering fields. There was CS theory but why would that be considered as science? Just because it has got some proofs, it does not qualify it as a science. If you prove limits on a bridge load that it can sustain, it will still be civil engineering not civil science.

My undergrad degree was in Computer Engineering and it was true to its name. We were doing a lot of engineering there. While it is clear what makes Computer an Engineering field, the reasons why it is a science is not clear to everyone, atleast it was not to me till sometime back.

Wiki defines Computer Science as
Computer science (or computing science) is the study and the science of the theoretical foundations of information and computation and their implementation and application in computer systems.
Well i disagree. There is no science in implementation, there is definitely engineering, Some (like Shiv) may even call it an art but there is no science there. And what is meant by theoretical foundations of information?

Computer Science has to offer something that has not yet been offered by any other science field so far. What is unique in Computer Science which makes it special. Milena after asking this question gave an answer to which i totally agree.

The answer is "scalability". In the definition given at wiki above, it is "Theoretical foundations of computation". Every field in science describe the behavior at a particular stage or at some point but how will the behavior change if the system is scaled up or down. Computer Science in its core addresses this issue of scalability. The big-O notations, and other fundamental concepts of complexity theory are in-effect addressing the issue of scalability only. O(nlogn) denotes that no matter by how much the problem size may be , its time complexity will be bounded by nlogn. This aspect of bounding a problem in terms of its size is very crucial. Yet no other stream of science had covered it properly.

Scalability is deeply coupled with computation, so computation is an inherent component. Computers with their massive ability to process computations had made it possible to scale to large problem size. Decoding of DNA sequnces, large scale physics simulations, climate predictions etc. are all examples of this computation.

No comments: