What is computer science?Edit
Computer science can be described as all of the following:
Algorithms and data structuresEdit
- Algorithms – Sequential and parallel computational procedures for solving a wide range of problems.
- Data structures – The organization and manipulation of data.
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 analyse 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 behaviour of robots.
Communication and securityEdit
- Computer architecture – The design, organization, optimization and verification of a computer system, mostly about CPUs and Memory subsystem (and the bus connecting them).
- Operating systems – Systems for managing computer programs and providing the basis of a usable system.
- 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 systemsEdit
- 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 multiple 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.
Outline of databases
Programming languages and compilersEdit
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 computationEdit
Data and data structuresEdit
- Outline of computer science at Curlie
- ACM report on a recommended computer science curriculum (2008)
- Directory of free university lectures in Computer Science
- Collection of Computer Science Bibliographies
- Photographs of computer scientists (Bertrand Meyer's gallery)