Is computer science a science? (part 2: science)

In this next part of the strangely popular series "Is Computer Science a Science?", I'll look at whether Computer Science fits the definition of "science". (see parts 1 and 1a for the inaugural posts in the series)

Most people seem to apply a certain litmus test of sorts to determine if something is a science. Something is a science if

(1) it uses the scientific method (i.e., empirical research and observation)
(2) it involves studying "fundamental principles" of the natural or physical world

(1) is, I think, a bit easier to address. I use the scientific method all the time in my work: I form hypotheses about how a particular system or algorithm should behave, develop experiments to test the hypothesis, gather data, analyze, etc. Several commenters to the first post in the series discuss the same thing. Joe, for instance, says this about his work: "One of the things I've noticed as a developer/engineer for the last 20 years is that I use the techniques of science all the time, only I'm not studying "nature" (be it the physics world, chemicals, biology, or people). I'm applying the disciplines and the scientific process to stuff that other people have done." (I'll get back to this point in a minute.)

John Dupuis at Confessions of a Science Librarian pointed me towards this post, done roughly a year ago, by Eugene Wallingford of Knowing and Doing that addresses this very same question. Eugene also talks about the scientific method in Computer Science: "Computer science is grounded in a deep sense of empiricism, where the scientific method plays an essential role in the process of doing computer science. It's just that the entities or systems that we study don't always spring from the "natural world" without man's intervention. But they are complex systems that we don't understand thoroughly yet -- systems created by technological processes and by social processes."

So, ok, the first point is taken care of. But what of the second point? Is computer science sufficiently involved in studying "fundamental principles" of the natural or physical world?

This one, I think, is much trickier. Clearly, some parts of computer science are involved in studying the natural and physical world---scientific computation, for instance. But in this context, computer technology is applied to answer a specific scientific question (or set of questions)---it is not necessarily involved in the actual generating of the hypothesis (since one assumes that the hypothesis is formed first, then the technology is applied as a testing tool).

But is computer science in and of itself sufficiently involved in the study of fundamental principles of....something?

One way to answer this is to tie computer science back to mathematics, as several commenters to the first post do. For instance, Tyler says:

What brings computer science into contrast with almost all other disciplines is that the central phenomenon we study is almost entirely defined and investigated through abstract mathematics. On the other side, it's also distinctive in that it has been so tightly intertwined with its technological applications that it is difficult to make finely grained distinctions between the preceding and the purely scientific content.

But the scientific content is certainly there, IMO. For instance, whether efficient algorithms exist for NP-hard problems is an objective scientific question that has yet to be resolved.

On the other hand, bsci points out that "Science is more than just hypothesis testing. It requires a hypothesis without a clear answer. If the answer is clear then you are a mathematician making design specs or an engineer building to design specs." And Coin points out that the argument seems to come down to whether or not math is a science.

But part of computer science is the study of systems; can studying systems be considered science? Eugene Wallingford appears to argue for this interpretation:

Studying such large systems is of great value. Humans have begun to build remarkably complex systems that we currently understand only surface deep, if at all. That's is often a surprise to non-computer scientists and non-technology people: The ability to build a (useful) system does not imply that we understand the system.

Eugene also says this about computer science as a science:

As Bertrand Russell wrote a century ago, science is about description, not logic or causation or any other naive notion we have about necessity. Scientists describe things. This being the case, computer science is in many ways the ultimate scientific endeavor -- or at least a foundational one -- because computer science is the science of description. In computing we learn how to describe thing and process better, more accurately and more usefully. Some of our findings have been surprising, like the unity of data and program. We've learned that process descriptions whose behavior we can observe will teach us more than static descriptions of the same processes left to the limited interpretative powers of the human mind. The study of how to write descriptions -- programs -- has taught us more about language and expressiveness and complexity than our previous mathematics could ever have taught us. And we've only begun to scratch the surface.

I tend to think that computer science is a science, that it does in fact fulfill both points. But admittedly, that second point is a tricky one, in that it requires one to accept that synthetic, human-generated entities constitute a "world" in which we can, and need to, discover fundamental principles. And some might argue that, in fact, the study of the synthetic is necessarily engineering and not science. Which is the subject of the next post in this series.

(Maybe the answer is that there really is no clear answer. What are your thoughts on this?)

Categories

More like this

that second point is a tricky one, in that it requires one to accept that synthetic, human-generated entities constitute a "world"

A lot of times, the objects under study by computer scientist need not be synthetic at all.. for example, nash equilibria arise all the time in nature, yet precisely finding out what the equilibrium is still a problem which lots of computer scientists like to spend their time on.

I'm very interested in this series of posts. I particularly liked your description of your work methods a couple of posts ago - I wish I were that organized!

I like your two-part definition of what a science is. I'm a mathematician, so I immediately applied it to math.

(1) Does mathematics use empirical research and observation. Absolutely! First of all, we do experiments to test whether a hypothesis appears to be true (except we call them "examples"). And any mathematician has had the experience of expecting something to behave in one way and discovering that in fact it does exactly the opposite.

(2) Does it involve "fundamental principles of the natural or physical world"? This is probably more of a philosophical question for mathematicians. I tend to be a Platonist: I believe that there is a mathematical reality "out there" that I am "discovering." Other mathematicians and non-mathematicians think differently. But from my perspective, mathematics does describe an underlying reality of the universe, for lack of a better term.

What's missing from this approach to mathematics is any concept of proof, or how you _know_ that something is true or not. This is something that mathematics has that the rest of science really does not: nobody has _proved_ that F=ma, for example. Or that the theory of evolution is true. But both are clearly correct descriptions of our world.

So is computer science a science? Insofar as it can be seen as a branch of mathematics, I would argue "yes." But even if you don't believe that mathematics is a science, from your descriptions, your day-to-day work, Jane, seems to fit more clearly into (1) and (2) than mine does. Maybe that's just because you didn't mention days of "trying to prove statement X."

I have no problem with seeing complex human-created systems as a legitimate subject of scientific investigation. It seems as though the key question here is if it's possible to test and disprove your hypotheses. This is why, for example, I don't think that political science, which studies complex human-created systems, is a science as such.

Do you think that computer science is a branch of mathematics?

Thank you for this blog. I read it regularly and very much enjoy it.

someone once told me (and I wish I could find the original source):

Computer science is self contradictory: The part that's about computers isn't a science, and the part that's a science isn't about computers.

Which seems to sum it up fairly accurately, afaict.

In order to address whether or not CS is science, one needs to define both CS and science.

In a quick web perusal, I've not found any definitions of CS that are really satisfying.

Jane, what would you give as a basic definition of computer science as a field of study?

I agree about the relationships to mathematics. And mathematicians sure don't have labs like the rest of us. I'm married to a mathematician, and it took a while into our relationship for me to understand that how one does math research looks completely different from how one does chemistry or physics research. Or even psychological research.

Granted, not all research physicists, chemists, or psychologists have those kinds of labs, either... But labs -- of a particular type -- are very much part of our common and collective perceptions of how one "does" science.

"The part that's about computers isn't a science, and the part that's a science isn't about computers."

I would say that that is completely inaccurate, primarily because the definition of "computer" extends way beyond the actual devices in use today. The phenomenon of computation was not initially investigated with the use of such devices, but rather through mathematical formalism such as Turing machines or partial recursive functions (the formalism's by Turing and Church, respectively). To this day, much of CS theory investigates the properties of machines that have yet to even be created, e.g., quantum computers.

Hi, found your blog from John Dupuis's blog.

As a numerical analyst, I have just a slight nitpick:

Clearly, some parts of computer science are involved in studying the natural and physical world---scientific computation, for instance. But in this context, computer technology is applied to answer a specific scientific question (or set of questions)---it is not necessarily involved in the actual generating of the hypothesis (since one assumes that the hypothesis is formed first, then the technology is applied as a testing tool).

Often, scientific simulations DO drive hypotheses. One of the biggest motivations for simulations is forming hypothesis when we can't collect all the measurements we would like. In this way, simulation works as an extrapolation of what we can observe.

For example, we can simulate evolution of the universe with dark matter, even though we can't measure dark matter itself. We can simulate the electricity inside a beating heart, even though we can't measure it reliably. Once we've verified that our simulations match our observable reality, we can dig deeper into the data and try to come up with a hypothesis for our universe works the way that it does. Once we have a hypothesis, we pass this information along to people who can confirm or deny the hypothesis with an actual experiment.

vishnuvyas, good point!

Sue, I do think that CS and math are very closely related....I go back and forth as to whether I believe that CS is inherently math, but they are definitely deeply connected. And I do agree with your assessment of math as a science as well.

PJ, I haven't heard that quote before, but I'd disagree with the second part: I do think part of the "science" *is* about computers, as I think I mentioned in my post. If, that is, you accept that algorithms and systems are part of our concept of "computer".

Stasa, the image of the lab does seem central to our notion of science. Here, CS does seem to fit, since technically computer scientists could and often do have labs (although at least part of the time we can also pretty much do our work anywhere). The question of "what's a good definition of CS" is a great one. I tend to like the one by Peter Denning:

The discipline of computing is the systematic study of algorithmic processes that describe and transform information: their theory, analysis, design, efficiency, implementation, and application. The fundamental question underlying all of computing is, What can be (efficiently) automated?

Tyler, good point about CS being not limited to the study of technology as it currently exists. Thanks!

Rob, you also make a good point. I was being a bit simplistic for the sake of making an argument---thinking more in terms of the fact that you have to have an initial hypothesis to test before you begin experimenting. Certainly, one's experiments can and often do lead to further hypotheses!

Jane: your basic question contains a common assumption that is false. You and most other people assume that their is only one science and one monolithic scientific method, this is simple wrong. There are different areas of scientific activity that have separate philosophies and separate methodologies. That which most people thing of when they talk about science and the scientific method are the physical sciences i.e. physics, chemistry, astro-physics etc. This monolithic picture breaks down however when one tries to apply this methodology to the Baconian sciences i.e. the life sciences, geology, palaeontology, observational astronomy etc. (see the recent post by John Wilkins at Evolving Thoughts in particular John's post and my first comment).

Computer science is one of the formal sciences the other main ones being formal logic (also called symbolic or mathematical logic) and mathematics. These are distinguished from the previously mentioned groups by being non-empirical; the truth of a statement in one of these disciplines is dependent purely on its logical form and the rules or axioms of the formal language in which it is written. The formal sciences can naturally be applied to empirical situations and most of what you and your commentators have said concerns applied computer science and not computer science itself.

Thony, I don't think I made the assumption in this post that there is one "monolithic" scientific method. There are many ways of doing science and testing hypotheses, and one is certainly not better or worse than the other (for instance, lab experiments vs. observational experiments, as you use in your example).

It seems to me that computer science is very closely related with math. We run mathematical models on computers.

It may be involved with the rest of science the same way math is involved with the rest of science - understanding the implications of hypotheses and models.

But you couldn't run an investigation of the physical world purely with computers. You need a lab and physical instruments and empiricism to provide the link to the real world.