Computer Science is it a Science?
During a conversation with my new boss I was asked if Computer Science was "really" a science. I was in shock and quickly replied yes. But the question had sent a bullet through my ideas about science, engineering and life in general. I have since considered both sides of the question and I have formulated a few thoughts on the topics. Who am I kidding, as with most things, I have formulated an entrenched position that I will defend even under ludicrous circumstances.
To understand where the question comes from you need to understand a little about the pedagogy of my new boss. My new boss is an engineer in biosystems engineering, in fact he is the chair of my department and hence I call him my boss. He specializes in the topics of agricultural engineering, odour pollution and food storage and did his PhD at Penn State on finite element analysis of something or other. It is with these credentials he had calmly and quietly asked if computer science is a science. Of course my initial retort was not sufficient to convince him or perhaps even to convince myself.
His desire to ask this question stems from his training as an engineer and the desire of most engineers to classify things. The most fundamental classification is whether a particular study is engineering or other. Amoung all things to study the line between engineering and other is most blurred where engineering meets science. However most people who ponder this classification scheme form opinions as to what constitutes science and what constitutes engineering. I myself have opined that engineering is the artistic expression of functionality or more clearly it is all functional crafts.
Before discussing computer science I think it is important to state my opinion on what Science is. Science includes all forms of natural philosophy. Science seeks to understand truth and the nature of proving what is true.
The clear difference between science and engineering is in thier purposes. Science does not need a purpose, it can be incited purely by curiousity and is not necessarily functional but is always an exploration. I also opine that science is "good science" when the exploration is rigorous and therefore planned. It is possible to contend that any science involving statistics must necessarily be rigorous in order to accurately determine degree of freedom but perhaps that is a another random walk. Conversly engineering must have a purpose due to the functional nature of expressions of engineering.
Computer Science is the science of what can be done (computability) and how it can be acheived (algorithmics and data structures). I have overly generalized disciplines of computer science that often encompass both of these items. In many ways computer science in its most general is the science of engineering. It can encompass operations research and engineering communications and I suspect I will be grilled on my thoughts here.
Where people get confused is when computer scientists have a purpose and do some engineering or where the science they pursue relates to social structures or humanity in general thereby touching upon the social science.
Still this system does not cover everything as artistic expression without purpose is Art, while general philosophy extends beyond the natural world and reflections thereof. But such a discussion is clearly a philosophy of its own and definitely contradicts positivism which would probably spark a very very informed debate out of Franz Oppacher (for or against I am not certain).
Oh and do not confuse the study of software engineering with software engineering, which are two separately definable things that both go by the name "software engineering" both of which and are often practiced by people professing to practice only one or the other.
