# What is the definition of Computer Science, and what is the Science within Computer Science?

I am pursuing a BS in Computer Science, but I am at an early point of it, and I am pretty sure I will be happy with my choice given that it seems like an academically and career flexible education to pursue.

Having said that, there seems to be a variety of definitions about what Computer Science really is in respects to academia, the private-sector, and the actual "Science" in "Computer Science" I would love to have answers(Or shared pondering) as to the breadth of things an education in Computer Science can be applied to, and ultimately the variety of paths those within Computer Science have pursued.

Computer science is a misnomer - there is actually no "science" in computer science, since computer science is not about observing nature. Rather, parts of computer science are engineering, and parts are mathematics.

The more theoretical parts of computer science are purely mathematical. For example, what is a good algorithm for sorting? How do we define the semantics of programming languages? How can we be sure that a cryptographic system is secure?

When computer science gets applied, it becomes more like engineering. For example, what is the best way to implement a matrix multiplication algorithm? How should we design a computer language to facilitate writing large programs? How can we design a cryptographic system to protect online banking?

In contrast, science is about laws of nature, and more generally about natural phenomena. The phenomena involved in computer science are man-made. Some aspects of computer science can be viewed as experimental in this sense, for example the empirical study of social networks, the empirical study of computer networks, the empirical study of viruses and their spread, and computer education (both teaching computer science and using computers to teach other subjects). Most of these examples are border-line computer science, and are more properly multidisciplinary. The closest one gets to the scientific method in computer science is perhaps the study of networks and other hardware devices, which is mainstream in the subarea known unofficially as "systems".

These examples notwithstanding, most of the core of computer science is not science at all. Computer science is just a name - it doesn't need to make sense.

As for the scope of computer science, the best definitions is perhaps: that which computer scientists do. Computer science, like every other academic discipline, is a wide area, and it is difficult to chart completely. If you want a sampling of what people consider computer science, you can look at the research areas of your faculty.

• This is one of the most honest comments from computer scientists I have ever seen. Thanks. – scaaahu Oct 15 '13 at 2:34
• This is really about philosophy more than about computer science — but I disagree with this answer. Computer science is a misnomer for computing science, and computing science is a science in the same way as, say, mechanics. There is a strong mathematical foundation, but this foundation is subject to empiric validation — we focus on Turing computability because that's how the world seems to work, and we do study other notions because Turing computability doesn't model all real-world computation phenomena. – Gilles 'SO- stop being evil' Oct 15 '13 at 9:42
• I think the idea that only that which observes natural phenomena is actual science is an emanation of materialist thought, something that many people would disagree with. Etymologically, science is the gathering of knowledge, and although some say that all math is tautology, I doubt any of them would classify math as "not knowledge". – G. Bach Oct 15 '13 at 10:15
• @Gilles You can't be serious. Apart from people doing hypercomputability, no one is disputing the Turing notion of computability. A better point can be made regarding the notion of efficient computability (as in polytime means efficient), but no one is attempting any more to capture efficiency within reasonable computational models - theory people ignore the problems with the model, and practice people ignore the model. – Yuval Filmus Oct 15 '13 at 18:18
• @YuvalFilmus To give just two examples, Turing machines aren't enough to model distributed or synchronous systems. – Gilles 'SO- stop being evil' Oct 15 '13 at 18:24

Let us start with a quote from one of the fathers of modern Computer Science: “Computer Science is no more about computers than astronomy is about telescopes” - Edsger Wybe DIJKSTRA

So in reality if what you are interested in is computers and programming then you are not truly interested in computer science :-)

I think Wikipedia has one of the best descriptions: "Computer Science (abbreviated CS or CompSci) is the scientific and practical approach to computation and its applications. It is the systematic study of the feasibility, structure, expression, and mechanization of the methodical processes (or algorithms) that underlie the acquisition, representation, processing, storage, communication of, and access to information, whether such information is encoded in bits and bytes in a computer memory or transcribed engines and protein structures in a human cell. A computer scientist specializes in the theory of computation and the design of computational systems"

But in reality as Yuval has stated, most universities/colleges have moved away from the theoretical/pure computer science and computer science is now a mixture of science, mathematics, engineering. Teaching us not only the pure computer science, but also the practical skills to solve those and other problems using modern computers, programming languages, operating systems and software applications.

• you say moved away, but have they ever been purely theoretical? – Agos Oct 15 '13 at 13:58
• @Agos I agree with you there was never a true period of being purely theoretical, but I would say that as time has gone on and business needed more programmers and less computer scientists the degrees/diplomas have moved more from theoretical to practical. I am not saying the one is better than the other, just making an observation. – AquaAlex Oct 16 '13 at 8:24
• @AquaAlex I think that is possibly the best way to describe the stark difference between the Computer Science of old to Computer Science as it is thought of today: it has shifted starkly towards practical application to align with the demands of industry. – user10744 Oct 16 '13 at 13:33
• Why would "pure" computer science only be theory? As far as I know, that has never been a good description of what computer science is; practical concerns have always informed the field. – Raphael Oct 30 '13 at 18:12
• @Raphael It all depends what you consider the "practical" to be. Writing computer programs is not the practical application of CS. Most sciences use the theory to solve real world / practical problems and a lot of sciences use computers and programming to do this. – AquaAlex Nov 1 '13 at 7:36

It might be worth mentioning that the German term for "Computer Science" is Informatik, which melts Infomation and Mathematik. I think that's a nice and short description of what Computer Science is all about. (the Italian term is informatica, and I'm sure there are quite a few more languages that follow the same line).

• Wikipedia's article on computer science has a section about the different names en.wikipedia.org/wiki/Computer_science#Name_of_the_field - I for my part dislike the "computer" part more than the "science". I have yet to find a scientific field that uses computers much less nowadays than I do. – linac Oct 15 '13 at 9:32
• @linac: Other fields use computers to study something else. Computer science ends up using computers to study computation. In both cases we can remove the computers and still do the job, just slower. Bear in mind that it's really quite a modern idea that "computer" refers solely to an actual box implementing some hardware capable of performing computation, and the "Computer" in computer science is really referring to the idea of computation itself. – Phoshi Oct 15 '13 at 10:00
• Maybe this derivation of the name "Informatik" is wrong. The german wiki mentions "Information und Automatik" but maybe it is simply "Information + -tik" – miracle173 Oct 16 '13 at 9:14
• @miracle173 Indeed, there's a lot about "Information und Automatik", also in the French and Italian Wiki they mention it. I can't remember where I read the "Information und Mathematik" derivation the first time, but I'm quite sure I didn't invent it myself... – john_leo Oct 16 '13 at 11:03

You might be interested in a discussion we had on meta. In particular, I stand by my answer, reproduced here:

Computer Science is the science of computation; that much seems clear. Less clear is how to define science and computation in a useful and meaningful way.

Generally, we might divide science according to two classifications: formal versus empirical, and pure versus applied. Whereas formal science (such as mathematics and much of computer science) relies on deductive reasoning from assumed truths, empirical scienc (such as physics and chemistry) relies on inductive reasoning from observed phenomena. Whereas the goal of pure science is to advance the state of scientific understanding, the goal of applied science is to use such understanding to harness the forces of Nature (in the broadest possible sense of the word) to achieve other goals.

We might define computation as a transformation applied to a piece of information. In the broadest possible sense, computation is, then, any process which causes a change to occur in the universe. There is no need to provide any more detailed definition than this.

Computer Science, then, consists of that part of the human endeavor which satisfies the following criteria:

• It is science, that is:

• It is either (1) formal or (2) empirical:

1. employs deductive reasoning from assumed truths
2. employs inductive reasoning from observed phenomena
• It is either (1) pure or (2) applied

1. seeks to advance the state of scientific understanding
2. seeks to apply scientific understanding to harness natural forces
• It studies computation, that is:

• It studies either (1) transformations or (2) information
1. processes which map information from one form to another
2. entities subject to transformations
• thanks for bringing out the empirical side which also plays a part in advanced TCS research! eg empirical results in CS papers – vzn Oct 15 '13 at 17:41

I want to add a perspective regarding the word "science" that is too long for a comment.

People say that computer science is not a science in the traditional way since (simplifying here) we do either mathematics or engineering. That is not quite true. We can apply the scientific method -- arguably the corner stone of science -- that is

systematic observation, measurement, and experiment, and the formulation, testing, and modification of hypotheses.
(Oxford English Dictionary via Wikipedia)

In fact, some of the earliest work in algorithms adheres to this principle. Some of the method has been "lost" for several reasons but we still can employ it.

The basic process¹ would look like this:

• Note a problem that we want to solve with a computer.
• Come up with an algorithm.
• Analyse (a mathematical model of) the algorithm.
• Based on your analysis, predict the algorithm's (expected) runtime (on a given set of inputs and a given machine).
• Confirm or falsify your prediction by experiments.

More generally speaking, we can evaluate how useful algorithmic models and analysis techniques are. And here we arrive at our problem: $O$-analysis is all but useless in this regard. Since most computer scientists not much else, we can't do much science, effectively and sadly. Never mind that most curricula don't seem to include any (rigorous) statistics education, even in more empirically oriented subfields.

Don't take my word for it, by the way. Robert Sedgewick and Philippe Flajolet have been working on putting science back into computer science, mostly by developing the formal framework of analytic combinatorics that does allow for testable hypotheses. You can find videos and MOOCs by Sedgewick that will tell you as much.

All hope is not lost.

1. This is, of course, only formulated w.r.t. algorithmics. You can also study whether graph models fit reality (done e.g. in work around social networks, albeit often more empirically than scientifically) or network throughput turns out as predicted, or any number of other things.
• “All hope is not lost.” – would it be a bad thing if computer science was no science (except for the misnomer)? – k.stm Feb 25 '16 at 19:08
• @k.stm In my opinion, yes. Why settle for less? – Raphael Feb 25 '16 at 21:01
• Mathematics is no science, but it never suffered from not being one. And certainly, neither mathematics nor computer science are “less” than science for not being science. Maybe you meant “less” in a quantitive way, as in “computier science is no less than mathematics, engineering and science”? But even then I’d see no inherit gain in being science additionally. Why would it have? Is there a need to approach computational reasoning scientifically? – k.stm Feb 25 '16 at 22:52
• @k.stm Yes. Not all of CS can be mathematics, and not all can (or wants to) be engineering. The parts that are neither are currently not always (read: usually not) scientific. That's a big problem. Example: experimental algorithmics. Mathematical analyses are intractable, engineering principles don't apply. Then, we are essentially performing scientific experiments on programs -- but we do not usually use scientific principles. (How many CSists know even basic statistics?) – Raphael Feb 26 '16 at 11:11
• Okay, so you are saying “we need to approach computational reasoning also scientifically because that works best (or at all) in some situations”, am I understanding you correctly? If that’s so, I can see your point – still, that doesn’t mean that there’s an inherit benefit for computer science to truly being a science. It just turned out that it’d be better … – k.stm Feb 26 '16 at 15:45

this is likely an old question long debated going back to the very origins of computer science. a natural way to study/answer this is via published literature on the subj. suspect there are many good refs on this buried in the literature which havent been cited yet. also, the answers/pov on this have likely changed over time aka Kuhnian shifts that have been somewhat common in the field, possibly more so than other scientific fields. another angle to study this is how the subject has been taught in academia and how it has fit into the existing departmental structures which has also changed over time.

here are some nice papers/essays by Denning, authority in the field, that address this question directly and are a good place to start for more refs. both published in the journal of the main academic society of the field, CACM.

Information processes and computation continue to be found abundantly in the deep structures of many fields. Computing is not—in fact, never was—a science only of the artificial.

Computer science meets every criterion for being a science, but it has a self-inflicted credibility problem.

• Denning defines 'computing' as, effectively, 'the study of computing'. Clearly, the study of something is not the same as that something. I've always been amazed at the extent to which basic category mistakes are accepted without blinking in this field. – reinierpost Oct 31 '13 at 14:02
• dont exactly agree with everything in the papers, however think youre quoting out of context – vzn Oct 31 '13 at 15:27

working from the definition of science

1. a branch of knowledge or study dealing with a body of facts or truths systematically arranged and showing the operation of general laws: the mathematical sciences.
2. systematic knowledge of the physical or material world gained through observation and experimentation.
3. any of the branches of natural or physical science.
4. systematized knowledge in general.
5. knowledge, as of facts or principles; knowledge gained by systematic study.
1. computer science is closely connected to mathematics and involves significant research (eg study).

2. computer science is broad & closely connected to physics in many ways. eg physics/thermodynamics of computation, quantum computing, P=?NP as a physical law, phase transitions etc

3. it is systematized knowledge.

4. it undergoes systematic study ie research.

the terminology "computer science" emphasizes the field is not merely about application of known principles eg as in engineering. there is quite a bit of terra incognita around computer science, many basic questions in the field are open/unanswered. the number of researchers worldwide is difficult to estimate but numbers beyond the thousands or tens of thousands.

however, note that the more scientific aspects of computer science are not really taught/exposed so much at the undergraduate level, maybe leading to some perplexity. there also seem not to be very many high-profile embodiments/celebrations/proponents/advocates of it as a science eg in contrast to other fields such as the LHC & discovery of the Higgs boson etc [despite that CS had a major role in its discovery!], or a famous Carl Sagan or Hawking-like populizer figure. however eg see popular science books which inspire CS

• Or depending on the subfield of computer science, what's the difference to math really? :-) – Juho Oct 15 '13 at 16:28
• another factor is that computer science has very strong interdisciplinary aspects. an example/increasingly high profile area that does have strong scientific flavor, big data – vzn Oct 15 '13 at 17:03
• another aspect to ponder. a main CS object of study, the Turing machine is referred to as a machine & is a chimeric-like cross between a theoretical and a physical device. – vzn Oct 15 '13 at 17:36
• Turing machines are ideal devices. They don't exist in reality. Even as a model, it's not too close to the way that computing is "actually" done. – Yuval Filmus Oct 15 '13 at 21:48