Is Computer Science a Science? Formal, Not Natural

Computer science doesn’t fit neatly into one category. It is part mathematics, part empirical science, and part engineering, depending on which branch you’re looking at. The field has been debated by its own founders for decades, and the honest answer is that computer science contains genuine science but isn’t solely a science in the way physics or biology is.

Why the Question Is Harder Than It Looks

Most traditional sciences study the natural world. Physics examines matter and energy. Biology examines living organisms. Chemistry examines how substances interact. These are “natural sciences” because they observe phenomena that exist independently of humans, form hypotheses, and test those hypotheses through experiments. Computer science doesn’t quite work that way. The objects it studies, programs, algorithms, data structures, are human-made abstractions. Nobody discovered an algorithm in nature the way Darwin discovered natural selection. This is the core reason the question keeps coming up.

At the same time, calling computer science “not a science” feels wrong to many practitioners. Researchers in artificial intelligence run experiments, collect data, and revise theories about how intelligent behavior can emerge from computation. Network scientists measure real-world system performance and build predictive models. These activities look and feel like science, because they are.

Three Paradigms Within One Field

A widely cited framework describes computer science as operating across three distinct paradigms: theory (rooted in mathematics), abstraction (rooted in empirical science), and design (rooted in engineering). Each paradigm treats programs and computation differently, and each uses different methods to produce knowledge.

The rationalist paradigm treats computer science as a branch of mathematics. Programs are mathematical objects, and the goal is to prove things about them with certainty through deductive reasoning. Theoretical computer scientists working on algorithm correctness or computational complexity are doing something very close to pure math. When Alan Turing created his theoretical machine, he wasn’t trying to describe nature or explain observations. He was constructing an abstract logical framework. This is why many people argue computer science belongs in the same category as mathematics: a “formal science” that deals with abstract systems and logical truths rather than physical phenomena.

The scientific paradigm defines computer science as a natural, empirical discipline. This view is most common in artificial intelligence, where researchers treat programs as entities comparable to mental processes and combine formal reasoning with scientific experimentation. Allen Newell and Herbert Simon, in their 1975 Turing Award lecture, made this case explicitly. They argued that “computer science is the study of the phenomena surrounding computers” and that the programmed, running machine is “the organism we study,” just as a biologist studies living organisms. From this perspective, computation produces emergent behavior that must be observed and investigated empirically, not just proven on paper.

The technocratic paradigm treats computer science as engineering. Programs are data, and the goal is to build reliable systems. Software engineers test their creations empirically, using testing suites to gather evidence about whether something works, but the aim is practical: solve a problem, ship a product. This is the branch most people encounter in their daily lives.

Where Computer Science Uses the Scientific Method

Large portions of computer science research rely on observation, hypothesis testing, and experimental validation, the hallmarks of science. Performance analysis is a classic example: researchers build computer systems, construct models of how those systems should behave, then run real workloads to validate or refute their predictions. Early research on memory management policies in time-sharing systems followed this pattern closely, as did foundational work on queuing networks.

The field has developed its own categories of experiments. In-situ experiments test real applications in real environments. Emulation runs a real application inside a simulated environment. Simulation runs a simplified application in a simulated environment. Benchmarking evaluates a simplified application against a real environment. Many subfields have developed standardized test inputs and expected outputs so competing solutions can be compared objectively, much like controlled experiments in other sciences.

Field experiments also play a role. The DARPA Grand Challenge, where driverless vehicles competed to navigate real-world terrain, is a well-known example of experimentation under uncontrolled, real-world conditions. When researchers claim a new algorithm or technology outperforms existing ones, the expectation within the community is that they back that claim with empirical evidence. Assumptions must be clearly stated, and hypotheses must be testable. That standard comes directly from the scientific method.

Where It Looks More Like Mathematics

Edsger Dijkstra, one of the most influential computer scientists of the 20th century, argued forcefully that computer science belongs with mathematics, not the empirical sciences. His reasoning was practical: computers execute programs exactly as written, not as intended. Getting software correct turned out to be so difficult that formal mathematical proof became essential. Dijkstra saw formula manipulation as the computer scientist’s natural mode of reasoning, since manipulating symbols according to precise rules is “the one and only operation computers are very good at.”

This mathematical identity is strongest in areas like cryptography, computational complexity theory, and formal verification. A proof that no algorithm can solve a particular problem faster than a certain speed is not an empirical finding. It’s a logical truth, as certain as any theorem in algebra. No experiment could overturn it. This kind of knowledge is fundamentally different from scientific knowledge, which is always provisional and subject to revision based on new evidence.

Computer science shares this trait with mathematics: it deals with abstract entities rather than natural ones. When a mathematician says 2+2=4, that isn’t a theory about the world. It’s a truth within a formal system humans invented. Much of theoretical computer science works the same way. Turing’s halting problem, the Church-Turing thesis, the P vs NP question: these are about the boundaries of what computation can achieve in principle, independent of any physical machine.

How Institutions Classify It

The National Science Foundation groups computer and information sciences together with mathematics and statistics under the umbrella category “Mathematics and computer sciences.” This reflects the field’s formal, abstract foundations while still placing it within the broader landscape of scientific research. Universities vary in where they house their computer science departments. Some place CS in engineering schools, some in colleges of arts and sciences alongside physics and chemistry, and some give it a standalone school entirely.

The Stanford Encyclopedia of Philosophy describes the philosophy of computer science as drawing on questions from the philosophies of mathematics, technology, mind, language, and science all at once. That breadth is telling. Computer science sits at an intersection, and no single classification captures everything it does.

A Formal Science, Not a Natural Science

The most defensible answer to “is computer science a science?” is that it’s a formal science, like mathematics and logic, rather than a natural science like physics or chemistry. Formal sciences study abstract structures and systems of reasoning. They don’t describe the natural world or depend on empirical observation for their core truths. Computer science fits this description at its theoretical core: it’s about what computation is, what it can do, and what it cannot do, all of which can be established through logic alone.

But computer science is unusually broad. Its applied branches genuinely use the scientific method. Researchers in machine learning, networking, human-computer interaction, and systems design form hypotheses, run experiments, analyze data, and revise their understanding based on results. These activities are scientific by any reasonable definition. And its engineering branches build things, test them, and iterate, which is engineering by any reasonable definition.

So computer science contains science without being purely a science. It contains mathematics without being purely mathematics. It contains engineering without being purely engineering. The name is arguably misleading, but the field’s hybrid nature is also what makes it so broadly applicable. It provides the abstract foundations (formal science), the empirical investigation of complex computational phenomena (natural science), and the practical tools to build systems that work in the real world (engineering), all under one roof.