Computer Science is a broad term used to describe many areas in the field of computing. Wikipedia defines Computer Science as the “study of the theoretical foundations of information computing and their implementation and application in computer systems.” In recent years, defining this field as a science has come under criticism from others in “pure” sciences like physics and chemistry. Even some members of the computer science community itself are skeptical about whether computer science should really be considered a science.
So if computer science should not be a science then what is it? Many people argue that it should be considered engineering. They point to areas such as software engineering, circuit design and computer engineering as evidence of this. At McMaster University the Computer Science department is housed within the Engineering faculty.
On the other hand some people consider computer science to be mathematics. This is the case because many concepts in computer science are based in mathematics, for example, networks make use of graph theory and Boolean logic at the core of most computers. The University of Waterloo has the Computer Science department located within the faculty of Mathematics.
Finally, there are some who view computer science as a real science. What is the evidence for this? Fields like HCI (Human Computer Interaction) rely on methods similar to those of psychologists and sociologists turning to surveys, studies and experiments to determine the best ways in which a computer and a human can interact. For example, at the University of Guelph there are graduate students researching where to best locate items on a webpage to make the site easier to use or to maximize the information being conveyed to users. In AI and Neural Network research, many algorithms have performance and behavior that is difficult to predict so experimental design is used to investigate hypotheses based on the algorithms. At the, University of Guelph the computer science department is part of the science faculty.
Perhaps most recently however, many people have begun advocating that computer science cannot be defined by any of these distinct classifications alone. For example, at Dalhousie University in Nova Scotia, the Computer Science department is located within its own faculty. In Making Modern Science by Bowler and Morus they claim that modern views of applied research (engineering) and pure research (science) are losing their distinction. The blurring of the lines between the fields may be contributing to why it is so difficult to classify computer science in any three of the fields. Additionally, the founders of the field are polarized in each of the three camps. According to “Is Computer Science Science?” appearing in ACM by Peter Denning, many of the greatest computer scientists such as Dijkstra, Sussman and Abelson argued that Computer Science should be considered engineering or mathematics. Others identify computer science with an art form. Denning goes on to predict that the in the field, science will become more prevalent in the near future. This is the case because many of the youth getting started today are less awed by the technology since they grew up with it. They are more open to critical thinking, which is important in science.
Being one of the younger people in computer science myself I agree with this point. In the first two semesters at Guelph I have encountered many situations in which scientific method could be applied to further research in an area of computing. Many problems are mathematically intractable and systems have grown so large and complex that their behavior and performance are unpredictable (AI, Parallel Computing). The effects a system has on an external system or vice versa cannot be studied effectively using mathematics or engineering (HCI, Network Loads, Robotics, and Faulty Networks). In a famous quote by Dijkstra he stated “Computer Science is no more about computers than astronomy is about telescopes”. This may be true however that doesn’t make the field any less a science. Where astrology has stars, constellations, the laws of physics and chemistry, computer science has algorithms, networks, software, computability, number theory, logic and much more. Using scientific method, forming hypotheses, designing experiments and collecting evidence will keep computer science moving forward in the future. There is still much to be discovered in computer science. Research in quantum computing, artificial intelligence, HCI and many other areas will likely cause the field of computer science to become unrecognizable from today in the future.
Update: I have started this thread for people to discuss this topic at the CompSci.ca forums.
Here is a link to a blog named “See Jane Compute” from a Computer Science prof who I found wrote an entry on the exact same subject around the same time as me. Her blog seems to explain similar points to mine in a more eloquent manner.