Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Is computer science really a science?
12 points by stevejobs on Oct 4, 2010 | hide | past | favorite | 21 comments
How did it come to be that the field of computing became synonymous with science to form the term computer science? As I understand it science is about figuring out and interpreting the natural world as it is and has evolved over time (biology/physics/chemistry). Laws and theories have been formed to understand and clarify how objects are created and interact with each other.

Computer science OTOH is more akin to math and engineering than science. While some parts of computer science deal with the natural world like the work on artificial intelligence (which is more about psychology/philosophy than science) most of it deals with programming and electronics than the study of nature.

That is not to say that computing does not have value. It certainly does. I just think it is questionable if it deserves the science moniker.




The problem is that only a few decades ago, computer science was a fairly pure branch of mathematics - now you can argue whether mathematics is a science or not in general, but applied mathematics is nearly indistinguishable from physics in many areas, and computer science certainly flirted with applied mathematics.

What gets taught as computer science has evolved rapidly in the last couple of decades and it is my impression that quite a bit of it comes under software engineering now.

This is why I get annoyed when you see jobs in the software sector or software management that require a Comp Sci degree. It's actually a subtly ageist requirement - twenty years ago, computer science was not what you did if you were interested in computers - you did physics so they would let you play with their VAX cluster.


If it has to put science in the name, it isn't science.

Examples, Christian Science, Library Science, Computer Science.

That said, it is worth bearing in mind that computer science is no more about computers than astronomy is about telescopes.


>That said, it is worth bearing in mind that computer science is no more about computers than astronomy is about telescopes.

I like this quote. I think I'm going to use it next time someone says "Oh, so you're a Computer Science major? So you, like, fix computers and stuff?"


What about Neuroscience or Materials Science?


Bachelor of Science?


In most of Europe it's called "informatics" or "informatica" which at least to me makes a lot more sense: It's the study of information: data, languages, semantics, knowledge, knowledge representation, and intelligence. It has as much to do with computers as that astronomy has to do with telescopes, optics and radios. So it can/could be a science, it could also be mathematics or a philosophy of understanding.


Yes. But the word "science" is very broad.

Sciences are generally classified by "hardness" or (perceived) quantitative rigor. In that respect, from "hardest" to "softest," the sciences are usually ranked roughly like this: Math (yes, math is as much a science as anything else), Physics, Chemistry, Biology, Psychology, and the Social Sciences.

Computer Science is, as most things are nowadays, interdisciplinary. As such, it really depends about what aspect of Computer Science you're referring to. Some areas of computer science are more rigorous, and have a lot in common with math and physics. Others, such as "software engineering" etc. fall on the softer end of the spectrum.

With that said, I don't think that all programmers are necessarily "computer scientists." They're practitioners of an art. Just like not all doctors are medical scientists - some are, but most are just practitioners.


It is not a science. It is also not about computers. :)

SICP lecture 1 -- http://www.youtube.com/watch?v=zQLUPjefuWA

But maybe it is a science: there are certainly a number of things in CS that yield facts about things like algorithms (Big O, etc).

I read other comments here that compare computer science to math, and it is not an unfair comparison. However, even amongst mathematicians, you will see something of an avoidance to associate math with science. Math is a framework of a sort, a way to think. When we are talking about how to think, we are talking about philosophy. Science has its own roots in philosophy, so it is not surprising that we see some grey areas here.

So let me rephrase it a little... When you learn Computer Science, you learn how to think.

People compare CS with engineering disciplines, but we find that there are a lot of methodology salesmen but few magic bullets. The problem with comparing computer programming (the practical side of CS) to engineering is that programming is very difficult to measure. We graduated from the idea of measuring lines of code. We have not figured out how to accurately measure a technique like TDD. We have an idea that code quality can rise when people pay attention to it, when people think about the problem; we can encourage this with code reviews, but we can do the same by encouraging developers to have a good night's sleep. We have conjured approximations for our measurements, but none of this has quite the feel of engineering. We are not building bridges, complete with a starting plan based on knowns and an execution.

Algorithms are not building blocks. They are possible solutions to specific problems. There is more than one solution, and the algorithms our professors taught us come with trade-offs. Recently on HN, there was an excellent article and discussion on the trade-off made by grep to improve string searches.

So you cannot just pick from your handy dandy book of algorithms, fit them together in a programming jigsaw, and expect results. The world of software is soft; requirements change, and systems change. It is extremely flexible in a way that other, more physical entities, such as bridges, are not.

In addition to thinking of CS as a philosophy, I favor thinking of CS as an art. I am communicating something to the computer, certainly, but in order to ensure that my code can be picked up by others or myself a year down the line, I must also dive into aesthetics. The code must be readable. It must make sense, must describe the problem, be expressed in such a way that humans can derive meaning from it. Thus is CS as much about beautiful design as it is about getting results.


The wikipedia entry seems to do a pretty good job fleshing this out:

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

the study of the theoretical foundations of information and computation, and of practical techniques for their implementation and application in computer systems

and

The relationship between computer science and software engineering is a contentious issue, which is further muddied by disputes over what the term "software engineering" means, and how computer science is defined. David Parnas, taking a cue from the relationship between other engineering and science disciplines, has claimed that the principal focus of computer science is studying the properties of computation in general, while the principal focus of software engineering is the design of specific computations to achieve practical goals, making the two separate but complementary disciplines


That's just a name. It is of course not a natural science, but a formal one, as mathematics (it could even be a branch of maths). There are even other kind of sciences, social ones, like psychology (which many people wouldn't call a science, though for different reasons, after all it does study natural things, doesn't it?). And of course, there should be a distinction from engineering (electrical e., software e.), though boundaries aren't clear and never will be. If you had a better name for those different kind of sciences, call them in that manner. Also remember, that by saying that something is not a science, it might seem that you are implying that the branch is somehow inferior to the "actual science". (This is not the case, but it is going to be perceived as that.)


A computer is a man made device so there is nothing to be discovered in the sense that biology, physics, chemistry required discovery to understand how things work. A computer is engineered and that in turn requires application of chemistry, physics, thermodynamics, electronics and boolean algebra (which is a part of mathematics body of knowledge).

Perhaps we should be talking about "computer engineering" which is how we build computers and "software engineering" which is how we build programs to run on those computers. Both of these require considerable learning, experience and planning. Which probably explains why people want to avoid the "engineer" tag, because it sounds like less fun than HACKING.


How do you think the parts of the computer work and are developed? Especially processors. There's a lot of chemical and material sciences behind the scenes.

I suppose this is also why "Computer Engineering" as a discipline is somewhat growing in popularity.


It's just a name.

I got an undergrad degree in "Computer Science & Engineering". If you have to nitpick, what I studied was not strictly about "Computer", "Science", or "Engineering". It has bits of computer as in how to build a computer, bits of science as in the mathematics and theories of computation behind it, and bits of engineering as in how to build a large-scale program.

Personally I like "Computer Science" just fine. It would be silly for others to mandate CS to be called "Informatics", "Computer Studies", "Mathematics: Computer", "Computational Art", etc.


It depends on how you define science. Personally I define science as a process, whereby one has theories and then tries to systematically falsify them. By this measure CS isn't really much of a science, it is more like Math or Engineering.

But it is not exactly a black or white issue. It is more of a science than, say, Political Science, in terms of rigor and logic.


Computer science is definitely a science. Mathematics is a science and computer science is part of mathematics. Thus computer science is a study of computation or the automatic solution of problems or processing of data, etc.

The problem is that in most universities the computer science label is used for things that aren't computer science. Most computer science departments are mostly concerned not with studying or extending the science part of computer science, but with applying computer science to solve real world problems. This really should be called computer engineering or software engineering, just as applying certain aspects of physics to create electrical devices is called electrical engineering.


Mathematics is a science

Most people would disagree with that, though interestingly, that was not the case in the 19th century.

http://en.wikipedia.org/wiki/Mathematics#Mathematics_as_scie...

It's all semantics, and not worth arguing much. But nevertheless, it's good to keep in mind that mathematics is about deduction. It starts from axioms and tries to find all of their consequences. Science is about inference, trying to figure out the axioms given the observable consequences. Maths is bottoms-up, science is top-down.

[That's not the entire truth. Platonism in maths is a nice counterpoint to the above. http://en.wikipedia.org/wiki/Philosophy_of_mathematics#Plato...]

My vote goes to CS being a branch of maths.


Citing Gödel's incompleteness and Turing's incomputability, Gregory Chaitin says (http://www.cs.auckland.ac.nz/~chaitin/cordoba.html) that "mathematics is different from physics, but maybe not as different as most people think".

Perhaps CS is a math, but investigating CS sometimes necessarily employs science.

As you say: not worth arguing much.


Computer science is the study of algorithms, the study of algorithms fits the scientific method. Programming and electronics is not computer science. QED.


Science is the study of the fundamentals. Algorithms is clearly a science as is compiler design and even electronics ( someone has to create new types of components, transistors, memristors, etc... )

Building things with those fundamentals is not science, it's engineering.


If you program the way I do, it's certainly an experimental science!


Comes down to if you classify mathematics as a science.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: