[Computational Complexity] What Kind of Science is Computer Science?
In 1981, Juris Hartmanis wrote some observations on the early days of computational complexity. The article also contains some interesting discussions on issues like how CS fits in with the other sciences.
I see computer science as a brand new species among other sciences, and I believe that it differs fundamentally from the older sciences. As a matter of fact, I am convinced that in large parts of computer science the classic research paradigms from physical sciences or mathematics do not apply and that we have to develop and understand the new paradigms for computer science research. The fundamental difference between, say, physics and computer science is that in physics, we study to a very large extent a world that exists, and our main objective is to observe and explain the existing (and predict new observable) phenomena. The relations between experiments and theory are quite well understood and richly illustrated by successful examples. Computer science, on the other hand, is primarily interested in what can exist and how to describe and analyze the possible in information processing. It is a science that has to conceptualize and create the intellectual tools and theories to help us imagine, analyze, and build the feasibly possible.
Computer science is indeed a different intellectual discipline than we have ever encountered before. It shows some haunting similarities with physical sciences and mathematics (whose basic research paradigms and goals are quite different), but it differs from both of these disciplines in some very fundamental ways. As a matter of fact, quite often the paradigms, borrowed from physical sciences and mathematics, have been incorrectly applied to computer science research with predictably frustrating results. Similarly, the attempt to view computer science as an engineering discipline does not properly capture its essence. There is a substantial engineering component in computer science (or its applications), particularly in building computing machines and managing large software projects, but its core activities do not fit the traditional engineering paradigms.
In view of these observations, I believe that one of the very important tasks for the computer science community is to understand better the nature of computer science and develop the new research norms, paradigms, and methodology without which it will not mature into an independent and influential science. In particular, the relations between theoretical and experimental computer science must be clarified and new interactions must be forged. This is not just a matter of producing "more practical theories" and applications of theory, which we certainly need. It is the hard and challenging task of determining for a new science how theory, experiments, and practice should interact. Furthermore, this is not just an esoteric exercise in the philosophy of science; whether we admit it or not, our underlying beliefs, our conception of our field of study, and our perception of what is possible all fundamentally influence what kind of science we are going to build.
Posted by Lance to Computational Complexity at 7/25/2005 11:53:00 AM