Computer science

Study of computation, automation, and information



Computer science can be described as all of the following:

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 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) - 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

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 network

Computer security and cryptography

Computer security Cryptography

Databases and data mining

Database 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

Information 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