Computer science
Encyclopedia
Computer science or computing science (abbreviated CS) is the study of the theoretical foundations of information
and computation
and of practical techniques for their implementation and application in computer systems. Computer scientist
s invent algorithm
ic processes that create, describe, and transform information and formulate suitable abstraction
s to design and model complex system
s.
Computer science has many subfields; some, such as computational complexity theory
, study the fundamental properties of computational problem
s, while others, such as computer graphics
, emphasize the computation of specific results. Still others focus on the challenges in implementing computations. For example, programming language theory
studies approaches to describe computations, while computer programming
applies specific programming language
s to solve specific computational problems, and humancomputer interaction focuses on the challenges in making computers and computations useful, usable, and universally accessible to humans.
The general public sometimes confuses computer scientists with other computer professional
s having careers in information technology
, or think that computer science relates to their own experience with computers, which typically involves activities such as gaming, webbrowsing, and wordprocessing. However, the focus of computer science is more on understanding the properties of the programs used to implement software such as games and webbrowsers, and using that understanding to create new programs or improve existing ones.
, have existed since antiquity. Wilhelm Schickard
designed the first mechanical calculator in 1623, but did not complete its construction. Blaise Pascal
designed and constructed the first working mechanical calculator, the Pascaline
, in 1642. Charles Babbage
designed a difference engine
and then a generalpurpose Analytical Engine
in Victorian
times, for which Ada Lovelace
wrote a manual. Because of this work she is regarded today as the world's first programmer
. Around 1900, punched card machines
were introduced.
During the 1940s, as newer and more powerful computing
machines were developed, the term computer came to refer to the machines rather than their human predecessors. As it became clear that computers could be used for more than just mathematical calculations, the field of computer science broadened to study computation
in general. Computer science began to be established as a distinct academic discipline in the 1950s and early 1960s. The world's first computer science degree program, the Cambridge Diploma in Computer Science, began at the University of Cambridge
Computer Laboratory in 1953. The first computer science degree program in the United States was formed at Purdue University
in 1962. Since practical computers became available, many applications of computing have become distinct areas of study in their own right.
Although many initially believed it was impossible that computers themselves could actually be a scientific field of study, in the late fifties it gradually became accepted among the greater academic population. It is the now wellknown IBM
brand that formed part of the computer science revolution during this time. IBM (short for International Business Machines) released the IBM 704 and later the IBM 709 computers, which were widely used during the exploration period of such devices. "Still, working with the IBM [computer] was frustrating...if you had misplaced as much as one letter in one instruction, the program would crash, and you would have to start the whole process over again". During the late 1950s, the computer science discipline was very much in its developmental stages, and such issues were commonplace.
Time has seen significant improvements in the usability and effectiveness of computer science technology. Modern society has seen a significant shift from computers being used solely by experts or professionals to a more widespread user base. Initially, computers were quite costly, and for their mosteffective use, some degree of human aid was needed, in part by professional computer operators. However, as computers became widespread and far more affordable, less human assistance was needed, although residues of the original assistance still remained.
and society
. These include:
argued that those paradigms are science, technology, and mathematics. Peter Denning
's working group argued that they are theory, abstraction (modeling), and design. It has also been argued that they are the "rationalist paradigm" (which treats computer science as branch of mathematics, which is prevalent in theoretical computer science, and mainly employs deductive reasoning
), the "technocratic paradigm" (which might be found in engineering
approaches, most prominently in software engineering), and the "scientific paradigm" (which approaches computerrelated artifacts from the empirical perspective of natural science
s, and identifiable in some branches of artificial intelligence.
George Forsythe
in 1961. Despite its name, a significant amount of computer science does not involve the study of computers themselves. Because of this, several alternative names have been proposed. Certain departments of major universities prefer the term computing science, to emphasize precisely that difference. Danish scientist Peter Naur
suggested the term datalogy, to reflect the fact that the scientific discipline revolves around data and data treatment, while not necessarily involving computers. The first scientific institution to use the term was the Department of Datalogy at the University of Copenhagen, founded in 1969, with Peter Naur being the first professor in datalogy. The term is used mainly in the Scandinavian countries. Also, in the early days of computing, a number of terms for the practitioners of the field of computing were suggested in the Communications of the ACM – turingineer, turologist, flowchartsman, applied metamathematician, and applied epistemologist. Three months later in the same journal, comptologist was suggested, followed next year by hypologist. The term computics has also been suggested. In continental Europe, terms derived from "information" and "automatic" are often used, e.g. informatique (French), Informatik (German), Informatica (Spain, Italy) or informatika (Slavic languages
) are also used.
Renowned computer scientist Edsger Dijkstra once stated: "Computer science is no more about computers than astronomy is about telescopes." The design and deployment of computers and computer systems is generally considered the province of disciplines other than computer science. For example, the study of computer hardware
is usually considered part of computer engineering
, while the study of commercial computer systems and their deployment is often called information technology
or information systems
. However, there has been much crossfertilization of ideas between the various computerrelated disciplines. Computer science research also often intersects other disciplines, such as philosophy
, cognitive science
, linguistics
, mathematics
, physics
, statistics
, and logic
.
Computer science is considered by some to have a much closer relationship with mathematics than many scientific disciplines, with some observers saying that computing is a mathematical science. Early computer science was strongly influenced by the work of mathematicians such as Kurt Gödel
and Alan Turing
, and there continues to be a useful interchange of ideas between the two fields in areas such as mathematical logic
, category theory
, domain theory
, and algebra
.
The relationship between computer science and software engineering
is a contentious issue, which is further muddied by disputes over what the term "software engineering" means, and how computer science is defined. David Parnas
, taking a cue from the relationship between other engineering and science disciplines, has claimed that the principal focus of computer science is studying the properties of computation in general, while the principal focus of software engineering is the design of specific computations to achieve practical goals, making the two separate but complementary disciplines.
The academic, political, and funding aspects of computer science tend to depend on whether a department formed with a mathematical emphasis or with an engineering emphasis. Computer science departments with a mathematics emphasis and with a numerical orientation consider alignment with computational science
. Both types of departments tend to make efforts to bridge the field educationally if not across all research.
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
(IEEECS) – 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, computerhuman interaction, computer graphics, operating systems, and numerical and symbolic computation as being important areas of computer science.
encompasses both the classical theory of computation and a wide range of other topics that focus on the more abstract, logical, and mathematical aspects of computing.
, the fundamental question underlying computer science is, "What can be (efficiently) automated?" The study of the theory of computation
is focused on answering fundamental questions about what can be computed and what amount of resources are required to perform those computations. In an effort to answer the first question, computability theory
examines which computational problems are solvable on various theoretical models of computation. The second question is addressed by computational complexity theory
, which studies the time and space costs associated with different approaches to solving a multitude of computational problems.
The famous "P=NP?" problem, one of the Millennium Prize Problems
, is an open problem in the theory of computation.
fundamental limits on signal processing operations such as compressing data and on reliably storing and communicating data.
Coding theory is the study of the properties of codes and their fitness for a specific application. Codes are used for data compression, cryptography, errorcorrection and more recently also for network coding. Codes are studied for the purpose of designing efficient and reliable data transmission methods.
s and their individual features. It falls within the discipline of computer science, both depending on and affecting mathematics
, software engineering
and linguistics
. It is a wellrecognized branch of computer science, and an active research area, with results published in numerous journals
dedicated to PLT, as well as in general computer science and engineering publications.
, development and verification
of software and hardware
systems. The use of formal methods for software and hardware design is motivated by the expectation that, as in other engineering disciplines, performing appropriate mathematical analysis can contribute to the reliability and robustness of a design. However, the high cost of using formal methods means that they are usually only used in the development of highintegrity systems, where safety
or security
is of utmost importance. Formal methods are best described as the application of a fairly broad variety of theoretical computer science
fundamentals, in particular logic calculi, formal language
s, automata
theory, and program semantics, but also type systems and algebraic data types to problems in software and hardware specification and verification.
model. A distributed system extends the idea of concurrency onto multiple computers connected through a network. Computers within the same distributed system have their own private memory, and information is often exchanged amongst themselves to achieve a common goal.
and in the Dartmouth Conference
(1956), artificial intelligence (AI) research has been necessarily crossdisciplinary, drawing on areas of expertise such as applied mathematics
, symbolic logic
, semiotics
, electrical engineering
, philosophy of mind
, neurophysiology
, and social intelligence
. AI is associated in the popular mind with robotic development
, but the main field of practical application has been as an embedded component in areas of software development
which require computational understanding and modeling such as finance and economics, data mining and the physical sciences. The startingpoint in the late 1940s was Alan Turing
's question "Can computers think?", and the question remains effectively unanswered although the "Turing Test
" is still used to assess computer output on the scale of human intelligence. But the automation of evaluative and predictive tasks has been increasingly successful as a substitute for human monitoring and intervention in domains of computer application involving complex realworld data.
, image processing
, and computational geometry
, and are heavily applied in the fields of special effects and video games.
(or scientific computing) is the field of study concerned with constructing mathematical model
s and quantitative analysis
techniques and using computers to analyze and solve scientific problems. In practical use, it is typically the application of computer simulation
and other forms of computation
to problems in various scientific disciplines.
Software engineering deals with the organizing and analyzing software to get the best out of them. It doesn't just deal with the creation or manufacture of new software, but its internal maintenance and arrangement.
, analysis of algorithms
, formal methods
, concurrency theory
, databases, computer graphics
, and systems analysis
, among others. They typically also teach computer programming
, but treat it as a vessel for the support of other fields of computer science rather than a central focus of highlevel study.
Other colleges and universities, as well as secondary school
s and vocational programs that teach computer science, emphasize the practice of advanced programming rather than the theory of algorithms and computation in their computer science curricula. Such curricula tend to focus on those skills that are important to workers entering the software industry. The process aspects of computer programming are often referred to as software engineering
.
While computer science professions increasingly drive the U.S. economy, computer science education is absent in most American K12 curricula. A report entitled "Running on Empty: The Failure to Teach K12 Computer Science in the Digital Age" was released in October 2010 by Association for Computing Machinery (ACM) and Computer Science Teachers Association (CSTA), and revealed that only 14 states have adopted significant education standards for high school computer science. The report also found that only nine states count high school computer science courses as a core academic subject in their graduation requirements. In tandem with "Running on Empty," a new, nonpartisan advocacy coalitionComputing in the Core (CinC)was founded to influence federal and state policy, such as the Computer Science Education Act, which calls for grants to states to develop plans for improving computer science education and supporting computer science teachers.
Within the United States a gender gap in computer science education has been observed as well. Research conducted by the WGBH Educational Foundation and the Association for Computing Machinery (ACM)
revealed that more than twice as many high school boys considered computer science to be a “very good” or “good” college major than high school girls. In addition, the high school Advanced Placement (AP) exam for computer science has displayed a disparity in gender. Compared to other AP subjects it has the lowest number of female participants, with a composition of about 15 percent women. This gender gap in computer science is further witnessed at the college level, where 31 percent of undergraduate computer science degrees are earned by women and only 8 percent of computer science faculty consists of women.
Selected papers
Articles
Curriculum and classification
Bibliography and academic search engines
Webcasts
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 welldefined model understood and expressed in an algorithm, protocol, network topology, etc...
and of practical techniques for their implementation and application in computer systems. Computer scientist
Computer scientist
A computer scientist is a scientist who has acquired knowledge of computer science, the study of the theoretical foundations of information and computation and their application in computer systems....
s invent algorithm
Algorithm
In mathematics and computer science, an algorithm is an effective method expressed as a finite list of welldefined instructions for calculating a function. Algorithms are used for calculation, data processing, and automated reasoning...
ic processes that create, describe, and transform information and formulate suitable abstraction
Abstraction (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...
s to design and model complex system
Complex system
A complex system is a system composed of interconnected parts that as a whole exhibit one or more properties not obvious from the properties of the individual parts....
s.
Computer science has many subfields; some, such as computational complexity theory
Computational complexity theory
Computational 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...
, study the fundamental properties of computational problem
Computational problem
In theoretical computer science, a computational problem is a mathematical object representing a collection of questions that computers might want to solve. For example, the problem of factoring...
s, while others, such as computer graphics
Computer graphics (computer science)
Computer graphics is a subfield of computer science which studies methods for digitally synthesizing and manipulating visual content. Although the term often refers to the study of threedimensional computer graphics, it also encompasses twodimensional graphics and image processing. Overview...
, emphasize the computation of specific results. Still others focus on the challenges in implementing computations. For example, programming language theory
Programming language theory
Programming 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...
studies approaches to describe computations, while computer programming
Computer programming
Computer 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...
applies specific programming language
Programming language
A 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....
s to solve specific computational problems, and humancomputer interaction focuses on the challenges in making computers and computations useful, usable, and universally accessible to humans.
The general public sometimes confuses computer scientists with other computer professional
Computer professional
A computer professional is a person working in the field of information technology. This includes:* computer programmers and software engineers* computer scientists* computer systems analyst* computer technicians* database administrator...
s having careers in information technology
Information technology
Information technology is the acquisition, processing, storage and dissemination of vocal, pictorial, textual and numerical information by a microelectronicsbased combination of computing and telecommunications...
, or think that computer science relates to their own experience with computers, which typically involves activities such as gaming, webbrowsing, and wordprocessing. However, the focus of computer science is more on understanding the properties of the programs used to implement software such as games and webbrowsers, and using that understanding to create new programs or improve existing ones.
History
The earliest foundations of what would become computer science predate the invention of the modern digital computer. Machines for calculating fixed numerical tasks, such as the abacusAbacus
The abacus, also called a counting frame, is a calculating tool used primarily in parts of Asia for performing arithmetic processes. Today, abaci are often constructed as a bamboo frame with beads sliding on wires, but originally they were beans or stones moved in grooves in sand or on tablets of...
, have existed since antiquity. Wilhelm Schickard
Wilhelm Schickard
Wilhelm Schickard was a German polymath who designed a calculating machine in 1623, twenty years before the Pascaline of Blaise Pascal. Unfortunately a fire destroyed the machine as it was being built in 1624 and Schickard decided to abandon his project...
designed the first mechanical calculator in 1623, but did not complete its construction. Blaise Pascal
Blaise Pascal
Blaise Pascal , was a French mathematician, physicist, inventor, writer and Catholic philosopher. He was a child prodigy who was educated by his father, a tax collector in Rouen...
designed and constructed the first working mechanical calculator, the Pascaline
Pascal's calculator
Blaise Pascal invented the mechanical calculator in 1642. He conceived it while trying to help his father who had been assigned the task of reorganizing the tax revenues of the French province of HauteNormandie ; first called Arithmetic Machine, Pascal's Calculator and later Pascaline, it could...
, in 1642. Charles Babbage
Charles Babbage
Charles Babbage, FRS was an English mathematician, philosopher, inventor and mechanical engineer who originated the concept of a programmable computer...
designed a difference engine
Difference engine
A difference engine is an automatic, mechanical calculator designed to tabulate polynomial functions. Both logarithmic and trigonometric functions can be approximated by polynomials, so a difference engine can compute many useful sets of numbers.History:...
and then a generalpurpose Analytical Engine
Analytical engine
The Analytical Engine was a proposed mechanical generalpurpose computer designed by English mathematician Charles Babbage. It was first described in 1837 as the successor to Babbage's difference engine, a design for a mechanical calculator...
in Victorian
Victorian era
The Victorian era of British history was the period of Queen Victoria's reign from 20 June 1837 until her death on 22 January 1901. It was a long period of peace, prosperity, refined sensibilities and national selfconfidence...
times, for which Ada Lovelace
Ada Lovelace
Augusta Ada King, Countess of Lovelace , born Augusta Ada Byron, was an English writer chiefly known for her work on Charles Babbage's early mechanical generalpurpose computer, the analytical engine...
wrote a manual. Because of this work she is regarded today as the world's first programmer
Programmer
A 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...
. Around 1900, punched card machines
Unit record equipment
Before the advent of electronic computers, data processing was performed using electromechanical devices called unit record equipment, electric accounting machines or tabulating machines. Unit record machines were as ubiquitous in industry and government in the first half of the twentieth century...
were introduced.
During the 1940s, as newer and more powerful computing
Computing
Computing is usually defined as the activity of using and improving computer hardware and software. It is the computerspecific part of information technology...
machines were developed, the term computer came to refer to the machines rather than their human predecessors. As it became clear that computers could be used for more than just mathematical calculations, the field of computer science broadened to study 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 welldefined model understood and expressed in an algorithm, protocol, network topology, etc...
in general. Computer science began to be established as a distinct academic discipline in the 1950s and early 1960s. The world's first computer science degree program, the Cambridge Diploma in Computer Science, began at the University of Cambridge
University of Cambridge
The University of Cambridge is a public research university located in Cambridge, United Kingdom. It is the secondoldest university in both the United Kingdom and the Englishspeaking world , and the seventholdest globally...
Computer Laboratory in 1953. The first computer science degree program in the United States was formed at Purdue University
Purdue University
Purdue University, located in West Lafayette, Indiana, U.S., is the flagship university of the sixcampus Purdue University system. Purdue was founded on May 6, 1869, as a landgrant university when the Indiana General Assembly, taking advantage of the Morrill Act, accepted a donation of land and...
in 1962. Since practical computers became available, many applications of computing have become distinct areas of study in their own right.
Although many initially believed it was impossible that computers themselves could actually be a scientific field of study, in the late fifties it gradually became accepted among the greater academic population. It is the now wellknown IBM
IBM
International Business Machines Corporation or IBM is an American multinational technology and consulting corporation headquartered in Armonk, New York, United States. IBM manufactures and sells computer hardware and software, and it offers infrastructure, hosting and consulting services in areas...
brand that formed part of the computer science revolution during this time. IBM (short for International Business Machines) released the IBM 704 and later the IBM 709 computers, which were widely used during the exploration period of such devices. "Still, working with the IBM [computer] was frustrating...if you had misplaced as much as one letter in one instruction, the program would crash, and you would have to start the whole process over again". During the late 1950s, the computer science discipline was very much in its developmental stages, and such issues were commonplace.
Time has seen significant improvements in the usability and effectiveness of computer science technology. Modern society has seen a significant shift from computers being used solely by experts or professionals to a more widespread user base. Initially, computers were quite costly, and for their mosteffective use, some degree of human aid was needed, in part by professional computer operators. However, as computers became widespread and far more affordable, less human assistance was needed, although residues of the original assistance still remained.
Major achievements
Despite its short history as a formal academic discipline, computer science has made a number of fundamental contributions to scienceScience
Science is a systematic enterprise that builds and organizes knowledge in the form of testable explanations and predictions about the universe...
and society
Society
A society, or a human society, is a group of people related to each other through persistent relations, or a large social grouping sharing the same geographical or virtual territory, subject to the same political authority and dominant cultural expectations...
. These include:
 The start of the "digital revolutionDigital RevolutionThe Digital Revolution is the change from analog mechanical and electronic technology to digital technology that has taken place since c. 1980 and continues to the present day. Implicitly, the term also refers to the sweeping changes brought about by digital computing and communication technology...
," which includes the current Information AgeInformation AgeThe Information Age, also commonly known as the Computer Age or Digital Age, is an idea that the current age will be characterized by the ability of individuals to transfer information freely, and to have instant access to knowledge that would have been difficult or impossible to find previously...
and the InternetInternetThe Internet is a global system of interconnected computer networks that use the standard Internet protocol suite to serve billions of users worldwide...
.  A formal definition of computationComputationComputation is defined as any type of calculation. Also defined as use of computer technology in Information processing.Computation is a process following a welldefined model understood and expressed in an algorithm, protocol, network topology, etc...
and computability, and proof that there are computationally unsolvableUndecidable problemIn computability theory and computational complexity theory, an undecidable problem is a decision problem for which it is impossible to construct a single algorithm that always leads to a correct yesorno answer....
and intractable problems.  The concept of a programming languageProgramming 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....
, a tool for the precise expression of methodological information at various levels of abstraction.  In cryptographyCryptographyCryptography is the practice and study of techniques for secure communication in the presence of third parties...
, breaking the Enigma machineCryptanalysis of the EnigmaCryptanalysis of the Enigma enabled the western Allies in World War II to read substantial amounts of secret Morsecoded radio communications of the Axis powers that had been enciphered using Enigma machines. This yielded military intelligence which, along with that from other decrypted Axis radio...
was an important factor contributing to the Allied victory in World War II.  Scientific computing enabled practical evaluation of processes and situations of great complexity, as well as experimentation entirely by software. It also enabled advanced study of the mind, and mapping of the human genome became possible with the Human Genome ProjectHuman Genome ProjectThe Human Genome Project is an international scientific research project with a primary goal of determining the sequence of chemical base pairs which make up DNA, and of identifying and mapping the approximately 20,000–25,000 genes of the human genome from both a physical and functional...
. 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...
projects such as Folding@homeFolding@homeFolding@home is a distributed computing project designed to use spare processing power on personal computers to perform simulations of diseaserelevant protein folding and other molecular dynamics, and to improve on the methods of doing so...
explore 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 threedimensional structure from random coil....
.  Algorithmic tradingAlgorithmic tradingIn electronic financial markets, algorithmic trading or automated trading, also known as algo trading, blackbox trading or robo trading, is the use of electronic platforms for entering trading orders with an algorithm deciding on aspects of the order such as the timing, price, or quantity of the...
has increased the efficiency and liquidityMarket liquidityIn business, economics or investment, market liquidity is an asset's ability to be sold without causing a significant movement in the price and with minimum loss of value...
of financial markets by using 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...
, 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...
, and other statisticalStatisticsStatistics is the study of the collection, organization, analysis, and interpretation of data. It deals with all aspects of this, including the planning of data collection in terms of the design of surveys and experiments....
and numericalNumerical analysisNumerical analysis is the study of algorithms that use numerical approximation for the problems of mathematical analysis ....
techniques on a large scale.  Image synthesis, including video by computing individual video frames.
 Human language processing, including practical speechtotext conversion and automated translation of languages
 SimulationSimulationSimulation is the imitation of some real thing available, state of affairs, or process. The act of simulating something generally entails representing certain key characteristics or behaviours of a selected physical or abstract system....
of various processes, including computational fluid dynamics, physical, electrical, and electronic systems and circuits, as well as societies and social situations (notably war games) along with their habitats, among many others. Modern computers enable optimization of such designs as complete aircraft. Notable in electrical and electronic circuit design are SPICESPICESPICE is a generalpurpose, open source analog electronic circuit simulator.It is a powerful program that is used in integrated circuit and boardlevel design to check the integrity of circuit designs and to predict circuit behavior. Introduction :Unlike boardlevel designs composed of discrete...
as well as software for physical realization of new (or modified) designs. The latter includes essential design software for integrated circuits.
Philosophy
A number of computer scientists have argued for the distinction of three separate paradigms in computer science. Peter WegnerPeter Wegner
Peter Wegner is an American computer scientist who has made significant contributions to both the theory of objectoriented programming during 80's and to the relevance of ChurchTuring thesis for empirical aspects of computer science during 90's and present. The seminal work for his previous...
argued that those paradigms are science, technology, and mathematics. Peter Denning
Peter J. Denning
Peter J. Denning is an American computer scientist, and prolific writer. He is best known for pioneering work in virtual memory, especially for inventing the workingset model for program behavior, which defeated thrashing in operating systems and became the reference standard for all memory...
's working group argued that they are theory, abstraction (modeling), and design. It has also been argued that they are the "rationalist paradigm" (which treats computer science as branch of mathematics, which is prevalent in theoretical computer science, and mainly employs deductive reasoning
Deductive reasoning
Deductive reasoning, also called deductive logic, is reasoning which constructs or evaluates deductive arguments. Deductive arguments are attempts to show that a conclusion necessarily follows from a set of premises or hypothesis...
), the "technocratic paradigm" (which might be found in engineering
Engineering
Engineering is the discipline, art, skill and profession of acquiring and applying scientific, mathematical, economic, social, and practical knowledge, in order to design and build structures, machines, devices, systems, materials and processes that safely realize improvements to the lives of...
approaches, most prominently in software engineering), and the "scientific paradigm" (which approaches computerrelated artifacts from the empirical perspective of natural science
Natural science
The natural sciences are branches of science that seek to elucidate the rules that govern the natural world by using empirical and scientific methods...
s, and identifiable in some branches of artificial intelligence.
Name of the field
The term "computer science" was first coined by the numerical analystNumerical analysis
Numerical analysis is the study of algorithms that use numerical approximation for the problems of mathematical analysis ....
George Forsythe
George Forsythe
George Elmer Forsythe was the founder and head of Stanford University's Computer Science Department. He served as professor and chairman of the department from 1965 until his death...
in 1961. Despite its name, a significant amount of computer science does not involve the study of computers themselves. Because of this, several alternative names have been proposed. Certain departments of major universities prefer the term computing science, to emphasize precisely that difference. Danish scientist Peter Naur
Peter Naur
Peter Naur is a Danish pioneer in computer science and Turing award winner. His last name is the N in the BNF notation , used in the description of the syntax for most programming languages...
suggested the term datalogy, to reflect the fact that the scientific discipline revolves around data and data treatment, while not necessarily involving computers. The first scientific institution to use the term was the Department of Datalogy at the University of Copenhagen, founded in 1969, with Peter Naur being the first professor in datalogy. The term is used mainly in the Scandinavian countries. Also, in the early days of computing, a number of terms for the practitioners of the field of computing were suggested in the Communications of the ACM – turingineer, turologist, flowchartsman, applied metamathematician, and applied epistemologist. Three months later in the same journal, comptologist was suggested, followed next year by hypologist. The term computics has also been suggested. In continental Europe, terms derived from "information" and "automatic" are often used, e.g. informatique (French), Informatik (German), Informatica (Spain, Italy) or informatika (Slavic languages
Slavic languages
The Slavic languages , a group of closely related languages of the Slavic peoples and a subgroup of IndoEuropean languages, have speakers in most of Eastern Europe, in much of the Balkans, in parts of Central Europe, and in the northern part of Asia.Branches:Scholars traditionally divide Slavic...
) are also used.
Renowned computer scientist Edsger Dijkstra once stated: "Computer science is no more about computers than astronomy is about telescopes." The design and deployment of computers and computer systems is generally considered the province of disciplines other than computer science. For example, the study of computer hardware
Computer hardware
Personal computer hardware are component devices which are typically installed into or peripheral to a computer case to create a personal computer upon which system software is installed including a firmware interface such as a BIOS and an operating system which supports application software that...
is usually considered part of computer engineering
Computer engineering
Computer engineering, also called computer systems engineering, is a discipline that integrates several fields of electrical engineering and computer science required to develop computer systems. Computer engineers usually have training in electronic engineering, software design, and...
, while the study of commercial computer systems and their deployment is often called information technology
Information technology
Information technology is the acquisition, processing, storage and dissemination of vocal, pictorial, textual and numerical information by a microelectronicsbased combination of computing and telecommunications...
or information systems
Information systems
Information Systems is an academic/professional discipline bridging the business field and the welldefined computer science field that is evolving toward a new scientific area of study...
. However, there has been much crossfertilization of ideas between the various computerrelated disciplines. Computer science research also often intersects other disciplines, such as philosophy
Philosophy
Philosophy is the study of general and fundamental problems, such as those connected with existence, knowledge, values, reason, mind, and language. Philosophy is distinguished from other ways of addressing such problems by its critical, generally systematic approach and its reliance on rational...
, cognitive science
Cognitive science
Cognitive science is the interdisciplinary scientific study of mind and its processes. It examines what cognition is, what it does and how it works. It includes research on how information is processed , represented, and transformed in behaviour, nervous system or machine...
, linguistics
Computational linguistics
Computational linguistics is an interdisciplinary field dealing with the statistical or rulebased modeling of natural language from a computational perspective....
, mathematics
Mathematics
Mathematics is the study of quantity, space, structure, and change. Mathematicians seek out patterns and formulate new conjectures. Mathematicians resolve the truth or falsity of conjectures by mathematical proofs, which are arguments sufficient to convince other mathematicians of their validity...
, physics
Physics
Physics is a natural science that involves the study of matter and its motion through spacetime, along with related concepts such as energy and force. More broadly, it is the general analysis of nature, conducted in order to understand how the universe behaves.Physics is one of the oldest academic...
, statistics
Computational statistics
Computational statistics, or statistical computing, is the interface between statistics and computer science. It is the area of computational science specific to the mathematical science of statistics....
, and logic
Logic
In philosophy, Logic is the formal systematic study of the principles of valid inference and correct reasoning. Logic is used in most intellectual activities, but is studied primarily in the disciplines of philosophy, mathematics, semantics, and computer science...
.
Computer science is considered by some to have a much closer relationship with mathematics than many scientific disciplines, with some observers saying that computing is a mathematical science. Early computer science was strongly influenced by the work of mathematicians such as Kurt Gödel
Kurt Gödel
Kurt Friedrich Gödel was an Austrian logician, mathematician and philosopher. Later in his life he emigrated to the United States to escape the effects of World War II. One of the most significant logicians of all time, Gödel made an immense impact upon scientific and philosophical thinking in the...
and Alan Turing
Alan Turing
Alan 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 there continues to be a useful interchange of ideas between the two fields in areas such as mathematical logic
Mathematical logic
Mathematical 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...
, category theory
Category theory
Category theory is an area of study in mathematics that examines in an abstract way the properties of particular mathematical concepts, by formalising them as collections of objects and arrows , where these collections satisfy certain basic conditions...
, domain theory
Domain theory
Domain theory is a branch of mathematics that studies special kinds of partially ordered sets commonly called domains. Consequently, domain theory can be considered as a branch of order theory. The field has major applications in computer science, where it is used to specify denotational...
, and algebra
Algebra
Algebra is the branch of mathematics concerning the study of the rules of operations and relations, and the constructions and concepts arising from them, including terms, polynomials, equations and algebraic structures...
.
The relationship between computer science and software engineering
Software engineering
Software 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...
is a contentious issue, which is further muddied by disputes over what the term "software engineering" means, and how computer science is defined. David Parnas
David Parnas
David Lorge Parnas is a Canadian early pioneer of software engineering, who developed the concept of information hiding in modular programming, which is an important element of objectoriented programming today. He is also noted for his advocacy of precise documentation. Biography :Parnas earned...
, taking a cue from the relationship between other engineering and science disciplines, has claimed that the principal focus of computer science is studying the properties of computation in general, while the principal focus of software engineering is the design of specific computations to achieve practical goals, making the two separate but complementary disciplines.
The academic, political, and funding aspects of computer science tend to depend on whether a department formed with a mathematical emphasis or with an engineering emphasis. Computer science departments with a mathematics emphasis and with a numerical orientation consider alignment with computational science
Computational science
Computational science is the field of study concerned with constructing mathematical models and quantitative analysis techniques and using computers to analyze and solve scientific problems...
. Both types of departments tend to make efforts to bridge the field educationally if not across all research.
Areas 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
CSAB (professional organization)
CSAB, Inc., formerly called the Computing Sciences Accreditation Board, Inc., is a nonprofit professional organization in the United States, focused on the quality of education in computing disciplines...
, formerly called Computing Sciences Accreditation Board – which is made up of representatives of 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...
(ACM), and the IEEE Computer Society
IEEE Computer Society
The IEEE Computer Society is a professional society of IEEE. Its purpose and scope is “to advance the theory, practice, and application of computer and information processing science and technology” and the “professional standing of its members.” The CS is the largest of 38 technical societies...
(IEEECS) – 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, computerhuman interaction, computer graphics, operating systems, and numerical and symbolic computation as being important areas of computer science.
Theoretical computer science
The broader field of theoretical computer scienceTheoretical computer science
Theoretical computer science is a division or subset of general computer science and mathematics which focuses on more abstract or mathematical aspects of computing....
encompasses both the classical theory of computation and a wide range of other topics that focus on the more abstract, logical, and mathematical aspects of computing.
Theory of computation
According to Peter J. DenningPeter J. Denning
Peter J. Denning is an American computer scientist, and prolific writer. He is best known for pioneering work in virtual memory, especially for inventing the workingset model for program behavior, which defeated thrashing in operating systems and became the reference standard for all memory...
, the fundamental question underlying computer science is, "What can be (efficiently) automated?" The study of the theory of computation
Theory of computation
In theoretical computer science, the theory of computation is the branch that deals with whether and how efficiently problems can be solved on a model of computation, using an algorithm...
is focused on answering fundamental questions about what can be computed and what amount of resources are required to perform those computations. In an effort to answer the first question, computability theory
Computability 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...
examines which computational problems are solvable on various theoretical models of computation. The second question is addressed by computational complexity theory
Computational complexity theory
Computational 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...
, which studies the time and space costs associated with different approaches to solving a multitude of computational problems.
The famous "P=NP?" problem, one of the Millennium Prize Problems
Millennium Prize Problems
The Millennium Prize Problems are seven problems in mathematics that were stated by the Clay Mathematics Institute in 2000. As of September 2011, six of the problems remain unsolved. A correct solution to any of the problems results in a US$1,000,000 prize being awarded by the institute...
, is an open problem in the theory of computation.
P = NP ?  GNITIRWTERCES  
Automata theory Automata theory In 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... 
Computability theory Computability theory Computability theory, also called recursion theory, is a branch of mathematical logic that originated in the 1930s with the study of computable functions and Turing degrees. The field has grown to include the study of generalized computability and definability... 
Computational complexity theory Computational complexity theory Computational 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... 
Cryptography Cryptography Cryptography is the practice and study of techniques for secure communication in the presence of third parties... 
Quantum computing theory Quantum computer A quantum computer is a device for computation that makes direct use of quantum mechanical phenomena, such as superposition and entanglement, to perform operations on data. Quantum computers are different from traditional computers based on transistors... 
Information and coding theory
Information theory is related to the quantification of information.This was developed by Claude E. Shannon to findfundamental limits on signal processing operations such as compressing data and on reliably storing and communicating data.
Coding theory is the study of the properties of codes and their fitness for a specific application. Codes are used for data compression, cryptography, errorcorrection and more recently also for network coding. Codes are studied for the purpose of designing efficient and reliable data transmission methods.
Algorithms and data structures
Analysis of algorithms Analysis of algorithms To analyze an algorithm is to determine the amount of resources necessary to execute it. Most algorithms are designed to work with inputs of arbitrary length... 
Algorithms  Data structures  Computational geometry Computational geometry Computational geometry is a branch of computer science devoted to the study of algorithms which can be stated in terms of geometry. Some purely geometrical problems arise out of the study of computational geometric algorithms, and such problems are also considered to be part of computational... 
Programming language theory
Programming language theory is a branch of computer science that deals with the design, implementation, analysis, characterization, and classification of programming languageProgramming language
A 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....
s and their individual features. It falls within the discipline of computer science, both depending on and affecting mathematics
Mathematics
Mathematics is the study of quantity, space, structure, and change. Mathematicians seek out patterns and formulate new conjectures. Mathematicians resolve the truth or falsity of conjectures by mathematical proofs, which are arguments sufficient to convince other mathematicians of their validity...
, software engineering
Software engineering
Software 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...
and linguistics
Linguistics
Linguistics is the scientific study of human language. Linguistics can be broadly broken into three categories or subfields of study: language form, language meaning, and language in context....
. It is a wellrecognized branch of computer science, and an active research area, with results published in numerous journals
Academic journal
An academic journal is a peerreviewed periodical in which scholarship relating to a particular academic discipline is published. Academic journals serve as forums for the introduction and presentation for scrutiny of new research, and the critique of existing research...
dedicated to PLT, as well as in general computer science and engineering publications.
Type theory Type theory In 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... 
Compiler design  Programming languages 
Formal methods
Formal methods are a particular kind of mathematicallybased techniques for the specificationFormal specification
In computer science, a formal specification is a mathematical description of software or hardware that may be used to develop an implementation. It describes what the system should do, not how the system should do it...
, development and verification
Formal verification
In the context of hardware and software systems, formal verification is the act of proving or disproving the correctness of intended algorithms underlying a system with respect to a certain formal specification or property, using formal methods of mathematics . Usage :Formal verification can be...
of software and hardware
Hardware
Hardware is a general term for equipment such as keys, locks, hinges, latches, handles, wire, chains, plumbing supplies, tools, utensils, cutlery and machine parts. Household hardware is typically sold in hardware stores....
systems. The use of formal methods for software and hardware design is motivated by the expectation that, as in other engineering disciplines, performing appropriate mathematical analysis can contribute to the reliability and robustness of a design. However, the high cost of using formal methods means that they are usually only used in the development of highintegrity systems, where safety
Safety
Safety is the state of being "safe" , the condition of being protected against physical, social, spiritual, financial, political, emotional, occupational, psychological, educational or other types or consequences of failure, damage, error, accidents, harm or any other event which could be...
or security
Security
Security is the degree of protection against danger, damage, loss, and crime. Security as a form of protection are structures and processes that provide or improve security as a condition. The Institute for Security and Open Methodologies in the OSSTMM 3 defines security as "a form of protection...
is of utmost importance. Formal methods are best described as the application of a fairly broad variety of theoretical computer science
Theoretical computer science
Theoretical computer science is a division or subset of general computer science and mathematics which focuses on more abstract or mathematical aspects of computing....
fundamentals, in particular logic calculi, formal language
Formal language
A formal language is a set of words—that is, finite strings of letters, symbols, or tokens that are defined in the language. The set from which these letters are taken is the alphabet over which the language is defined. A formal language is often defined by means of a formal grammar...
s, automata
Automata
Automata is the plural form of automaton, a selfoperating machine. It may also refer to:* "Automata", a short story by E. T. A. Hoffmann* "Automata", a hardboiled science fiction crime series by Penny Arcade...
theory, and program semantics, but also type systems and algebraic data types to problems in software and hardware specification and verification.
Concurrent, parallel and distributed systems
Concurrency is a property of systems in which several computations are executing simultaneously, and potentially interacting with each other. A number of mathematical models have been developed for general concurrent computation including Petri nets, process calculi and the Parallel Random Access MachineParallel Random Access Machine
In computer science, Parallel Random Access Machine is a shared memory abstract machine. As its name indicates, the PRAM was intended as the parallel computing analogy to the random access machine...
model. A distributed system extends the idea of concurrency onto multiple computers connected through a network. Computers within the same distributed system have their own private memory, and information is often exchanged amongst themselves to achieve a common goal.
Databases and information retrieval
A database is intended to organize, store, and retrieve large amounts of data easily. Digital databases are managed using database management systems to store, create, maintain, and search data, through database models and query languages.Artificial intelligence
This branch of computer science aims to synthesise goalorientated processes such as problemsolving, decisionmaking, environmental adaptation, learning and communication which are found in humans and animals. From its origins in cyberneticsCybernetics
Cybernetics 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 firstorder form...
and in the Dartmouth Conference
History of artificial intelligence
The history of artificial intelligence began in antiquity, with myths, stories and rumors of artificial beings endowed with intelligence or consciousness by master craftsmen; as Pamela McCorduck writes, AI began with "an ancient wish to forge the gods."...
(1956), artificial intelligence (AI) research has been necessarily crossdisciplinary, drawing on areas of expertise such as applied mathematics
Applied mathematics
Applied mathematics is a branch of mathematics that concerns itself with mathematical methods that are typically used in science, engineering, business, and industry. Thus, "applied mathematics" is a mathematical science with specialized knowledge...
, symbolic logic
Mathematical logic
Mathematical 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...
, semiotics
Semiotics
Semiotics, also called semiotic studies or semiology, is the study of signs and sign processes , indication, designation, likeness, analogy, metaphor, symbolism, signification, and communication...
, electrical engineering
Electrical engineering
Electrical engineering is a field of engineering that generally deals with the study and application of electricity, electronics and electromagnetism. The field first became an identifiable occupation in the late nineteenth century after commercialization of the electric telegraph and electrical...
, philosophy of mind
Philosophy of mind
Philosophy of mind is a branch of philosophy that studies the nature of the mind, mental events, mental functions, mental properties, consciousness and their relationship to the physical body, particularly the brain. The mindbody problem, i.e...
, neurophysiology
Neurophysiology
Neurophysiology is a part of physiology. Neurophysiology is the study of nervous system function...
, and social intelligence
Social intelligence
Social intelligence describes the exclusively human capacity to use very large brains to effectively navigate and negotiate complex social relationships and environments....
. AI is associated in the popular mind with robotic development
Robotics
Robotics is the branch of technology that deals with the design, construction, operation, structural disposition, manufacture and application of robots...
, but the main field of practical application has been as an embedded component in areas of software development
Software development
Software development is the development of a software product...
which require computational understanding and modeling such as finance and economics, data mining and the physical sciences. The startingpoint in the late 1940s was Alan Turing
Alan Turing
Alan 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...
's question "Can computers think?", and the question remains effectively unanswered although the "Turing Test
Turing test
The Turing test is a test of a machine's ability to exhibit intelligent behaviour. In Turing's original illustrative example, a human judge engages in a natural language conversation with a human and a machine designed to generate performance indistinguishable from that of a human being. All...
" is still used to assess computer output on the scale of human intelligence. But the automation of evaluative and predictive tasks has been increasingly successful as a substitute for human monitoring and intervention in domains of computer application involving complex realworld data.
Machine Learning Machine learning Machine 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... 
Computer vision Computer vision Computer vision is a field that includes methods for acquiring, processing, analysing, and understanding images and, in general, highdimensional data from the real world in order to produce numerical or symbolic information, e.g., in the forms of decisions... 
Image Processing Image processing In 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... 
Pattern Recognition Pattern recognition In machine learning, pattern recognition is the assignment of some sort of output value to a given input value , according to some specific algorithm. An example of pattern recognition is classification, which attempts to assign each input value to one of a given set of classes... 
Cognitive Science Cognitive science Cognitive science is the interdisciplinary scientific study of mind and its processes. It examines what cognition is, what it does and how it works. It includes research on how information is processed , represented, and transformed in behaviour, nervous system or machine... 
Data Mining Data mining Data 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... 
Evolutionary Computation Evolutionary computation In computer science, evolutionary computation is a subfield of artificial intelligence that involves combinatorial optimization problems.... 
Information Retrieval Information retrieval Information 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... 
Knowledge Representation Knowledge representation Knowledge representation is an area of artificial intelligence research aimed at representing knowledge in symbols to facilitate inferencing from those knowledge elements, creating new elements of knowledge... 
Natural Language Processing Natural language processing Natural language processing is a field of computer science and linguistics concerned with the interactions between computers and human languages; it began as a branch of artificial intelligence.... 
Robotics Robotics Robotics is the branch of technology that deals with the design, construction, operation, structural disposition, manufacture and application of robots... 
Computer architecture and engineering
Computer architecture, or digital computer organization, is the conceptual design and fundamental operational structure of a computer system. It focuses largely on the way by which the central processing unit performs internally and accesses addresses in memory. The field often involves disciplines of computer engineering and electrical engineering, selecting and interconnection hardware components to create computers that meet functional, performance, and cost goals.Digital logic  Microarchitecture Microarchitecture In computer engineering, microarchitecture , also called computer organization, is the way a given instruction set architecture is implemented on a processor. A given ISA may be implemented with different microarchitectures. Implementations might vary due to different goals of a given design or... 
Multiprocessing Multiprocessing Multiprocessing is the use of two or more central processing units within a single computer system. The term also refers to the ability of a system to support more than one processor and/or the ability to allocate tasks between them... 

Operating systems  Computer networks  Databases  Computer security Computer security Computer 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... 
Ubiquitous computing Ubiquitous computing Ubiquitous computing is a postdesktop model of humancomputer interaction in which information processing has been thoroughly integrated into everyday objects and activities. In the course of ordinary activities, someone "using" ubiquitous computing engages many computational devices and systems... 
Systems architecture Systems architecture A system architecture or systems architecture is the conceptual model that defines the structure, behavior, and more views of a system.An architecture description is a formal description and representation of a system, organized in a way that supports reasoning about the structure of the system... 
Compiler design  Programming languages 
Computer graphics and visualization
Computer graphics is the study of digital visual contents, and involves syntheses and manipulations of image data. The study is connected to many other fields in computer science, including computer visionComputer vision
Computer vision is a field that includes methods for acquiring, processing, analysing, and understanding images and, in general, highdimensional data from the real world in order to produce numerical or symbolic information, e.g., in the forms of decisions...
, image processing
Image processing
In 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...
, and computational geometry
Computational geometry
Computational geometry is a branch of computer science devoted to the study of algorithms which can be stated in terms of geometry. Some purely geometrical problems arise out of the study of computational geometric algorithms, and such problems are also considered to be part of computational...
, and are heavily applied in the fields of special effects and video games.
Computer security and cryptography
Computer security is a branch of computer technology, whose objective includes protection of information from unauthorized access, disruption, or modification while maintaining the accessibility and usability of the system for its intended users. Cryptography is the practice and study of hiding (encryption) and therefore deciphering (decryption) information. Modern cryptography is largely related to computer science, for many encryption and decryption algorithms are based on their computational complexity.Computational science
Computational scienceComputational science
Computational science is the field of study concerned with constructing mathematical models and quantitative analysis techniques and using computers to analyze and solve scientific problems...
(or scientific computing) is the field of study concerned with constructing mathematical model
Scientific modelling
Scientific modelling is the process of generating abstract, conceptual, graphical and/or mathematical models. Science offers a growing collection of methods, techniques and theory about all kinds of specialized scientific modelling...
s and quantitative analysis
Numerical analysis
Numerical 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. In practical use, it is typically the application of computer simulation
Computer simulation
A computer simulation, a computer model, or a computational model is a computer program, or network of computers, that attempts to simulate an abstract model of a particular system...
and other forms of 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 welldefined model understood and expressed in an algorithm, protocol, network topology, etc...
to problems in various scientific disciplines.
Numerical analysis Numerical analysis Numerical analysis is the study of algorithms that use numerical approximation for the problems of mathematical analysis .... 
Computational physics Computational physics Computational physics is the study and implementation of numerical algorithms to solve problems in physics for which a quantitative theory already exists... 
Computational chemistry Computational chemistry Computational 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... 
Bioinformatics Bioinformatics Bioinformatics 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... 
Information science
Information Retrieval Information retrieval Information 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... 
Knowledge Representation Knowledge representation Knowledge representation is an area of artificial intelligence research aimed at representing knowledge in symbols to facilitate inferencing from those knowledge elements, creating new elements of knowledge... 
Natural Language Processing Natural language processing Natural language processing is a field of computer science and linguistics concerned with the interactions between computers and human languages; it began as a branch of artificial intelligence.... 
Human–computer interaction Human–computer interaction Human–computer Interaction is the study, planning, and design of the interaction between people and computers. It is often regarded as the intersection of computer science, behavioral sciences, design and several other fields of study... 
Software engineering
Software engineering is the study of designing, implementing, and modifying software in order to ensure it is of high quality, affordable, maintainable, and fast to build. It is a systematic approach to software design, involving the application of engineering practices to software.Software engineering deals with the organizing and analyzing software to get the best out of them. It doesn't just deal with the creation or manufacture of new software, but its internal maintenance and arrangement.
Education
Some universities teach computer science as a theoretical study of computation and algorithmic reasoning. These programs often feature the theory of computationTheory of computation
In theoretical computer science, the theory of computation is the branch that deals with whether and how efficiently problems can be solved on a model of computation, using an algorithm...
, analysis of algorithms
Analysis of algorithms
To analyze an algorithm is to determine the amount of resources necessary to execute it. Most algorithms are designed to work with inputs of arbitrary length...
, formal methods
Formal methods
In computer science and software engineering, formal methods are a particular kind of mathematicallybased techniques for the specification, development and verification of software and hardware systems...
, concurrency theory
Concurrency (computer science)
In computer science, concurrency is a property of systems in which several computations are executing simultaneously, and potentially interacting with each other...
, databases, computer graphics
Computer graphics
Computer 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....
, and systems analysis
Systems analysis
Systems analysis is the study of sets of interacting entities, including computer systems analysis. This field is closely related to requirements analysis or operations research...
, among others. They typically also teach computer programming
Computer programming
Computer 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...
, but treat it as a vessel for the support of other fields of computer science rather than a central focus of highlevel study.
Other colleges and universities, as well as secondary school
Secondary school
Secondary school is a term used to describe an educational institution where the final stage of schooling, known as secondary education and usually compulsory up to a specified age, takes place...
s and vocational programs that teach computer science, emphasize the practice of advanced programming rather than the theory of algorithms and computation in their computer science curricula. Such curricula tend to focus on those skills that are important to workers entering the software industry. The process aspects of computer programming are often referred to as software engineering
Software engineering
Software 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...
.
While computer science professions increasingly drive the U.S. economy, computer science education is absent in most American K12 curricula. A report entitled "Running on Empty: The Failure to Teach K12 Computer Science in the Digital Age" was released in October 2010 by Association for Computing Machinery (ACM) and Computer Science Teachers Association (CSTA), and revealed that only 14 states have adopted significant education standards for high school computer science. The report also found that only nine states count high school computer science courses as a core academic subject in their graduation requirements. In tandem with "Running on Empty," a new, nonpartisan advocacy coalitionComputing in the Core (CinC)was founded to influence federal and state policy, such as the Computer Science Education Act, which calls for grants to states to develop plans for improving computer science education and supporting computer science teachers.
Within the United States a gender gap in computer science education has been observed as well. Research conducted by the WGBH Educational Foundation and the Association for Computing Machinery (ACM)
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...
revealed that more than twice as many high school boys considered computer science to be a “very good” or “good” college major than high school girls. In addition, the high school Advanced Placement (AP) exam for computer science has displayed a disparity in gender. Compared to other AP subjects it has the lowest number of female participants, with a composition of about 15 percent women. This gender gap in computer science is further witnessed at the college level, where 31 percent of undergraduate computer science degrees are earned by women and only 8 percent of computer science faculty consists of women.
See also
 Academic genealogy of computer scientistsAcademic genealogy of computer scientistsThe following is an academic genealogy of computer scientists and is constructed by following the pedigree of thesis advisors. France :Many French computer scientists worked at the National Institute for Research in Computer Science and Control ....
 Informatics (academic field)Informatics (academic field)Informatics is the science of information, the practice of information processing, and the engineering of information systems. Informatics studies the structure, algorithms, behavior, and interactions of natural and artificial systems that store, process, access and communicate information...
 List of academic computer science departments
 List of computer science conferences
 List of computer scientists
 List of publications in computer science
 List of pioneers in computer science
 List of software engineering topics
 List of unsolved problems in computer science
 Women in computingWomen in computingGlobal concerns about current and future roles of women in computing occupations gained more importance with the emerging information age. These concerns motivated public policy debates addressing gender equality as computer applications exerted increasing influence in society...
Further reading
Overview
 "Within more than 70 chapters, every one new or significantly revised, one can find any kind of information and references about computer science one can imagine. [...] all in all, there is absolute nothing about Computer Science that can not be found in the 2.5 kilogramencyclopaedia with its 110 survey articles [...]." (Christoph Meinel, Zentralblatt MATHZentralblatt MATHZentralblatt MATH is a service providing reviews and abstracts for articles in pure and applied mathematics, published by Springer Science+Business Media. It is a major international reviewing service which covers the entire field of mathematics...
)  "[...] this set is the most unique and possibly the most useful to the [theoretical computer science] community, in support both of teaching and research [...]. The books can be used by anyone wanting simply to gain an understanding of one of these areas, or by someone desiring to be in research in a topic, or by instructors wishing to find timely information on a subject they are teaching outside their major areas of expertise." (Rocky Ross, SIGACT News)
 "Since 1976, this has been the definitive reference work on computer, computing, and computer science. [...] Alphabetically arranged and classified into broad subject areas, the entries cover hardware, computer systems, information and data, software, the mathematics of computing, theory of computation, methodologies, applications, and computing milieu. The editors have done a commendable job of blending historical perspective and practical reference information. The encyclopedia remains essential for most public and academic library reference collections." (Joe Accardin, Northeastern Illinois Univ., Chicago)
 "Within more than 70 chapters, every one new or significantly revised, one can find any kind of information and references about computer science one can imagine. [...] all in all, there is absolute nothing about Computer Science that can not be found in the 2.5 kilogramencyclopaedia with its 110 survey articles [...]." (Christoph Meinel, Zentralblatt MATH
Selected papers

 "Covering a period from 1966 to 1993, its interest lies not only in the content of each of these papers — still timely today — but also in their being put together so that ideas expressed at different times complement each other nicely." (N. Bernard, Zentralblatt MATH)
Articles
 Peter J. Denning. Is computer science science?, Communications of the ACM, April 2005.
 Peter J. Denning, Great principles in computing curricula, Technical Symposium on Computer Science Education, 2004.
 Research evaluation for computer science, Informatics Europe report. Shorter journal version: Bertrand Meyer, Christine Choppy, Jan van Leeuwen and Jorgen Staunstrup, Research evaluation for computer science, in Communications of the ACMCommunications of the ACMCommunications of the ACM is the flagship monthly journal of the Association for Computing Machinery . First published in 1957, CACM is sent to all ACM members, currently numbering about 80,000. The articles are intended for readers with backgrounds in all areas of computer science and information...
, vol. 52, no. 4, pp. 31–34, April 2009.
Curriculum and classification
 Association for Computing MachineryAssociation for Computing MachineryThe 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...
. 1998 ACM Computing Classification System. 1998.  Joint Task Force of Association for Computing Machinery (ACM), Association for Information SystemsAssociation for Information SystemsThe Association for Information Systems is an international professional organization serving as the premier global organization for academics specializing in Information Systems...
(AIS) and IEEE Computer SocietyIEEE Computer SocietyThe IEEE Computer Society is a professional society of IEEE. Its purpose and scope is “to advance the theory, practice, and application of computer and information processing science and technology” and the “professional standing of its members.” The CS is the largest of 38 technical societies...
(IEEECS). Computing Curricula 2005: The Overview Report. September 30, 2005.  Norman Gibbs, Allen TuckerAllen TuckerAllen Tucker was an American artist.Biography:He was born in Brooklyn, New York in 1866 and graduated from the School of Mines of Columbia University in 1887 with a degree in architecture and worked as a draftsman at McIlvaine and Tucker. He died in 1939.References:...
. "A model curriculum for a liberal arts degree in computer science". Communications of the ACM, Volume 29 Issue 3, March 1986.
External links
 Scholarly Societies in Computer Science
 Best Papers Awards in Computer Science since 1996
 Photographs of computer scientists by 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:...
 EECS.berkeley.edu
Bibliography and academic search engines
 CiteSeer^{x} (articleCiteSeerXCiteSeerX is a public search engine and digital library and repository for scientific and academic papers with a focus on computer and information science. It is loosely based on the previous CiteSeer search engine and digital library and is built with a new open source infrastructure, SeerSuite,...
): search engine, digital library and repository for scientific and academic papers with a focus on computer and information science.  DBLP Computer Science Bibliography (articleDigital Bibliography & Library ProjectDBLP is a computer science bibliography website hosted at Universität Trier, in Germany. It was originally a database and logic programming bibliography site, and has existed at least since the 1980s. DBLP listed more than 1.3 million articles on computer science in January 2010...
): computer science bibliography website hosted at Universität Trier, in Germany.  The Collection of Computer Science Bibliographies (article)
Webcasts