What kind of discipline is computer science? I thought it was a science when I received my bachelor's degree. I believed its subdiscipline software engineering was engineering when I received my Ph.D. I’d heard, and would continue to hear, “This isn’t any kind of science/engineering I know!” from physicists and electrical engineers. I tried for years to prove them wrong. But now I think they’re right.
I’ve seen computer science described as many things—a blend, usually, of disciplines: mathematics and electrical engineering, with psychology thrown in, and occasionally more exotic area like physics (quantum computing) and molecular biology (biological computers). Certainly computer science research and practice draw from these areas, but drawing from is different from being, or even being derived from. And none of these descriptions quite hits the mark. In my opinion, we would be best served by viewing CS as a branch of philosophy.
From Scientific American
View Full Article
I remember back in the Mid 90ties I integrated University for a Major of Computer science Degree. I was coming from a Mathematics background having spent about two or three long years studying Maths; and in which solving hard and complex math problems was my sole activity. I was told that mathematicians were the first to write computer programs and were the best ones to do that. So I came with a certain confidence and serenity that ill be doing well as a Software Engineer Student. Needless to say that the first three or four months were so frustrating for me. Almost all the computer programs i wrote in Lab assignments were broken. My confidence began to shake!
I remember at a certain time during this semester, I felt a deep need to Talk to my adviser. I told him:
"Sir, before i came here i was told that software writing is merely doing mathematics. why is it ,then, Im capable solving hard math problems but yet incapable writing a correct computer program ?"
My advisor smiled and told me :
" Well, try to think about a computer program as a Dynamic Math problem. A Math problem in which all variables and data are constantly moving and changing. Before, you were doing Static Math. Now its time for you to start doing Dynamic Math!"
I admit this advice helped me start thinking differently about computer programming. However, It didnt gave me the full answer. I was feeling that the Software Engineering discipline couldnt be easily categorized as being Science or Engineering or Art or any other known field. It turns out I was not the only one facing this dilemma. Recently I read an article by Bruce Eckel in which he claims that Writing Software is Like Writing.
While i do agree with most of what Bruce said in his article; Yet i still tend to believe that software is more than writing. In my view, its a complex mixture of disciplines involving at the same time pure science , Engineering, Art , Writing and probably many other disciplines. A good software developer -for me- should be Many Men in one Man. He must be able to switch his mind pattern of thinking between different modes (To say disciplines). There are circumstances where the programmer should act as a pure scientist. In other situations he should behave as an Engineer; and In other times he has to think and feel like an Artist.
I Read an article in ACM Magazine (CACM , issue March 2009) by Peter J.Denning and Richard D.Riehle ; in which they are -too- complaining that:
"software Engineering Is Not Engineering !"
They Note that :
"
software Engineering may suffer from our habit of paying too little attention to how other Engineers do Engineering."
In their article they propose :
" we need to encourage system thinking that embraces hardware and user environment as well as software."
It seems that each discipline veterans are trying to adapt software writing to make it fit their own field. For me, I would love to see software continue being an obscure and undefined profession. Its this obscurity that makes the beauty of this field. It is this nature of such a Multi-discipline , Multi-skill, Multi-facets activity that makes software an exciting , rich and continuously evolving discipline.
Displaying 1 comment