# Computer science

Study of computation, automation, and information

## Description

Computer science can be described as all of the following:

- Academic discipline
- Science
- Applied science

Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to practical disciplines (including the design and implementation of hardware and software). Computer science is generally considered an area of academic research and distinct from computer programming.

Algorithms and data structures are central to computer science. The theory of computation concerns abstract models of computation and general classes of problems that can be solved using them. The fields of cryptography and computer security involve studying the means for secure communication and for preventing security vulnerabilities. Computer graphics and computational geometry address the generation of images. Programming language theory considers different ways to describe computational processes, and database theory concerns the management of repositories of data. Human–computer interaction investigates the interfaces through which humans and computers interact, and software engineering focuses on the design and principles behind developing software. Areas such as operating systems, networks and embedded systems investigate the principles and design behind complex systems. Computer architecture describes the construction of computer components and computer-operated equipment. Artificial intelligence and machine learning aim to synthesize goal-orientated processes such as problem-solving, decision-making, environmental adaptation, planning and learning found in humans and animals. Within artificial intelligence, computer vision aims to understand and process image and video data, while natural language processing aims to understand and process textual and linguistic data.

The fundamental concern of computer science is determining what can and cannot be automated. The Turing Award is generally recognized as the highest distinction in computer science.

## Philosophy

Philosophy of computer science

## Fields

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) - 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, human–computer interaction, computer graphics, operating systems, and numerical and symbolic computation as being important areas of computer science.

### Theoretical computer science

#### Theory of computation

Theory of computation

Automata theory Formal languages Computability theory Computational complexity theory Quantum computing Models of computation Logic circuit theory Cellular automata

#### Information and coding theory

Information theory Coding theory

Channel capacity Algorithmic information theory Signal detection theory Kolmogorov complexity

#### Data structures and algorithms

Data structure Algorithm

Analysis of algorithms Algorithm design Combinatorial optimization Computational geometry Randomized algorithms

#### Programming language theory and formal methods

Programming language theory Formal methods

Programming language Formal semantics Type theory Formal verification Automated theorem proving

### Computer systems

#### Computer architecture and organization

Computer architecture Computer organisation Computer engineering

#### Concurrent, parallel and distributed computing

Concurrency (computer science) Distributed computing Parallel computing

#### Computer networks

#### Computer security and cryptography

Computer security Cryptography

#### Databases and data mining

### Artificial intelligence

Artificial intelligence Bio-inspired computing Machine learning

### Applied computer science

#### Computer graphics and visualization

Computer graphics Image processing Information visualization

#### Image and sound processing

#### Computational science, finance and engineering

Computational science Computational finance Computational engineering Numerical analysis Symbolic computation Computational physics Computational chemistry Bioinformatics Computational biology Computational neuroscience

#### Social computing and human–computer interaction

Social computing Human–computer interaction

#### Software engineering

Computer programming Software engineeringCompiler theory Programming language pragmatics Programming language theory Formal semantics Type theory Formal methods Algorithm design Reverse engineering

### Other foundations

Game theory Discrete Mathematics Graph theory Mathematical logic Number theory Automated reasoning Soft computing Evolutionary computing Robotics