Friday, February 25, 2011

What is Computer Science?

Is it an art? a math? a science? or engineering?

Well, strictly speaking. Everything is an art-form, so it is trivially an art.

There are mathematical models about computing and you can apply computers in math, so it is a branch of mathematics in both theoretical and applied aspects.

It induces complexity that can be studied and model. Problems can be studied in a pure fashion, and methodologies can be deployed to measure the unknown. It is a science. Debugging is 100% pure science along with good testing.

Is it engineering? Well. This is the tough one. By itself, it is not. It's too much art and not enough discipline. How many times can projects be rewritten? I see engineering as more of a way to overcome the limitations of reality. However, software and computing mostly have no limits except time and did it compile. Where as most other forms of engineering have limits like gravity, friction, heat, electromagnetic interference, collisions of matter, speed of light, and other limits. Recommend Reading: Why writing software is not like engineering.

Computing is very platonic and there are many ways to do things, so can computing be an engineering discipline?

This is where the role of the software architect comes into play. Take an expert programmer, give them a hat that says "software architect", and then task them with building an architecture that will enable a group of developers to build a business. At this moment, the software architect will cast the platonic world into the real world and introduce limits and constraints that enable the team to implement engineering methodologies.

This has some interesting consequences in industry. First, businesses diverge in their computing reality. Second, you see an order of magnitude increase in not-invented-here syndrome in software than other engineering fields. Finally, we will never agree on anything for long periods of time because it just keeps changing because we haven't come to agreement on "what is software engineering?". We haven't figured out a reality yet that makes enough of us happy.

Now, let's discuss how academics fucked up computer science education.

No comments:

Post a Comment