History of Computer Science
The history of computer science predates the invention of the modern digital computer. Prior to the 1920s, the term computer referred to a human clerk who performed calculations. Early researchers in what came to be called computer science, such as Kurt Gödel, Alonzo Church, and Alan Turing, were interested in the question of computability: what things can be computed by a human clerk who simply follows a list of instructions with paper and pencil, for as long as necessary, and without ingenuity or insight? Part of the motivation for this work was the desire to develop computing machines that could automate the often tedious and error-prone work of a human computer.
Despite its relatively short history as a formal academic discipline, computer science has made a number of fundamental contributions to science and society. These include:
* A formal definition of computation and computability, and proof that there are computationally unsolvable and intractable problems.
* The concept of a programming language, a tool for the precise expression of methodological information at various levels of abstraction .
* Revolutionary technologies such as general-purpose computers, the Internet, digital signatures, electronic commerce, and search engines.
* The enabling of new types of scientific research, such as computational physics and computational chemistry.
Some universities teach computer science as a theoretical study of computation and algorithmic reasoning. These programs often feature the theory of computation, 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 high-level study.
Other colleges and universities, as well as secondary schools and vocational programs that teach computer science, emphasize the practice of advanced computer 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 practical aspects of computer programming are often referred to as software engineering. However, there is a lot of disagreement over what the term "software engineering" actually means, and whether it is the same thing as programming.