List of basic computer science topics
Encyclopedia
The following outline is provided as an overview of and topical guide to computer science:
Computer science
(also called computing science) – study of the theoretical foundations of information
and computation
and their implementation and application in computer systems. One well known subject classification system for computer science
is the ACM Computing Classification System
devised by the Association for Computing Machinery
.
Webcasts
Computer science
Computer science
Computer science or computing science is the study of the theoretical foundations of information and computation and of practical techniques for their implementation and application in computer systems...
(also called computing science) – study of the theoretical foundations of information
Information
Information in its most restricted technical sense is a message or collection of messages that consists of an ordered sequence of symbols, or it is the meaning that can be interpreted from such a message or collection of messages. Information can be recorded or transmitted. It can be recorded as...
and computation
Computation
Computation is defined as any type of calculation. Also defined as use of computer technology in Information processing.Computation is a process following a well-defined model understood and expressed in an algorithm, protocol, network topology, etc...
and their implementation and application in computer systems. One well known subject classification system for computer science
Computer science
Computer science or computing science is the study of the theoretical foundations of information and computation and of practical techniques for their implementation and application in computer systems...
is the ACM Computing Classification System
ACM Computing Classification System
The ACM Computing Classification System is a subject classification system for computer science devised by the Association for Computing Machinery...
devised by the Association for Computing Machinery
Association for Computing Machinery
The Association for Computing Machinery is a learned society for computing. It was founded in 1947 as the world's first scientific and educational computing society. Its membership is more than 92,000 as of 2009...
.
Mathematical foundations
- Mathematical logicMathematical logicMathematical logic is a subfield of mathematics with close connections to foundations of mathematics, theoretical computer science and philosophical logic. The field includes both the mathematical study of logic and the applications of formal logic to other areas of mathematics...
– Boolean logicBoolean logicBoolean algebra is a logical calculus of truth values, developed by George Boole in the 1840s. It resembles the algebra of real numbers, but with the numeric operations of multiplication xy, addition x + y, and negation −x replaced by the respective logical operations of...
and other ways of modelingMathematical modelA mathematical model is a description of a system using mathematical concepts and language. The process of developing a mathematical model is termed mathematical modeling. Mathematical models are used not only in the natural sciences and engineering disciplines A mathematical model is a...
logical queries; the uses and limitations of formal proof methods - Number theoryNumber theoryNumber theory is a branch of pure mathematics devoted primarily to the study of the integers. Number theorists study prime numbers as well...
– Theory of the integerIntegerThe integers are formed by the natural numbers together with the negatives of the non-zero natural numbers .They are known as Positive and Negative Integers respectively...
s. Used in cryptographyCryptographyCryptography is the practice and study of techniques for secure communication in the presence of third parties...
as well as a test domain in artificial intelligenceArtificial intelligenceArtificial intelligence is the intelligence of machines and the branch of computer science that aims to create it. AI textbooks define the field as "the study and design of intelligent agents" where an intelligent agent is a system that perceives its environment and takes actions that maximize its...
. - Graph theoryGraph theoryIn mathematics and computer science, graph theory is the study of graphs, mathematical structures used to model pairwise relations between objects from a certain collection. A "graph" in this context refers to a collection of vertices or 'nodes' and a collection of edges that connect pairs of...
– Foundations for data structures and searching algorithms. - Game theoryGame theoryGame theory is a mathematical method for analyzing calculated circumstances, such as in games, where a person’s success is based upon the choices of others...
– Useful in artificial intelligence and cyberneticsCyberneticsCybernetics is the interdisciplinary study of the structure of regulatory systems. Cybernetics is closely related to information theory, control theory and systems theory, at least in its first-order form...
. - Coding theoryCoding theoryCoding 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...
– Useful in networking and other areas where computers communicate with each other.
Algorithms and data structures
- Algorithms – Sequential and parallel computational procedures for solving a wide range of problems.
- Data structureData structureIn computer science, a data structure is a particular way of storing and organizing data in a computer so that it can be used efficiently.Different kinds of data structures are suited to different kinds of applications, and some are highly specialized to specific tasks...
s – The organization and manipulation of data.
Artificial intelligence
- Artificial intelligenceArtificial intelligenceArtificial intelligence is the intelligence of machines and the branch of computer science that aims to create it. AI textbooks define the field as "the study and design of intelligent agents" where an intelligent agent is a system that perceives its environment and takes actions that maximize its...
– The implementation and study of systems that exhibit an autonomous intelligence or behavior of their own. - Automated reasoningAutomated reasoningAutomated reasoning is an area of computer science dedicated to understand different aspects of reasoning. The study in automated reasoning helps produce software which allows computers to reason completely, or nearly completely, automatically...
– Solving engines, such as used in PrologPrologProlog is a general purpose logic programming language associated with artificial intelligence and computational linguistics.Prolog has its roots in first-order logic, a formal logic, and unlike many other programming languages, Prolog is declarative: the program logic is expressed in terms of...
, which produce steps to a result given a query on a fact and rule database, and automated theorem proversAutomated theorem provingAutomated theorem proving or automated deduction, currently the most well-developed subfield of automated reasoning , is the proving of mathematical theorems by a computer program.- Decidability of the problem :...
that aim to prove mathematical theorems with some assistance from a programmer. - RoboticsRoboticsRobotics is the branch of technology that deals with the design, construction, operation, structural disposition, manufacture and application of robots...
– Algorithms for controlling the behavior of robots. - Computer visionComputer visionComputer vision is a field that includes methods for acquiring, processing, analysing, and understanding images and, in general, high-dimensional data from the real world in order to produce numerical or symbolic information, e.g., in the forms of decisions...
– Algorithms for identifying three dimensional objects from a two dimensional picture. - Machine learningMachine learningMachine learning, a branch of artificial intelligence, is a scientific discipline concerned with the design and development of algorithms that allow computers to evolve behaviors based on empirical data, such as from sensor data or databases...
– Automated creation of a set of rules and axioms based on input.
Collaborative Networks
- Virtual Organization – Including virtual enterprises, extended enterprises.
- VO Breeding Environment – Including industry clusters, industrial districts, digital business ecosystems.
- Professional virtual communityProfessional virtual communityA Professional Virtual Community represents the combination of the concepts of virtual community and professional community. Virtual communities are defined as social systems of networks of individuals, who use computer technologies to mediate their relationships...
– Including virtual teams, social networks.
Communications and Security
- Networking – Algorithms and protocols for reliably communicating data across different shared or dedicated media, often including error correction.
- Computer securityComputer securityComputer security is a branch of computer technology known as information security as applied to computers and networks. The objective of computer security includes protection of information and property from theft, corruption, or natural disaster, while allowing the information and property to...
– Practical aspects of securing computer systems and computer networks. - CryptographyCryptographyCryptography is the practice and study of techniques for secure communication in the presence of third parties...
– Applies results from complexity, probability and number theory to invent and break codes, and analyze the security of cryptographic protocols.
Computer architecture
- Computer architectureComputer architectureIn computer science and engineering, computer architecture is the practical art of selecting and interconnecting hardware components to create computers that meet functional, performance and cost goals and the formal modelling of those systems....
– The design, organization, optimization and verification of a computer system, mostly about CPUs and Memory subsystem (and the bus connecting them). - Operating systemOperating systemAn operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...
s – Systems for managing computer programs and providing the basis of a usable system.
Computer graphics
- Computer graphicsComputer graphicsComputer graphics are graphics created using computers and, more generally, the representation and manipulation of image data by a computer with help from specialized software and hardware....
– Algorithms both for generating visual images synthetically, and for integrating or altering visual and spatial information sampled from the real world. - Image processingImage processingIn electrical engineering and computer science, image processing is any form of signal processing for which the input is an image, such as a photograph or video frame; the output of image processing may be either an image or, a set of characteristics or parameters related to the image...
– Determining information from an image through computation. - Human computer interaction – The study and design of computer interfaces that people use.
Concurrent, parallel, and distributed systems
- ConcurrencyConcurrency (computer science)In computer science, concurrency is a property of systems in which several computations are executing simultaneously, and potentially interacting with each other...
– The theory and practice of simultaneous computation; data safety in any multitasking or multithreaded environment. - Parallel computingParallel computingParallel computing is a form of computation in which many calculations are carried out simultaneously, operating on the principle that large problems can often be divided into smaller ones, which are then solved concurrently . There are several different forms of parallel computing: bit-level,...
– Computing using multiple concurrent threads of execution, devising algorithms for solving problems on multiple processors to achieve maximal speed-up compared to sequential execution. - Distributed computingDistributed computingDistributed computing is a field of computer science that studies distributed systems. A distributed system consists of multiple autonomous computers that communicate through a computer network. The computers interact with each other in order to achieve a common goal...
– 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
- Relational databases – the set theoreticSet theorySet theory is the branch of mathematics that studies sets, which are collections of objects. Although any type of object can be collected into a set, set theory is applied most often to objects that are relevant to mathematics...
and algorithmic foundation of databases. - Data miningData miningData mining , a relatively young and interdisciplinary field of computer science is the process of discovering new patterns from large data sets involving methods at the intersection of artificial intelligence, machine learning, statistics and database systems...
– Study of algorithms for searching and processing information in documents and databases; closely related to information retrievalInformation retrievalInformation retrieval is the area of study concerned with searching for documents, for information within documents, and for metadata about documents, as well as that of searching structured storage, relational databases, and the World Wide Web...
.
Programming languages and compilers
- Compiler theory – Theory of compilerCompilerA compiler is a computer program that transforms source code written in a programming language into another computer language...
design, based on Automata theoryAutomata theoryIn theoretical computer science, automata theory is the study of abstract machines and the computational problems that can be solved using these machines. These abstract machines are called automata...
. - Programming language pragmaticsProgramming languageA programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....
– Taxonomy of programming languages, their strength and weaknesses. Various programming paradigms, such as object-oriented programmingObject-oriented programmingObject-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...
. - Programming language theoryProgramming language theoryProgramming 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...
- Formal semanticsFormal semantics of programming languagesIn programming language theory, semantics is the field concerned with the rigorous mathematical study of the meaning of programming languages and models of computation...
– rigorous mathematical study of the meaning of programs. - Type theoryType theoryIn mathematics, logic and computer science, type theory is any of several formal systems that can serve as alternatives to naive set theory, or the study of such formalisms in general...
– Formal analysis of the types of data, and the use of these types to understand properties of programs — especially program safety.
Scientific computing
- Computational scienceComputational scienceComputational science is the field of study concerned with constructing mathematical models and quantitative analysis techniques and using computers to analyze and solve scientific problems...
– constructing mathematical models and quantitative analysisNumerical analysisNumerical analysis is the study of algorithms that use numerical approximation for the problems of mathematical analysis ....
techniques and using computers to analyze and solve scientific problems. - Numerical analysisNumerical analysisNumerical analysis is the study of algorithms that use numerical approximation for the problems of mathematical analysis ....
– Approximate numerical solution of mathematical problems such as root-findingRoot-finding algorithmA root-finding algorithm is a numerical method, or algorithm, for finding a value x such that f = 0, for a given function f. Such an x is called a root of the function f....
, integrationNumerical integrationIn numerical analysis, numerical integration constitutes a broad family of algorithms for calculating the numerical value of a definite integral, and by extension, the term is also sometimes used to describe the numerical solution of differential equations. This article focuses on calculation of...
, the solution of ordinary differential equationsNumerical ordinary differential equationsNumerical ordinary differential equations is the part of numerical analysis which studies the numerical solution of ordinary differential equations...
; the approximation of special functionsSpecial functionsSpecial functions are particular mathematical functions which have more or less established names and notations due to their importance in mathematical analysis, functional analysis, physics, or other applications....
. - Symbolic computationSymbolic computationSymbolic computation or algebraic computation, relates to the use of machines, such as computers, to manipulate mathematical equations and expressions in symbolic form, as opposed to manipulating the approximations of specific numerical quantities represented by those symbols...
– Manipulation and solution of expressions in symbolic form, also known as Computer algebra. - Computational physicsComputational physicsComputational physics is the study and implementation of numerical algorithms to solve problems in physics for which a quantitative theory already exists...
– Numerical simulations of large non-analytic systems - Computational chemistryComputational chemistryComputational chemistry is a branch of chemistry that uses principles of computer science to assist in solving chemical problems. It uses the results of theoretical chemistry, incorporated into efficient computer programs, to calculate the structures and properties of molecules and solids...
– Computational modelling of theoretical chemistry in order to determine chemical structures and properties - BioinformaticsBioinformaticsBioinformatics is the application of computer science and information technology to the field of biology and medicine. Bioinformatics deals with algorithms, databases and information systems, web technologies, artificial intelligence and soft computing, information and computation theory, software...
– The use of computer science to maintain, analyse, store biological dataBiological dataBiological data are data or measurements collected from biological sources, which are often stored or exchanged in a digital form. Biological data are commonly stored in files or databases...
and to assist in solving biological problems such as Protein foldingProtein foldingProtein folding is the process by which a protein structure assumes its functional shape or conformation. It is the physical process by which a polypeptide folds into its characteristic and functional three-dimensional structure from random coil....
, function prediction and Phylogeny. - Computational neuroscienceComputational neuroscienceComputational neuroscience is the study of brain function in terms of the information processing properties of the structures that make up the nervous system...
– Computational modelling of neurophysiologyNeurophysiologyNeurophysiology is a part of physiology. Neurophysiology is the study of nervous system function...
.
Software engineering
- Formal methodsFormal methodsIn computer science and software engineering, formal methods are a particular kind of mathematically-based techniques for the specification, development and verification of software and hardware systems...
– Mathematical approaches for describing and reasoning about software designs. - Software engineeringSoftware engineeringSoftware Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...
– The principles and practice of designing, developing, and testing programs, as well as proper engineering practices. - Reverse engineeringReverse engineeringReverse engineering is the process of discovering the technological principles of a device, object, or system through analysis of its structure, function, and operation...
– The application of the scientific method to the understanding of arbitrary existing software - Algorithm designAlgorithm designAlgorithm design is a specific method to create a mathematical process in solving problems. Applied algorithm design is algorithm engineering....
– Using ideas from algorithm theory to creatively design solutions to real tasks - Computer programmingComputer programmingComputer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...
– The practice of using a programming language to implement algorithms
Theory of computation
- Automata theoryAutomata theoryIn theoretical computer science, automata theory is the study of abstract machines and the computational problems that can be solved using these machines. These abstract machines are called automata...
– Different logical structures for solving problems. - Computability theoryComputability theory (computer science)Computability is the ability to solve a problem in an effective manner. It is a key topic of the field of computability theory within mathematical logic and the theory of computation within computer science...
– What is calculable with the current models of computers. Proofs developed by Alan TuringAlan TuringAlan Mathison Turing, OBE, FRS , was an English mathematician, logician, cryptanalyst, and computer scientist. He was highly influential in the development of computer science, providing a formalisation of the concepts of "algorithm" and "computation" with the Turing machine, which played a...
and others provide insight into the possibilities of what may be computed and what may not. - Computational complexity theoryComputational complexity theoryComputational complexity theory is a branch of the theory of computation in theoretical computer science and mathematics that focuses on classifying computational problems according to their inherent difficulty, and relating those classes to each other...
– Fundamental bounds (especially time and storage space) on classes of computations. - Quantum computing theory – Explores computational models involving quantum superpositionQuantum superpositionQuantum superposition is a fundamental principle of quantum mechanics. It holds that a physical system exists in all its particular, theoretically possible states simultaneously; but, when measured, it gives a result corresponding to only one of the possible configurations.Mathematically, it...
of bits.
Vocations
- ProgrammerProgrammerA programmer, computer programmer or coder is someone who writes computer software. The term computer programmer can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software. One who practices or professes a formal approach to...
- Software architectSoftware architectSoftware architect is a general term with many accepted definitions, which refers to a broad range of roles. Generally accepted terminology and certifications began appearing in connection with this role near the beginning of the 21st century.-History:...
- Software developerSoftware developerA software developer is a person concerned with facets of the software development process. Their work includes researching, designing, developing, and testing software. A software developer may take part in design, computer programming, or software project management...
- Software tester
- Software engineerSoftware engineerA software engineer is an engineer who applies the principles of software engineering to the design, development, testing, and evaluation of the software and systems that make computers or anything containing software, such as computer chips, work.- Overview :...
Data and data structures
- Associative arrayAssociative arrayIn computer science, an associative array is an abstract data type composed of a collection of pairs, such that each possible key appears at most once in the collection....
- Array
- Data structureData structureIn computer science, a data structure is a particular way of storing and organizing data in a computer so that it can be used efficiently.Different kinds of data structures are suited to different kinds of applications, and some are highly specialized to specific tasks...
- Data type
- Database
- Hash tableHash tableIn computer science, a hash table or hash map is a data structure that uses a hash function to map identifying values, known as keys , to their associated values . Thus, a hash table implements an associative array...
- List
- Matrix (computer science)
- StringString (computer science)In formal languages, which are used in mathematical logic and theoretical computer science, a string is a finite sequence of symbols that are chosen from a set or alphabet....
- TreeTree (data structure)In computer science, a tree is a widely-used data structure that emulates a hierarchical tree structure with a set of linked nodes.Mathematically, it is an ordered directed tree, more specifically an arborescence: an acyclic connected graph where each node has zero or more children nodes and at...
Other
- AbstractionAbstraction (computer science)In computer science, abstraction is the process by which data and programs are defined with a representation similar to its pictorial meaning as rooted in the more complex realm of human life and language with their higher need of summarization and categorization , while hiding away the...
- Big O notationBig O notationIn mathematics, big O notation is used to describe the limiting behavior of a function when the argument tends towards a particular value or infinity, usually in terms of simpler functions. It is a member of a larger family of notations that is called Landau notation, Bachmann-Landau notation, or...
- ClosureClosure (computer science)In computer science, a closure is a function together with a referencing environment for the non-local variables of that function. A closure allows a function to access variables outside its typical scope. Such a function is said to be "closed over" its free variables...
- CompilerCompilerA compiler is a computer program that transforms source code written in a programming language into another computer language...
Object oriented programming
- Object oriented programming
- ClassClass (computer science)In object-oriented programming, a class is a construct that is used as a blueprint to create instances of itself – referred to as class instances, class objects, instance objects or simply objects. A class defines constituent members which enable these class instances to have state and behavior...
- InheritanceInheritance (computer science)In object-oriented programming , inheritance is a way to reuse code of existing objects, establish a subtype from an existing object, or both, depending upon programming language support...
- ObjectObject (computer science)In computer science, an object is any entity that can be manipulated by the commands of a programming language, such as a value, variable, function, or data structure...
External links
- Directory of free university lectures in Computer Science
- Collection of Computer Science Bibliographies
- Photographs of computer scientists (Bertrand MeyerBertrand MeyerBertrand Meyer is an academic, author, and consultant in the field of computer languages. He created the Eiffel programming language.-Education and academic career:...
's gallery)
Webcasts