- Computer Science is not science
- Software Engineering is not engineering
- Computer Science (which isn’t science) has very little to do with computers
It is obvious that many professionals, students and academia’s will be provoked by these statements. But with the pent up provocation against statements that seem to outrightly challenge a discipline and career that we have ever known and loved from generation to generation, comes inquisitions like:
- Why not?
- If true, what should the discipline be called?
- Also, if true, why the misconception which has lasted for generations and failure to have these disciplines addressed ?
A concrete and well definitive answers will be given to address these inquisitions.
- Why Not : Let’s have a clear picture of what science really is.
“Science is the study of the natural and physical world using theoretical models and data from observations and experiments” -[Princeton’s Wordnet]
Science follows the scientific methods of observation, formulating a falsifiable hypothesis and testing out this hypotheses with the hope of establishing an empirical evidence for or against.
Empirical evidence is simply data or information from observation, experiment or experience rather than theory or logical reason. It is that evidence that can be directly measured and observed in the real world and this forms the very foundation of science.
Normally, a scientific theory usually connotes a theory that is backed up by empirical evidence but they are classifications of theories based on how strong or how weak a theory is supported by empirical evidence. These classifications are:
A. Theories Strongly Supported by Empirical Evidence - e.g The Big Bang Theory (cosmic microwave background, red shift etc), The Theory of Natural Selection (fossil records, homologous structures etc)
B. Theories with Indirect or Partial Empirical Evidence - e.g Dark Matter (supported by the gravitational effects of the galaxies but the exact nature of dark matter remains largely unknown)
C. Theories with Limited or No Empirical Evidence - These are mere hypotheses and speculations like String Theory, Multiverse hypotheses.
D. Discredited Theories - Some theories that were once considered feasible have been discredited or replaced by better, well credible theories as new and better empirical evidence emerged e.g The Steady State Theory which was replaced with The Big Bang Theory.
It is very evident and glaring that science and its methods are only viable for physical, natural (evolving) processes and not something abstract or logical. Softwares are considered abstract because it consists of logic, instructions and algorithms which generally lacks empirical evidence.
Resultantly, because softwares, programs or algorithms are abstract, lacking empirical evidence, and exists neither in the natural or physical world (as “always there” waiting to be “discovered” and “investigated” as typical of science), and also because we cannot implore the use of scientific methods to probe them, then it makes perfect sense that Computer Science cannot be science. This consequently explains why software engineering cannot be engineering.
According to the American Engineers Council for Professional Development (ECPD), engineering is :
“The creative application of scientific principles to design or develop structures, machines, apparatus, or manufacturing processes, or works utilizing them singly or in combination; or to construct or operate the same with full cognizance of their design; or to forecast their behavior under specific operating conditions; all as respects an intended function, economics of operation and safety to life and property.”
Engineering and science while closely related, are 2 distinct fields : while science is concerned with the understanding of the natural world through observation and experimentation to develop theories to explain phenomena, engineering (with the exception of engineering science, which entails everything about science methodology to create a real world solution), is the application of these scientific principles or theories to design, build and maintain systems, structures, machinery or tools. So we now see that Engineering is not engineering just because of it design approach. Traditional engineering must be validated by science. If you don’t apply science in a structured way, it would not be considered engineering. Engineering is principally about using scientific principles or methods to create or improve things. Without the application of science, it would be more alike to craftsmanship or trial-and-error problem solving (which is basically all that entails programming and software development). This is why most applied sciences like medicine and engineering are supported by mandatory certifications and licensing, issued by a governing board that ensures strict compliance to these principles.
It is imperative I mention that most abstract disciplines like mathematics, logic, philosophy, theoretical computer science etc are regarded as formal sciences but which are still in disagreement and hasn’t been wholly accepted as scientific disciplines because of the lack of empirical evidence to support them. Unlike science which is as old as man, tracing far back to ancient civilizations, formal science is quite modern, tracing back to the mid 20th century. It was introduced by the growing number of abstract studies and the penchant need to group or classify them according to specific interests. This will be explained in detail in question 3.
- If True, What Should The Discipline Be Called? : If you read any computer science book, the first chapter is likely going to be about the history of computers. Probably from the Abacus to the ENIACs, then maybe the first generation mainframes and minicomputers to micro computers. But is our discipline called computer science (which isn’t science by the way) because we use science methodologies to study a man made equipment?
Fellows and Parberry said “Computer Science is no more about computers than astronomy is about telescopes, biology is about microscopes or chemistry is about beakers and test tubes".
It goes without a doubt that computers are tools. The history of computers (not as tools) predates history itself, as old as man. Man constantly came up with solutions through certain procedures or functions to solve a problem. These include hunting, shelter making provisions or even recipes. Solutions were achieved by man’s certain procedures or functions (usually with certain defined parameters) designed to tackle his problems. Indeed, in the year 1611, computers was a name given to certain workers tasked with computing problems to arrive at solutions. There is a modern name ascribed to this discipline and it’s called Algorithm and those who study and practice it are called Algorithmist. An algorithm is a procedure or function, with well defined parameters, to solve a problem. The first, generally agreed algorithm was written by Euclid in the mid-4th century BCE. His method for computing the greatest common divisor (GCD) of any 2 positive integers is generally considered to be the first documented algorithm as seen below:
E1. [Find remainder.] Divide m by n and let r be the remainder. (We will have 0 ≤ r < n.)
E2. [Is it zero?] If r = 0 the algorithm terminates; n is the answer.
E3. [Interchange.] Set m ← n, n ← r, and go back to step E1.
Alan Turing, considered to be the father of modern computing and the inventor of the Turing Machine which is a fully feasible procedure, and works regardless if it’s abstract or physical, as shown below:
IF state = 3 and symbol = 0
THEN write 1, set state to 0, move right
Logically, it consists of an infinity long tape with a read/write head, where each tape is either 1 or 0 for states. This algorithm is responsible for all digital computers and electronics.
As simple, short and concise as the Turing machine is, it is the very essence and basis of all modern computers both presently (while you read this article), and any time in the future. Even the new, upcoming paradigm of computing called quantum computing which uses Qbits superposition of 1’s and 0’s along side the usual 1’ and 0’s, does not fade out the Turing algorithm but enhances it, making it much more faster (parallel computing) and super efficient.
According to Kurt D. Krebsbach,
“The most advanced program in the world can be simulated by a simple TM - a machine that exists only in the abstract realm...no computer required! This is an important reason why CS is not fundamentally about physical computers, but is rather based on the abstract algorithms and abstract machines (or humans) to execute them” — Kurt D. Krebsbach [Computer Science: Not About Computers, Not Science, Department of Mathematics and Computer Science, Lawrence University, Appleton, Wisconsin 54911 ].
- Why The Misconception? - As time progresses and with the emergence of several disciplines and course of study, especially as such discipline grows (either as a new discipline or as a branch of a bigger course or increasing study groups of students or enthusiasts), there’s usually the tendency to group such disciplines to a particular, broader group or branch of a broader discipline, just for association sake. An example is bioinformatics which might be grouped under biology (true science) and the so-called computer science (not science). Also, data science (which also isn’t science) may be linked to mathematics, statistics or the so-called computer science. This has led to relational errors which have spun on for a long time.
On the other hand, some of these disciplines don’t grow as fast, being stunted. Therefore, the need arises to co-join or associate with a much broader umbrella to maintain relevance. Example is Library Science (really?!) which experiences slower growth, due to factors such as niche appeal, slower technological advancement and limited resources being associated with information technology or “data science”. Same with cognitive psychology’s association with AI or behavioral economics for brain-computer interface.
Some are just plain, old fashion error of association caused by (sometimes) a fine, thin line between -for example- engineering and science.
Why these misconceptions haven’t been address is precisely synonymous to the same reasons buttressed above. It all boils down to relevance and preservation. Plain mistakes of association in disciplines like “Computer Science” with science may be almost impossible to correct due to prolonged usage and as such, has etched too deep to be retraced back.
To wrap up, I’d like to close with these remarks by prominent icons of our discipline.
“I’ve never liked the term ‘computer science’. It is a grab bag of tenuously related areas thrown together by an accident of history, like Yugoslavia” — Paul Graham [Arc Programming Language Inventor & Ycombinator Founder]
“Science is concerned with finding out about phenomena, and engineering is concerned with making useful artifacts. While science and engineering are closer together in computer science than in other fields, the distinction is important” — John McCarthy [Father of Artificial Intelligence & Inventor of LISP Programming Language].
Top comments (0)