Computer science is not real science

I was initially outraged by my claim in the previous post that computer science is not real science, but when I thought about it some more, I concluded that I might have a point.

The argument rests on the following series of assertions:

1. Science is the reduction of the natural world to mathematical description.

Of course science is many others things besides, but this I claim is what the core activity of the natural sciences has turned out to be. This indeed is an understanding of things that led to some obstacles for the first two millenia or so; with a few, mostly astronomical exceptions, the world proved too complex to be immediately reducible to simple mathematical forms in the way the Pythagoreans had, in their first flush of enthusiasm, initially hoped; and at least from Plato onwards, mathematicians and philosophers were encouraged to focus their eyes on ideal forms rather than messy reality. However, once maths had developed enough, and had realised enough of the strangeness of its own material not to get too uptight about using tools like calculus before all their aspects had been formally proven; and once science too had learnt from Bacon to distrust arid, scholastic speculation in favour of hard, inductive fact, and then forgotten enough of Bacon to be prepared to make bold theoretical leaps again; once these initial challenges of a tempestuous courtship were overcome, science and maths settled down in a fruitful partnership.

2. The computational world is already mathematically described.

As computationalists, we already live in a world of ideal Platonic forms. Numbers are numbers; Boolean values are true or false; imperative statements are predictably executed. There is nothing to be reduced here. Of course, there is magic going on within the circuitry, but that does not concern us; the underlying world of electronics only breaks through into that of computation precisely when it does, indeed, break.

3. Therefore, there is no science to be done in computer science.

What then is it that computer scientists do, then? Well, lots of things; it is a diverse field. The most august parts of field, such as complexity theory, impinge back into the mathematical field. But essentially my claim is:

4. Computer science is to mathematics what engineering is to the natural sciences.

That is, computer science is mathematical engineering. This claim is liable to cause confusion, for a number of reasons. Regular engineers also use mathematics, as well as the findings of their respective scientific counterparts; but then that is hardly strange, since those scientific counterparts themselves use mathematics. Mathematics has other applied fields, such as statistics; but the essential distinction is that computer science works on problems that have a computational aspect; and in any case there are significant overlaps between computer science and other fields of applied mathematics. There is also sometimes a distinction made within computer science between computer science on the one hand, and software engineering on the other; indeed, my own department is named Computer Science and Software Engineering. However, my claim about this purported distinction is:

5. The relationship between computer science on the one hand, and software engineering on the other, is the same as the relationship between engineering research and the vocational training of engineers.

Engineers are not just practitioners; they also do research. The research they do is not, in general, pure research; rather, it is the application of the outcome of pure research to finding novel solutions to complex, applied problems. At the same time, of course, most engineers do not do research, or at least not for the majority of their careers: rather, they apply engineering discipline to everyday tasks and activities.

So too in computation. Computer scientists are not really doing pure research, although they might like to think they are; if they were doing pure research, they would be doing mathematics (as, indeed, so-called computer scientists such as complexity theorists are). What computer scientists do when they do research is to apply the tools and findings of mathematics to complex practical problems, either in the obvious form of mathematical theory (probability, linear algebra, etc.) or the more indirect form of using computational techniques, which in turn are a particular form of mathematical tool, albeit a highly articulated and specialised one. And, as with engineers, most computationists do not spend their time, or at least the majority of their careers, solving these original, complex problems; they apply the discipline of computer science (that is, mathematical engineering) to everyday tasks.

One could reduce this to another form: research engineers (computer scientists) do extraordinarily what professional engineers (software engineers and programmers) do ordinarily.

So, finally, to re-iterate my main thesis:

6. Computer science is not real science.

This is not intended to be disparaging (although it would be nice to have a different adjective than “real”). But it is intended to be a statement of reality. And computer science as a discipline will be hampered, and will fail to make its proper contribution to the fullest degree, if it is deluded about its true identity.

18 Responses to “Computer science is not real science”

  1. vk says:

    My degree was called bachelor’s in computer science and engineering. I think every computer science degree should instead be called that.

    However, I don’t think computer science is not science. There is computer science and there is computer engineering.

    I would put Complexity Theory, Theory of computation, Some aspects of Numerical Computation, Scheduling Theory, Information theory, Statistical Learning Theory, Quantum computing, etc, etc, etc into the computer science bucket.

    All the engineering extensions of the theories, etc would be computer engineering.

  2. Let me ask why you think mathematics is a science. It does not, to the best of my knowledge, make use of the scientific method.

    http://en.wikipedia.org/wiki/Scientific_method

    If I can understand why you think mathematics is a science, then perhaps I’ll be in a better position to understand why you think computer science (which at least in some cases does make use of the scientific methods) is not.

  3. David Phillip Oster says:

    Interesting. Based on your argument, I’d have to conclude that Computer Science is not a science because it doesn’t rely on the scientific method. It is more a branch of mathematics, with its concerns on algorithm discovery, characterizing algorithms, and proving theorems about the performance or equivalence.

    While Computer Engineering, is a science. Computer Engineering’s concerns are frequent explorations of “What are the bugs in this program?” and “How can I make this program go faster?”, with its debugging tools like dtrace, gdb, Tools to keep old bugs from re-appearing as the program is modified like unit test frameworks. Performance measuring tools like shark, and scientific literature publishing tools like bug databases and source code control systems

    Since the work of Computer Engineering is a science, then Computer Engineering isn’t engineering: you can’t just look up its principles in a book and apply them. Our term for that is “calling a subroutine’ and it is a negligibly tiny part of the job of building a new program. Instead, we spend our time in the debugger forming hypotheses, and gathering data to test our theories.

  4. david says:

    Computer science is not natural science, but neither is political science. ‘Computer science’ is simply the best term some guy came up with. You have a better one?

  5. william says:

    Daniel T: certainly, under the terms on my analysis, mathematics is not a science; nor is it a science in the sense of following the scientific method, as commonly understood. I agree also that computer science involves some science, in both my sense and in yours, whereas mathematics involves none.

    Fields of computer science do commonly make use of the scientific method; our field, that of information retrieval, makes particularly heavy use of it. However, we do not make use of scientific method to solve computational problems themselves, but rather other issues, such as the intersection of computation and human perception. In so doing, we are part-time practitioners of sometimes psychological science, sometimes social science, sometimes some other scientific field; but there is not here any specifically computational science. I would argue that what is involved here is not so far removed from what is done in research engineering: because the problems faced cannot be simply reduced to formal proof, we must use the scientific method to validate our conclusions.

    There is, however, one aspect in which I will concede that there is a computational science. When the computational systems we build are too complex to be formally analysed and proven, then we can treat them as a kind of artificial phenomenon that requires scientific method to reduce to predictable form. I concede also that there is a analogue to this problem of complexity in the natural sciences. There, we might be able to explain some natural system in complete. mathematical detail at some component micro level (say, of the atom in physics, or of the gene in biology), without being able to extend this micro analysis formally to a macro level. At the macro level, therefore, we are forced again to scientific method, to reduce the phenomena to predictable, mathematical form.

  6. redditor says:

    Erm, computer science, as a fundamental process, is how model computation using physical phenomena.

    Seems scientific to me. Just because later it means having rooms full of idiots who will pay for ‘computerslol’ on their resume, and learning about colour-coding error messages (ok, that is a science as well), doesn’t mean it isn’t a science.

    tl;dr, I didn’t read your article, but since I’ve proved you are wrong, you are redundant.

  7. Amadeus says:

    Doh, why not simply consider it a branch of mathematics? Word “computer” may sound modern and more attractive but in fact “computer science” is nothing much but a branch of mathematics. Software Engineering is different.

  8. Stormborne says:

    It’s just a name – I think if we called it “informatics” (iirc many other languages use some word of that form for what we call “computer science”) or “software engineering” the confusion would go away.

  9. Mark says:

    I think there’s a misunderstanding about what the scientific method is. It’s used every time someone does something as trivial as debugging.

  10. vk says:

    how is debugging scientific method? Please explain?

  11. Greg Miller says:

    One principle all lawyers know is that whoever controls the definitions usually wins their argument. So it’s easy to see how you could confuse yourself by making up your own definition of science. You also seem to consider “programming” and “Computer Science” as synonyms even though most computer science doesn’t involve programming at all.

    But, just off the top of my head, I can think of several fields in artificial intelligence that fit even your definition of science.

    Since your whole argument is about the definitions of computer science and science, I think you’d be better off to start with formalized definitions of each that are generally accepted. And you’ll want to spend the bulk of your work explaining why those definitions are correct. Above you merely state your definition of science, then agree it’s incorrect, but continue to use it anyway. You never attempt to define computer science, but it’s fairly clear from the text that you think it’s the act of typing code into an IDE.

  12. 0xc000005 says:

    Computer scientists and software engineers are not engineers – Real engineers learn much more about designing reliable systems from unreliable components. This would make an interesting base for a future post. It’s no wonder computers and software are so hard to use and unreliable.

  13. Mick hoo says:

    i agree that Computer Science is not a Natural Science but i doubt that it require the knowledge Physics: a natural science subject.

  14. Bill says:

    You’re all wrong! Mathematics is not a science and computer science is a discipline of mathematics. And as a mathematician would say: Computer science is not a science by construction.

  15. jean says:

    well, i see scientific methods in computer science. just look at it. the methods are basically the observing of a phenomenon>forming of hypothesis>test and experiments>retrieving empirical data>and last but not least the finding if the truth. in computer science, we observe a phenomenon, both the natural and artificial phenomenon, work on finding a solution through computations and programming. using computers as a tool, we create models of the natural world, such as cellular automata to study and predict the world. of course, programming and computations are the testing and experimenting part.

    if you look closely at other sciences, such as chemistry, we sometimes dont study nature directly. we figure out that ‘50ml of chemical A with a smaller molecules/atoms mixed with 50ml of chemical B with a bigger molecules/atoms does not give you a 100ml’. how do we model it to study them? well, back in my class, we teacher gave let us mix 5ml of green bean and 5ml of perhaps rice to show how it does not give us a 10ml worth of mixture. i think computer science is very similar, we not only study natural phenomenon with the aid of one or more tools, we also follows the scientific methods.

    however, i acknowledges that not all computer scientists agree with whether computer science is a science or not. that might probably depend on their aim to study computer science. some studies computer science with notations for expressing computations, while the others study it for the finding of the absolute truth of the world.

    what say you? im actually writing a report on computer science, will be glad to take in some propagation and debunking.

  16. Mike says:

    Dijksta regarded Computer science as a branch of applied mathematics, and a particularly difficult one at that. He said: “Computer science is no more about computers than astronomy is about telescopes”.

    But it kind of begs the question – is mathematics a science?

    Does science require that evidence come from nature?

    Interesting article here:

    http://www.arachnoid.com/is_math_a_science/index.html

  17. tobi says:

    definitely you have no concern what is science, science does not equal natural world the name is computer science which means the science of computing because there are fundemtal laws and methods in computing which laws are defined as scientific method.

  18. andy says:

    I would recommend peeking through Peter Denning’s hallmark “Is computer science, science?” (or several of his other publications) looking into this very question.

    My suspicion is that you seem to have your own very narrow understanding of what is computer science rather than accepting the fact that a lot of what is computer science, is exactly that, science. On the other hand, there are a lot of computer scientists that are not doing science in any shape or form of science. That does not however extend to all computer scientists. Such a claim would be so bad that it isn’t even wrong… :-) .

    Unless you also support the claim that medicine isn’t science (there is not scientific method behind modern medicine, just approximations of it), any social or political science is also out, in fact Newton wasn’t a scientist (he certainly didn’t experimentally prove all his theorems), that goes for Einstein and in fact a lot of the classical scientists. A lot of theoretical science does not fullfil your criteria, so which is wrong. You or the world?

Leave a Reply