Monday, November 12, 2012

On software, engineering and computer science

Today the IBM Haifa Research Lab hosted the Programming Languages and Software Engineering whole day seminar, the keynote speaker was David Parnas,  one of the pioneers of software engineering,  Many years ago when I was in the Israeli Air-Force, I have investigated the new discipline of software engineering to see whether we can apply in a big software project that I've managed, and Parnas was one of the first names I have encountered, but this was the first time I saw him in person.  There was a panel on the term and profession of software engineering.   It reminded me one of the posts on this Blog from early this year that was entitled "Is Computer Science - science or engineering?" which was triggered by the fact that my daughter Daphna had a "science day" introducing the science classes in the high school she started to attend this year, and despite the fact that they teach "computer science" they did not include it in the science day - thus the school does not think it is a science.    

Interestingly, David Parnas, as well as other panelists, don't really think of computer science as engineering, in fact, David Parnas talked about a fight between an engineers association in Canada to forbid computer science graduates that don't really have engineering training to call themselves engineers.   I always thought that there is something pretentious in the fact that programmers (typically with computer science education) call themselves "software ENGINEERS".  As somebody said in the discussion today  -- an engineer is a person that can be sued on negligence if it will be proven that engineering rigorous principles were not met.
Until the time it will be true for software, software producers cannot call themselves software engineers.

Back to - is computer science a science -  Winton Cerf wrote in CACM an article entitled "where is the science in computer science?"   The answer according to Cerf is  that unlike physical sciences which are about modeling the world,  in computer science the science is tools for understanding complex software systems and make predictions about their behavior --  not really sure I am convinced...

It seems that computer science might be an animal of its own - neither science nor engineering, especially in the conventional terms.

1 comment:

Franklin Chen said...

I agree that "computer science" is really its own thing, or rather, its own family of things, all having in common the fact that what matters is not physical materials and their properties, but at the same time is highly complex and has to be understood through various forms of mathematical and philosophical reasoning.