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