Mathematical foundations •
Coding theory – Useful in networking, programming, system development, and other areas where computers communicate with each other. •
Game theory – Useful in artificial intelligence and
cybernetics. •
Discrete mathematics – Study of discrete structures. Used in digital computer systems. •
Graph theory – Foundations for data structures and searching algorithms. •
Mathematical logic –
Boolean logic and other ways of
modeling logical queries; the uses and limitations of formal proof methods. •
Number theory – Theory of the
integers. Used in
cryptography as well as a test domain in
artificial intelligence.
Algorithms and data structures •
Algorithms – Sequential and parallel computational procedures for solving a wide range of problems. •
Data structures – The organization and manipulation of data.
Artificial intelligence Outline of artificial intelligence •
Artificial intelligence – The implementation and study of systems that exhibit an autonomous intelligence or behavior of their own. •
Automated reasoning – Solving engines, such as used in
Prolog, which produce steps to a result given a query on a fact and rule database, and
automated theorem provers that aim to prove
mathematical theorems with some assistance from a programmer. •
Computer vision – Algorithms for identifying three-dimensional objects from a two-dimensional picture. •
Soft computing, the use of inexact solutions for otherwise extremely difficult problems: •
Machine learning – Development of models that are able to learn and adapt without following explicit instructions, by using algorithms and statistical models to analyze and draw inferences from patterns in data. •
Evolutionary computing – Biologically inspired algorithms. •
Natural language processing – Building systems and algorithms that analyze, understand, and generate natural (human) languages. •
Robotics – Algorithms for controlling the behavior of robots.
Communication and security •
Networking – Algorithms and protocols for reliably communicating data across different shared or dedicated media, often including
error correction. •
Computer security – Practical aspects of securing computer systems and computer networks. •
Cryptography – Applies results from complexity, probability, algebra, and number theory to invent and
break codes, and analyze the security of
cryptographic protocols.
Computer architecture •
Computer architecture – The design, organization, optimization, and verification of a computer system, mostly about
CPUs and
Memory subsystems (and the bus connecting them). •
Operating systems – Systems for managing computer programs and providing the basis of a usable system.
Computer graphics •
Computer graphics – Algorithms both for generating visual images synthetically, and for integrating or altering visual and spatial information sampled from the real world. •
Image processing – Determining information from an image through computation. •
Information visualization – Methods for representing and displaying abstract data to facilitate human interaction for exploration and understanding.
Concurrent, parallel, and distributed systems •
Parallel computing – The theory and practice of simultaneous computation; data safety in any multitasking or multithreaded environment. •
Concurrency (computer science) – Computing using multiple concurrent threads of execution, devising algorithms for solving problems on various processors to achieve maximal speed-up compared to sequential execution. •
Distributed computing – Computing using multiple computing devices over a network to accomplish a common objective or task, and thereby reducing the latency involved in single processor contributions for any task.
Databases Outline of databases •
Relational databases – the
set theoretic and algorithmic foundation of databases. •
Structured Storage – non-relational databases such as
NoSQL databases. •
Data mining – Study of algorithms for searching and processing information in documents and databases; closely related to
information retrieval.
Programming languages and compilers •
Compiler theory – Theory of
compiler design, based on
Automata theory. •
Programming language pragmatics – Taxonomy of programming languages, their strength, and weaknesses. Various
programming paradigms, such as
object-oriented programming. •
Programming language theory – Theory of programming language design •
Formal semantics – rigorous mathematical study of the meaning of programs. •
Type theory – Formal analysis of the types of data, and the use of these types to understand properties of programs — especially program safety.
Scientific computing •
Computational science – constructing
mathematical models and
quantitative analysis techniques and using computers to analyze and solve
scientific problems. •
Numerical analysis – Approximate numerical solution of mathematical problems such as
root-finding,
integration, the
solution of ordinary differential equations; the approximation of
special functions. •
Symbolic computation – Manipulation and solution of expressions in symbolic form, also known as
Computer algebra. •
Computational physics – Numerical simulations of large non-analytic systems •
Computational chemistry – Computational modelling of theoretical chemistry in order to determine chemical structures and properties •
Bioinformatics and
Computational biology – The use of computer science to maintain, analyze, store
biological data and to assist in solving biological problems such as
Protein folding, function prediction and
Phylogeny. •
Computational neuroscience – Computational modelling of
neurophysiology. •
Computational linguistics • •
Software engineering Outline of software engineering •
Formal methods – Mathematical approaches for describing and reasoning about software design. •
Software engineering – The principles and practice of designing, developing, and testing programs, as well as proper engineering practices. •
Algorithm design – Using ideas from algorithm theory to creatively design solutions to real tasks. •
Computer programming – The practice of using a programming language to implement algorithms. •
Human–computer interaction – The study and design of computer interfaces that people use. •
Reverse engineering – The application of the scientific method to the understanding of arbitrary existing software.
Theory of computation •
Automata theory – Different logical structures for solving problems. •
Computability theory – What is calculable with the current models of computers. Proofs developed by
Alan Turing and others provide insight into the possibilities of what may be computed and what may not. •
List of unsolved problems in computer science •
Computational complexity theory – Fundamental bounds (especially time and storage space) on classes of computations. •
Quantum computing theory – Explores computational models involving
quantum superposition of bits. == History ==