Computer science
Computer science is the study of computation, information, and automation. Its fundamental concern is a single deceptively simple question: what can and cannot be automated? That question has a long shadow. Machines for fixed numerical tasks like the abacus have existed since antiquity, and algorithms for performing computations existed even before sophisticated computing equipment. Yet a folkloric quotation, often attributed to but almost certainly not first formulated by Edsger Dijkstra, insists that computer science is no more about computers than astronomy is about telescopes. So if the field is not really about the machines, what is it about? How did a discipline born from mechanical calculators come to span everything from secret codes to artificial minds? And why, decades in, do its own practitioners still argue over whether it counts as science, mathematics, or engineering?
Wilhelm Schickard designed and constructed the first working mechanical calculator in 1623, long before anyone imagined a digital computer. In 1673, Gottfried Leibniz demonstrated a digital mechanical calculator called the Stepped Reckoner. Leibniz may be considered the first computer scientist and information theorist, partly because he documented the binary number system, though Thomas Harriot had already done so decades earlier.
Thomas de Colmar launched the mechanical calculator industry in 1820 when he invented his simplified arithmometer, the first calculating machine reliable enough for daily office use. Charles Babbage began designing the first automatic mechanical calculator, his Difference Engine, in 1822. That work eventually gave him the idea for the first programmable mechanical calculator, his Analytical Engine. He started developing it in 1834, and in less than two years he had sketched out many of the salient features of the modern computer. A crucial step was adopting a punched card system derived from the Jacquard loom, which made the machine infinitely programmable.
Ada Lovelace, in 1843, while translating a French article on the Analytical Engine, wrote an algorithm to compute the Bernoulli numbers. It is considered the first published algorithm ever specifically tailored for implementation on a computer. Around 1885, Herman Hollerith invented the tabulator, which used punched cards to process statistical information; his company eventually became part of IBM. The punched card, born on a weaving loom, would thread its way through the next century of computing.
Percy Ludgate, in 1909 and unaware of Babbage's earlier work, published the second of the only two designs for mechanical analytical engines in history. In 1914, the Spanish engineer Leonardo Torres Quevedo published his Essays on Automatics and designed a theoretical electromechanical calculating machine controlled by a read-only program. That paper also introduced the idea of floating-point arithmetic. In 1920, to celebrate the 100th anniversary of the arithmometer, Torres presented in Paris the Electromechanical Arithmometer, a prototype on which commands could be typed and results printed automatically.
Howard Aiken, in 1937, one hundred years after Babbage's impossible dream, convinced IBM to develop his giant programmable calculator. The ASCC, or Harvard Mark I, was based on Babbage's Analytical Engine and used punched cards and a central processing unit. When it was finished, some hailed it as Babbage's dream come true.
During the 1940s, with machines such as the Atanasoff-Berry computer and ENIAC, the word computer came to mean the machine rather than the human who once held that job. As it became clear computers could do more than mathematical calculation, the field broadened to study computation in general. The next question was institutional: where would this new study live?
In 1945, IBM founded the Watson Scientific Computing Laboratory at Columbia University in New York City. The renovated fraternity house on Manhattan's West Side was IBM's first laboratory devoted to pure science, and the forerunner of IBM's Research Division. The close relationship between IBM and Columbia helped a new discipline emerge, and Columbia offered one of the first academic-credit courses in computer science in 1946.
The University of Cambridge Computer Laboratory launched the world's first computer science degree program, the Cambridge Diploma in Computer Science, in 1953. The first computer science department in the United States formed at Purdue University in 1962. The field was establishing itself as a distinct academic discipline through the 1950s and early 1960s.
The name itself arrived slowly. Although first proposed in 1956, the term computer science appears in a 1959 article in Communications of the ACM, in which Louis Fein argued for a Graduate School in Computer Sciences. He drew an analogy to the creation of Harvard Business School in 1921, reasoning that the subject was applied and interdisciplinary while still having the marks of an academic discipline. The numerical analyst George Forsythe pushed in the same direction, and the new departments soon followed.
Despite its name, a significant amount of computer science does not involve studying computers themselves. That mismatch prompted a parade of alternatives. Certain departments of major universities prefer computing science to emphasize the difference. The Danish scientist Peter Naur suggested datalogy, reflecting a discipline that revolves around data and data treatment without necessarily involving computers. The Department of Datalogy at the University of Copenhagen, founded in 1969, was the first scientific institution to use the term, with Naur as its first professor. Naur also proposed data science, now used for a multi-disciplinary field including statistics and databases.
The early naming attempts could turn playful. Communications of the ACM facetiously floated turingineer, turologist, flow-charts-man, applied meta-mathematician, and applied epistemologist. Three months later comptologist appeared, followed the next year by hypologist, and at some point computics.
Europe went its own way with words built from automatic information: informatique in French, Informatik in German, informatica in Italian and Dutch, and pliroforiki in Greek. The UK adopted similar language, as in the School of Informatics at the University of Edinburgh. In the U.S., however, informatics is linked with applied computing, or computing in the context of another domain. The naming fight masked a deeper disagreement about what kind of thing computer science even is.
Allen Newell and Herbert A. Simon argued in 1975 that computer science is an empirical discipline. They would have called it experimental, but said that, like astronomy, economics, and geology, some of its forms of observation do not fit a narrow stereotype. Each new machine that is built, they wrote, is an experiment that poses a question to nature, answered by observing the machine in operation. Critics counter that defining the laws and theorems of computer science, if any exist, remains a problem.
Proponents of the engineering view argue that the reliability of computational systems is investigated the same way as bridges in civil engineering and airplanes in aerospace engineering. They add that empirical sciences observe what presently exists, while computer science observes what is possible to exist, concerned with creating phenomena rather than discovering laws.
Those who call it mathematics argue that programs are physical realizations of mathematical entities, reasoned through formal methods. Edsger W. Dijkstra and Tony Hoare regard program instructions as mathematical sentences and treat formal semantics for programming languages as mathematical axiomatic systems. Others split the difference. Peter Wegner named three paradigms: science, technology, and mathematics. Peter Denning's working group named theory, abstraction, and design. Amnon H. Eden described a rationalist paradigm, a technocratic paradigm, and a scientific paradigm. David Parnas drew a cleaner line: computer science studies the properties of computation in general, while software engineering designs specific computations for practical goals.
CSAB, formerly the Computing Sciences Accreditation Board, draws on the ACM and the IEEE Computer Society and names four crucial areas: theory of computation, algorithms and data structures, programming methodology and languages, and computer elements and architecture. According to Peter Denning, the fundamental question underlying the field is, what can be automated? Theory of computation splits into computability theory, which asks what is solvable on theoretical models, and computational complexity theory, which studies time and space costs. The famous P = NP? problem, one of the Millennium Prize Problems, remains open.
Information theory was developed by Claude Shannon to find fundamental limits on operations like compressing data and reliably storing and communicating it. Coding theory studies codes used for data compression, cryptography, error detection and correction, and network coding. Cryptography ranges from the historical art of writing secret messages to modern study of distributed computations under attack, including digital signatures, blockchain, zero-knowledge proofs, and garbled circuits.
Artificial intelligence aims to synthesize goal-oriented processes like problem-solving, decision-making, learning, and communication found in humans and animals. It traces to cybernetics and the Dartmouth Conference of 1956, and draws on applied mathematics, symbolic logic, philosophy of mind, and neurophysiology. The starting point in the late 1940s was Alan Turing's question, can computers think? The question remains effectively unanswered, though the Turing test still assesses computer output against human intelligence.
Bill Rapaport, the philosopher of computing, noted three Great Insights of Computer Science, and they reduce the entire field to almost nothing. The first, credited to Leibniz, George Boole, Turing, Shannon, and Samuel Morse, is that all information about any computable problem can be represented using only 0 and 1, or any bistable pair that flips between two states.
Turing's insight follows: a computer needs only five actions to do anything. Move left one location, move right one location, read the symbol at the current location, print 0, or print 1. Corrado Bohm and Giuseppe Jacopini added the third insight, that only three ways of combining actions are needed: sequence, selection, and repetition. Those three can be simplified further with goto, more elementary than structured programming.
Those insights feed the programming paradigms practitioners still choose among, from functional programming, which treats computation as the evaluation of mathematical functions, to object-oriented programming, built from objects that interact with one another. The field's ideas circulate in an unusual way. Unlike most academic fields, computer science prizes conference papers above journal publications. One proposed explanation is that a young, fast-moving field needs rapid review and distribution, a task conferences handle better than journals. The Turing Award remains the highest distinction in the field.
Continue Browsing
Common questions
What is computer science the study of?
Computer science is the study of computation, information, and automation. It spans theoretical disciplines such as algorithms, theory of computation, and information theory, and applied disciplines including the design and implementation of hardware and software. Its fundamental concern is determining what can and cannot be automated.
Who invented the first mechanical calculator in computer science history?
Wilhelm Schickard designed and constructed the first working mechanical calculator in 1623. In 1673, Gottfried Leibniz demonstrated a digital mechanical calculator called the Stepped Reckoner, and Leibniz is sometimes considered the first computer scientist and information theorist.
When did computer science become an academic discipline?
Computer science began to be established as a distinct academic discipline in the 1950s and early 1960s. The world's first computer science degree program, the Cambridge Diploma in Computer Science, began at the University of Cambridge Computer Laboratory in 1953, and the first U.S. computer science department formed at Purdue University in 1962.
Who wrote the first computer algorithm?
Ada Lovelace wrote the first published algorithm specifically tailored for implementation on a computer. In 1843, while translating a French article on Charles Babbage's Analytical Engine, she included an algorithm to compute the Bernoulli numbers.
Why is computer science not really about computers?
A folkloric quotation, often attributed to but almost certainly not first formulated by Edsger Dijkstra, states that computer science is no more about computers than astronomy is about telescopes. A significant amount of computer science does not involve studying computers themselves, which is why alternative names such as computing science, datalogy, and informatics have been proposed.
What are the main fields of computer science?
CSAB identifies four crucial areas: theory of computation, algorithms and data structures, programming methodology and languages, and computer elements and architecture. It also names software engineering, artificial intelligence, computer networking, database systems, parallel and distributed computation, human-computer interaction, computer graphics, and operating systems as important areas.
What is the highest award in computer science?
The Turing Award is generally recognized as the highest distinction in computer science.
All sources
61 references cited across the entry
- 2bookWhat Can Be Automated? Computer Science and Engineering Research StudyMIT Press — 1980
- 3journalComputing as a disciplineP.J. Denning et al. — February 1989
- 4webWordNet Search—3.1Wordnetweb.princeton.edu
- 7bookAlgorithmics The Spirit of ComputingDavid Harel — Springer Berlin — 2014
- 8citationWhat Can be Automated? What Cannot be Automated?Richard D. Patton et al. — Springer — 2009
- 9journalComputer Science and EducationGeorge Forsythe — August 5–10, 1969
- 10journalGeorge Forsythe and the development of computer scienceDonald E. Knuth — 1972-08-01
- 11journalCelebrating 50 years of the Turing awardVicki L. Hanson — 2017-01-23
- 12journalACM marks 50 years of the ACM A.M. turing award and computing's greatest achievementsEric Scott et al. — 2018-06-05
- 13journalWhy Did Thomas Harriot Invent Binary?Lloyd Strickland — 2023
- 21bookCharles Babbage: Pioneer of the ComputerAnthony Hyman — Oxford University Press — 1982
- 27webIBM Archives: 1945Ibm.com — January 23, 2003
- 28webIBM100 – The Origins of Computer ScienceIbm.com — 1995-09-15
- 29webSome EDSAC statisticsUniversity of Cambridge
- 30webComputer science pioneer Samuel D. Conte dies at 85Purdue Computer Science — July 1, 2002
- 31bookThe Science of Computing: Shaping a DisciplineMatti Tedre — Taylor and Francis / CRC Press — 2014
- 32journalThe Role of the University in Computers, Data Processing, and Related FieldsLouis Fine — 1960
- 33webStanford University Oral HistoryStanford University
- 35webThe Development of Computer Science: A Sociocultural PerspectiveMatti Tedre — 2006
- 36journalThe science of datalogyPeter Naur — 1966
- 37journalLetters to the editorE.A. Weiss et al.
- 38webWhy an Informatics Degree?Dennis P. Groth — Cacm.acm.org — February 2010
- 39journalComputing as a Science: A Survey of Competing ViewpointsM. Tedre — 2011
- 40journalSoftware engineering programmes are not computer science programmesD.L. Parnas — 1998
- 41journalInsight in how computer science can be a scienceR.W.P. Luk — 2020
- 42journalComputer science and its relation to mathematicsD.E. Knuth — 1974
- 43bookThe Philosophy of Computer Science (Stanford Encyclopedia of Philosophy)Metaphysics Research Lab, Stanford University — 2021
- 44conferenceResearch paradigms in computer science—Proceedings of the 2nd international Conference on Software EngineeringWegner, P. — IEEE Computer Society Press, Los Alamitos, CA — October 13–15, 1976
- 45journalComputing is a natural sciencePeter J. Denning — 2007
- 46journalThree Paradigms of Computer ScienceA.H. Eden — 2007
- 47encyclopediaThe Philosophy of Computer ScienceRaymond Turner et al. — 2019
- 48webComputer Science as a ProfessionComputing Sciences Accreditation Board — May 28, 1997
- 49bookComputer Science: Reflections on the Field, Reflections from the FieldCommittee on the Fundamentals of Computer Science: Challenges and Opportunities, National Research Council — National Academies Press — 2004
- 50webCSAB Leading Computer EducationCSAB — August 3, 2011
- 52webClaude E. Shannon: Founder of Information TheoryGraham P. Collins — October 14, 2002
- 54webComputer ArchitectureRonald A. Thisted — The University of Chicago — April 7, 1997
- 55bookComputer Networks: A Systems ApproachLarry Peterson et al. — Harcourt Asia — 2000
- 56bookIntroduction to modern cryptographyJonathan Katz — Chapman & Hall/CRC — 2008
- 57webWhat Is Computation?William J. Rapaport — State University of New York at Buffalo — 20 September 2013
- 58webMulti-Paradigm Programming LanguageMozilla Foundation
- 59journalViewpoint: Research evaluation for computer scienceBertrand Meyer — April 2009
- 60webEvaluating Computer Scientists and Engineers For Promotion and TenureDavid Patterson — Computing Research Association — August 1999
- 61journalViewpoint: Time for Computer Science to Grow UpLance Fortnow — August 2009