Computer science

Template:PortalComputer science (academically, CS, CSC or compsci) encompasses a variety of topics that relates to computation, like abstract analysis of algorithms, formal grammars, and subjects such as programming languages, program design, software and computer hardware. A computer is one that computes, where com (with, together) joins putare (Latin root, to reckon, to think, or section as in to compare pieces), so by definition, computer science (Latin: scientia, knowledge) is the accumulated knowledge through scientific methodology by computation or by the use of the computer.
Computer scientists study what programs can and cannot do (see computability), how programs can efficiently perform specific tasks (see algorithms and complexity), how programs should store and retrieve specific kinds of information (see data structures and databases), how programs might behave intelligently (see artificial intelligence), and how programs and people should communicate with each other (see humancomputer interaction and user interfaces).
The following definition of computer science (aka computing) is given in the ACM report Computing As a Discipline (http://portal.acm.org/citation.cfm?id=63238.63239):
 The discipline of computing is the systematic study of algorithmic processes that describe and transform information: their theory, analysis, design, efficiency, implementation, and application. The fundamental question underlying all the computing is 'What can be (efficiently) automated?'
Most research in computer science has focused on von Neumann computers or Turing machines (computation models that perform one small, deterministic step at a time). These models resemble, at a basic level, most real computers in use today. Computer scientists also study other models of computation, which includes parallel machines and theoretical models such as probabilistic, oracle, and quantum computers.
Edsger Dijkstra said:
 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!
Computer science has roots in electrical engineering, mathematics, and linguistics. In the last third of the 20th century computer science emerged as a distinct discipline and developed its own methods and terminology. Originally, CS was taught as part of mathematics or engineering departments, for instance at the University of Cambridge in England and at the Gdansk University of Technology in Poland, respectively. Cambridge claims to have the world's oldest taught qualification in computing. The first computer science department in the United States was founded at Purdue University in 1962, while the first college entirely devoted to computer science was founded at Northeastern University in 1980. Most universities today have specific departments devoted to computer science, while some conjoin it with engineering, with applied mathematics, or other disciplines.
Contents 
Related fields
Computer science is closely related to a number of fields. These fields overlap considerably, though important differences exist
 Computer engineering is the analysis, design, and construction of computer hardware.
 Computer graphics is the field of visual computing, where one uses computers both to generate visual images synthetically and to integrate or alter visual and spatial information sampled from the real world.
 Computer programming is the act of writing program code.
 Information science or Informatics is the study of data and information, which includes how to create, interpret, analyze, store, retrieve, transfer, and manage it. Information science started as the scientific foundation for communication and databases. It also concerns about the ways people generate, use and find information (see Cognitive science).
 Information security is the analysis and implementation of information system security, like cryptography.
 Information systems (IS) is the application of computing to support the operations of an organization: operating, installing, and maintaining the computers, software, and data.
 Lexicography focus on the study of lexicographic reference works and include the study of electronic and Internetbased dictionaries.
 Linguistics is the study of languages; it converges with computer science in such areas as programming language design and natural language processing.
 Logic is a formal system of reasoning, and studies principles that lay at the basis of computing machines, whether it be the hardware (digital logic) or software (verification, AI etc.) levels.
 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. Theoretical computer science is the mathematics of computing.
 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 Technology
 Computing
The name of the field
The name "computer science" immediately gives the impression that the field is the study of computers, the everyday machines that run programs and perform computations. Nonetheless, the field (as noted above) is both wider and more abstract than this name would suggest. Alternate names such as "computation science" have been proposed but the traditional name remains the most common. The Danish Scientist Peter Naur dislikes the name and has suggested it be called "Datalogy", indeed this is the actual title used in many of the Nordic countries.
In French, the discipline is named informatique, in German Informatik, in Polish informatyka and in Dutch informatica. However, informatics in English is not directly synonymous with computer science; it is actually more equivalent with information theory.
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 and computer 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 and computer 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
 Computeraided engineering
 Robotics
 Humancomputer interaction
 Telecommunications
Computing milieux
 Computer industry
 History of computing hardware
 Unsolved problems in computer science
 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
Person  Achievement 

John Vincent Atanasoff  Built the first electronic digital computer: the ABC Computer. Differently than ENIAC, allegedly the first allelectronic computer designed to be Turingcomplete, the ABC Computer was not programmable. 
Charles Babbage  Designed and built a prototype for a mechanical calculator and designed the more powerful Analytical Engine. 
John Backus  Invented FORTRAN (Formula Translation), the first practical highlevel programming language, and he formulated the BackusNaur form that described the formal language syntax. 
Alonzo Church  Founded contributions to theoretical computer science, specifically for the development of the lambda calculus and the discovery of the undecidable problem within it. 
James W. Cooley and John W. Tukey  The Fast Fourier Transform and its impact on scientific research. 
OleJohan Dahl and Kristen Nygaard  Invented the protoobject oriented language SIMULA. 
Edsger Dijkstra  For algorithms, Goto considered harmful, the semaphore (programming), rigor, and pedagogy. 
Gottlob Frege  Whose development of firstorder predicate calculus was a crucial precursor requirement to develop computation theory. 
C.A.R Hoare  For the development of the formal language Communicating Sequential Processes (CSP) and Quicksort. 
Kurt Gödel  For his 1931 proof that demonstrated that Peano axiomatized arithmetic could not be both logically consistent and complete in firstorder predicate calculus. Church, Kleene, and Turing developed the foundations of computation theory based on corallaries to Gödel's work in 1931. 
Admiral Grace Murray Hopper  Pioneered work on the necessity for highlevel programming languages, which she termed automatic programming, and wrote the AO compiler, which heavily influenced the COBOL language. 
Kenneth Iverson  Invented the APL and for his contribution to interactive computing. 
Jacek Karpinski  Developed the first differential analyzer that used transistors, and he developed one of the first machine learning algorithms for character and image recognition. Also the inventor of one of the first minicomputers, the K202. 
Stephen Cole Kleene  Pioneered work with Alonzo Church in Lambda Calculus that first laid down the foundations of computation theory. 
Donald Knuth  For The Art of Computer Programming series and TeX. 
Gottfried Leibniz  Whose huge advances in symbolic logic, such as the Calculus ratiocinator, were heavily influential on Gottlob Frege, who development of firstorder predicate calculus was crucial for the theoretical foundations of computer science. 
Ramon Llull  For his multiple symbolic representations machines, his "Ars Combinatoria", and his pioneered notions of symbolic representation and manipulation to produce knowledge. He was a huge influence on Leibniz. 
Ada Lovelace  Began the study of scientific computation, specifically for her "Sketch of the Analytical Engine", an analysis of Babbage's work and for the namesake for the modern computer language, Ada. 
John Mauchly and J. Presper Eckert  Designed and built the ENIAC, the first all electronic Turingcomplete computer, and the UNIVAC I, the first commercially available computer in the United States. Their work on the ENIAC at the University of Pennsylvania was highly influential on John von Neumann and the Institute for Advanced Study when they did pioneering work in computer architecture. 
John McCarthy  Invented the LISP, a functional programming language. 
John von Neumann  Devised the von Neumann architecture upon which most modern computers are based. 
Claude E. Shannon  Founded information theory. 
Alan Turing  For founding contributions to computer science, for the formulation of the Turing machine computational model, and for the design of the Pilot ACE. 
Maurice Wilkes  Built the first practical stored program computer to be completed and for being credited with the ideas of several highlevel programming language constructs. 
Konrad Zuse  Built a binary computer, for which he allegedly devised a theoretical high level programming language, Plankalkül. 
The highest honor in computer science, analogous to the Nobel Prize, is the Turing Award. See list of computer scientists for many more notables.
See also
 List of basic computer science topics
 Computing
 List of computing topics
 List of data structures
 List of algorithms
 History of computing
 History of computing hardware
 Turing Award (ACM)
 IEEE John von Neumann Medal
 Computer jargon
 Computer slang
 Internet
 Multimedia
 Data acquisition
 Benchmark
 Sensor network
 Online computations and algorithms
 Computer numbering formats
 List of publications in computer science
 List of open problems in computer science
External links
Template:Wikibooks Template:Wikibookspar
 Open Directory Project: Computer Science (http://www.dmoz.org/Computers/Computer_Science/)
 Collection of Computer Science Bibliographies (http://liinwww.ira.uka.de/bibliography/)
 Belief that title "science" in "computer science" is inappropriate (http://www.geocities.com/tablizer/science.htm)af:Rekenaarwetenskap
ar:علم الحاسوب ast:Informática bg:Информатика bn:কম্পিউটার বিজ্ঞান br:Urzhiataerezh ca:Informàtica cs:Informatika csb:Infòrmatika da:Datalogi de:Informatik el:Επιστήμη Υπολογιστών es:Informática eo:Komputiko et:Informaatika fa:علم رایانه fr:Informatique fy:Ynformatika ga:Ríomheolaíocht gl:Informática he:מדעי המחשב ko:컴퓨터 과학 hr:Računarstvo id:Ilmu komputer ia:Informatica ie:Informatica it:Informatica iu:ᑐᓴᐅᒪᖃᑦᑕᐅᑎᔾᔪᑎᓂᒃ ᐊᐅᓚᑦᑎᔩᑦ jbo:samske lb:Informatik hu:Számítástechnika li:Informatica ml:കംപ്യുട്ടര് ശാസ്ത്രം nl:Informatica ja:情報工学 lv:Datorzinātne no:Datavitenskap oc:Informatica pl:Informatyka (technika) pt:Ciência da computação ro:Informatică ru:Информатика simple:Computer science sl:Računalništvo sr:Рачунарство fi:Tietojenkäsittelytiede sv:Datavetenskap tl:Agham pangkompyuter th:วิทยาการคอมพิวเตอร์ vi:Khoa học máy tính tr:Bilgisayar Mühendisliği zh:计算机科学