Online Encyclopedia
Computer science
In its most general sense, computer science (CS or compsci) is the study of computation and information processing, both in hardware and in software.
Contents 
Introduction
In practice, computer science includes a variety of topics relating to computers, which range from the abstract analysis of algorithms, formal grammars, etc. to more concrete subjects like programming languages, software, and computer hardware. As a scientific discipline, it differs significantly from and is often confused with mathematics, programming, software engineering, and computer engineering, although there is some degree of overlap with these and other fields.
Edsger Dijkstra is quoted as saying:
 "Computer science is no more about computers than astronomy is about telescopes."
The renowned physicist Richard Feynman said:
 "Computer science is not as old as physics; it lags by a couple of hundred years. However, this does not mean that there is significantly less on the computer scientist's plate than on the physicist's: younger it may be, but it has had a far more intense upbringing!"
The ChurchTuring thesis states that all known kinds of reasonable paradigms of computation are essentially equivalent in what they can do, although they vary in time and space efficiency. The thesis is not a mathematical theorem that can be proven, but an empirical observation that all known computational schemes have the same computational power. This thesis is a fundamental principle of computer science.
Most research in computer science has been related to von Neumann computers or Turing machines (computers that do one small, deterministic task at a time). These models resemble most real computers in use today. Computer scientists also study other kinds of machines, some practical (like parallel machines) and some theoretical (like probabilistic, oracle, and quantum machines).
Computer scientists study what programs can and cannot do (see computability), how programs should efficiently perform specific tasks (see algorithms), how programs should store and retrieve specific kinds of information (see data structures and data bases), how programs might behave intelligently (see artificial intelligence), and how programs and people should communicate with each other (see humancomputer interaction and user interfaces).
Computer science has roots in electrical engineering, mathematics and linguistics. In the last third of the 20th century computer science has become recognized as a distinct discipline and has developed its own methods and terminology.
The first computer science department in the United States was founded at Purdue University in 1962. The University of Cambridge in England, among others, taught CS prior to this, however at the time, CS was seen as a branch of mathematics, and not a separate department. Cambridge claims to have the world's oldest taught qualification in computing. Most universities today have specific departments devoted to computer science.
The highest honor in computer science is the Turing Award.
Related fields
Computer science is closely related to a number of fields. These fields overlap considerably, though important differences exist
 Information science is the study of data and information, including how to interpret, analyze, store, and retrieve it. Information science started as the foundation of scientific analysis of communication and databases.
 Computer programming or software development is the act of writing program code.
 Lexicography and specialized lexicography focus on the study of lexicographic reference works and include the study of electronic and Internetbased dictionaries.
 Linguistics is the study of languages, converging with computer science in such areas as programming language design and natural language processing.
 Software engineering emphasizes analysis, design, construction, and testing of useful software. Software engineering includes development methodologies (such as the waterfall model and extreme programming) and project management.

Information systems (IS) is the application of computing to support the operations of an organization: operating, installing, and maintaining the computers, software, and data.
 Management information systems (MIS) is a subfield of information systems, that emphasizes financial and personnel management.
 Mathematics shares many techniques and topics with computer science, but is more general. In some sense, CS is the mathematics of computing.
 Logic is a formal system of reasoning, and studies principles that lay at the very basis of computing/reasoning machines, whether it be the hardware (digital logic) or software (verification, AI etc.) levels. The subfield of logic called computability logic provides a systematic answer to the fundamental questions about what can be computed and how.
 Computer engineering is the analysis, design, and construction of computer hardware.
 Information security is the analysis and implementation of information system security, including cryptography.
Debate over name
There is some debate over whether the name of the field should be computer science or computation science. The first name is the original, traditional name, however it implies that CS studies of computers. The second name is more recent, and it implies that CS studies what we do with computers. Some view this debate over names as silly. Others see it as important symbolism.
Major fields of importance for computer science
Mathematical foundations
 Boolean algebra
 Discrete mathematics
 Graph theory
 Information theory
 Mathematical logic
 Domain theory
 Probability and Statistics
Theoretical computer science
 Algorithmic information theory
 Computability theory
 Cryptography
 Formal semantics

Theory of computation (or theoretical computer science)
 analysis of algorithms and problem complexity
 logics and meanings of programs
 Mathematical logic and Formal languages
 Type theory
Hardware
(see also electrical engineering)
 Control structures and Microprogramming
 Arithmetic and Logic structures
 Memory structures
 input/output and Data communications
 Logic Design
 Integrated circuits
 Performance and reliability
Computer systems organization
(see also electrical engineering)
Software
 Computer program and Computer programming
 Programming techniques

Software engineering
 Optimization
 Software metrics
 Configuration management and Software Configuration Management (SCM)
 Structured programming
 Object orientation
 Design patterns
 Documentation
 Programming languages
 Operating Systems
 Compilers
Data and information systems
 Data structures
 Data storage representations
 Data encryption
 Data compression
 Data recovery
 Coding and Information theory
 Files

Information systems
 Databases
 Information Storage and retrieval
 Information Interfaces and Presentation
Computing methodologies
 Symbolic and Algebraic manipulation
 Artificial intelligence
 Computer graphics
 Image processing and computer vision
 Pattern recognition
 Simulation and Modeling
 Document and text processing
 Digital signal processing
Computer applications
 Administrative data processing
 Mathematical software
 Physical science and Engineering
 Life and medical sciences
 Social and behavioral sciences
 Arts and Humanities
 Computeraided engineering
 Robotics
 Humancomputer interaction
Computing milieux
 Computer industry
 History of computing hardware
 Computers and education
 Computers and society
 Legal aspects of computing
 Management of computing and Information systems
 Personal computing
 Computer and information security
History
 History of computing
 Origins of computer terms
 Early programming projects
 Computer science departments
 Timeline of algorithms
Prominent pioneers in computer science
 Charles Babbage, Designed and built a prototype for a mechanical calculator; designed, but never built, the more powerful Analytical Engine.
 John Backus Invention of FORTRAN (Formula Translation), the first practical highlevel programming language and the BackusNaur form for describing formal language syntax.
 James W. Cooley and John W. Tukey The Fast Fourier Transform and its impact on scientific research.
 OleJohan Dahl and Kristen Nygaard, inventors of the protoobject oriented language SIMULA.
 Edsger Dijkstra for algorithms, Goto considered harmful, the semaphore (programming), rigor, and pedagogy.
 C.A.R Hoare for the development of the formal language Communicating Sequential Processes (CSP) and Quicksort.
 Admiral Grace Murray Hopper, for doing pioneer work in the 1940s, one of the first to recognize the necessity for higher level programming languages, or what she termed automatic programming. She wrote the AO compiler. Her ideas heavily influenced the COBOL language.
 Kenneth Iverson Inventor of APL, for his contribution to interactive computing.
 William Kahan for the IEEE floatingpoint standard. (Perhaps this reference should be moved to hardware engineering.)
 Donald Knuth for The Art of Computer Programming series.
 Ada Lovelace, contemporary of Charles Babbage, famous for her Sketch of the Analytical Engine, an analysis of Babbage's work; the namesake for the modern computer language, Ada.
 John von Neumann for devising the von Neumann architecture upon which most modern computers are based.
 Claude E. Shannon for information theory.
 Alan Turing for computability theory, pioneering work in the field of Artificial Intelligence, and for the design of the Pilot ACE.
 Maurice Wilkes for building the first practical stored program computer to be completed, and credited with the ideas of several highlevel programming language constructs.
 James H. Wilkinson The technique of "backward error analysis" and advances in the field of matrix computations . Wilkinson was also a principal mover in the development of the Pilot ACE, the first British computer, in the late 1940s. (See more on Wilkinson in the MacTutor Biographies.)
 Konrad Zuse Builder of a binary computer in the 1930s, for which he allegedly devised a theoretical high level programming language, Plankalkül.
See list of computer scientists for many more notables.
See also
 List of basic computer science topics
 Computing
 List of computing topics
 History of computing
 History of computing hardware
 Turing Award (ACM)
 IEEE John von Neumann Medal
 Computer jargon
 Computer slang
 Computing analogies
 Internet
 Multimedia
 Data acquisition
 Benchmark
 Sensor network
 Online computations and algorithms
 Computer numbering formats
 List of publications in computer science