Computer science

Computer science or computing science (abbreviated CS) is the study of the theoretical foundations of information and computation and of practical techniques for their implementation and application in computer systems. Computer scientists invent algorithmic processes that create, describe, and transform information and formulate suitable abstractions to model complex systems.
Computer science has many sub-fields; some, such as computational complexity theory, study the fundamental properties of computational problems, while others, such as computer graphics, emphasize the computation of specific results. Still others focus on the challenges in implementing computations. For example, programming language theory studies approaches to describe computations, while computer programming applies specific programming languages to solve specific computational problems, and human-computer interaction focuses on the challenges in making computers and computations useful, usable, and universally accessible to humans.
The general public sometimes confuses computer science with careers that deal with computers (such as information technology), or think that it relates to their own experience of computers, which typically involves activities such as gaming, web-browsing, and word-processing. However, the focus of computer science is more on understanding the properties of the programs used to implement software such as games and web-browsers, and using that understanding to create new programs or improve existing ones.[3]

Plot of a quicksort algorithm
Utah teapot representing computer graphics
large capital lambda Microsoft Tastenmaus mouse representing human-computer interaction
Computer science deals with the theoretical foundations of information, computation, and with practical techniques for their implementation and application.

Major achievements


The German military used the Enigma machine (shown here) during World War II for communication they thought to be secret. The large-scale decryption of Enigma traffic at Bletchley Park was an important factor that contributed to Allied victory in WWII.[12]
Despite its short history as a formal academic discipline, computer science has made a number of fundamental contributions to science and society. These include:
  • The start of the "digital revolution," which includes the current Information Age and the Internet.[13]
  • A formal definition of computation and computability, and proof that there are computationally unsolvable and intractable problems.[14]
  • The concept of a programming language, a tool for the precise expression of methodological information at various levels of abstraction.[15]
  • In cryptography, breaking the Enigma machine was an important factor contributing to the Allied victory in World War II.[12]
  • Scientific computing enabled practical evaluation of processes and situations of great complexity, as well as experimentation entirely by software. It also enabled advanced study of the mind, and mapping of the human genome became possible with the Human Genome Project.[13] Distributed computing projects such as Folding@home explore protein folding.
  • Algorithmic trading has increased the efficiency and liquidity of financial markets by using artificial intelligence, machine learning, and other statistical and numerical techniques on a large scale.[16]
  • Image synthesis, including video by computing individual video frames.[citation needed]
  • Human language processing, including practical speech-to-text conversion and automated translation of languages[citation needed]
  • Simulation of various processes, including computational fluid dynamics, physical, electrical, and electronic systems and circuits, as well as societies and social situations (notably war games) along with their habitats, among many others. Modern computers enable optimization of such designs as complete aircraft. Notable in electrical and electronic circuit design are SPICE as well as software for physical realization of new (or modified) designs. The latter includes essential design software for integrated circuits.

Areas of computer science

As a discipline, computer science spans a range of topics from theoretical studies of algorithms and the limits of computation to the practical issues of implementing computing systems in hardware and software. CSAB, formerly called Computing Sciences Accreditation Board – which is made up of representatives of the Association for Computing Machinery (ACM), and the IEEE Computer Society (IEEE-CS)[20] – identifies four areas that it considers crucial to the discipline of computer science: theory of computation, algorithms and data structures, programming methodology and languages, and computer elements and architecture. In addition to these four areas, CSAB also identifies fields such as software engineering, artificial intelligence, computer networking and communication, database systems, parallel computation, distributed computation, computer-human interaction, computer graphics, operating systems, and numerical and symbolic computation as being important areas of computer science.[18]

Theoretical computer science

The broader field of theoretical computer science encompasses both the classical theory of computation and a wide range of other topics that focus on the more abstract, logical, and mathematical aspects of computing.

Theory of computation

According to Peter J. Denning, the fundamental question underlying computer science is, "What can be (efficiently) automated?"[8] The study of the theory of computation is focused on answering fundamental questions about what can be computed and what amount of resources are required to perform those computations. In an effort to answer the first question, computability theory examines which computational problems are solvable on various theoretical models of computation. The second question is addressed by computational complexity theory, which studies the time and space costs associated with different approaches to solving a multitude of computational problems.
The famous "P=NP?" problem, one of the Millennium Prize Problems,[21] is an open problem in the theory of computation.
DFAexample.svg Wang tiles.png P = NP ? GNITIRW-TERCES Blochsphere.svg
Automata theory Computability theory Computational complexity theory Cryptography Quantum computing theory

Information and coding theory

Information theory is related to the quantification of information.This was developed by Claude E. Shannon to find fundamental limits on signal processing operations such as compressing data and on reliably storing and communicating data. Coding theory is the study of the properties of codes and their fitness for a specific application. Codes are used for data compression, cryptography, error-correction and more recently also for network coding. Codes are studied for the purpose of designing efficient and reliable data transmission methods.

Algorithms and data structures

O(n2) Sorting quicksort anim.gif Singly linked list.png SimplexRangeSearching.png
Analysis of algorithms Algorithms Data structures Computational geometry

Programming language theory

Programming language theory is a branch of computer science that deals with the design, implementation, analysis, characterization, and classification of programming languages and their individual features. It falls within the discipline of computer science, both depending on and affecting mathematics, software engineering and linguistics. It is a well-recognized branch of computer science, and an active research area, with results published in numerous journals dedicated to PLT, as well as in general computer science and engineering publications.
\Gamma\vdash x: \text{Int} Ideal compiler.png Python add5 syntax.svg
Type theory Compiler design Programming languages

Artificial intelligence

This branch of computer science aims to synthesise goal-orientated processes such as problem-solving, decision-making, environmental adaptation, learning and communication which are found in humans and animals. From its origins in cybernetics and in the Dartmouth Conference (1956), artificial intelligence (AI) research has been necessarily cross-disciplinary, drawing on areas of expertise such as applied mathematics, symbolic logic, semiotics, electrical engineering, philosophy of mind, neurophysiology, and social intelligence. AI is associated in the popular mind with robotic development, but the main field of practical application has been as an embedded component in areas of software development which require computational understanding and modeling such as finance and economics, data mining and the physical sciences. The starting-point in the late 1940s was Alan Turing's question "Can computers think?", and the question remains effectively unanswered although the "Turing Test" is still used to assess computer output on the scale of human intelligence. But the automation of evaluative and predictive tasks has been increasingly successful as a substitute for human monitoring and intervention in domains of computer application involving complex real-world data.

Nicolas P. Rougier's rendering of the human brain.png Eye.png Corner.png KnnClassification.svg
Machine Learning Computer vision Image Processing Pattern Recognition
User-FastFission-brain.gif Data.png Sky.png Earth.png
Cognitive Science Data Mining Evolutionary Computation Information Retrieval
Neuron.svg English.png HONDA ASIMO.jpg
Knowledge Representation Natural Language Processing Robotics

Computer architecture and engineering

Computer architecture, or digital computer organization, is the conceptual design and fundamental operational structure of a computer system. It focuses largely on the way by which the central processing unit performs internally and accesses addresses in memory. The field often involves disciplines of computer engineering and electrical engineering, selecting and interconnection hardware components to create computers that meet functional, performance, and cost goals.
NOR ANSI.svg Fivestagespipeline.png SIMD.svg
Digital logic Microarchitecture Multiprocessing
Operating system placement.svg NETWORK-Library-LAN.png Emp Tables (Database).PNG Padlock.svg
Operating systems Computer networks Databases Computer security
Roomba original.jpg Flowchart.png Ideal compiler.png Python add5 syntax.svg
Ubiquitous computing Systems architecture Compiler design Programming languages

Computational science


Computational science (or scientific computing) is the field of study concerned with constructing mathematical models and quantitative analysis techniques and using computers to analyze and solve scientific problems. In practical use, it is typically the application of computer simulation and other forms of computation to problems in various scientific disciplines.
Lorenz attractor yb.svg Quark wiki.jpg Naphthalene-3D-balls.png 1u04-argonaute.png
Numerical analysis Computational physics Computational chemistry Bioinformatics

Information science

Earth.png Neuron.png English.png Wacom graphics tablet and pen.png
Information Retrieval Knowledge Representation Natural Language Processing Human–computer interaction