Computer science
Computer science (abbreviated CS 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, computer hardware, artificial intelligence, and numerical analysis.
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 human-computer interaction and user interfaces).
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.
Computer science is much more than the study of programming. Edsger Dijkstra, a pioneer of the field, once said:
Computer science is no more about computers than astronomy is about telescopes.
Although the field is young, it is varied and complex. 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, logic, 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 1982. 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:
- Artificial intelligence (AI) is the implementation and study of systems that exhibit (either behaviourally or seemingly) an autonomous intelligence or behaviour of their own, sometimes inspired by the characteristics of living beings. Computer science is closely tied with AI, as software and computers are primary tools for the development and progression of artificial intelligence.
- Bioinformatics Bioinformatics or computational biology is the use of techniques from applied mathematics, informatics, statistics, and computer science to solve biological problems.
- Computer engineering is the analysis, design, and construction of computer systems (including computer hardware and computer networks).
- 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.
- Computer vision is the act of computers extracting three dimensional objects from a two dimensional picture.
- Computing is an overarching term for all of these related fields with CS.
- 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 retrieval (IR) is the art and science of searching for information in documents, searching for documents themselves, searching for metadata which describes documents, or searching within databases, whether relational stand alone databases or hypertext networked databases such as the Internet or intranets, for text, sound, images or data.
- Information systems (IS) is the application of computing to support the operations of an organization: operating, installing, and maintaining the computers, software, and data.
- Information technology (IT) is an overarching term for all of these related fields with CS.
- Lexicography focus on the study of lexicographic reference works and include the study of electronic and Internet-based 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 applications. Software engineering includes development methodologies (such as the waterfall model and extreme programming) and project management.
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. Alternative names such as computing science or computation science have been proposed, but the traditional name remains the most common.
Computer science is not an experimental science, and (as with fields such as political science and, indeed, all the social sciences) some have considered the name a misnomer. Scientific computing, though it sounds similar, is only a tangentially related field involving computer programming for hard- and soft-science applications. Despite these seeming ambiguities, the name computer science has remained both common and unambiguously well-understood within the field it names.
Danish scientist Peter Naur thus 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 applying the datalogy term was DIKU, 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 Nordic countries.
In French, the discipline is named informatique, in German Informatik, in Spanish informática, in Dutch and Italian informatica, in Polish informatyka, in Russian информатика and in Greek Πληροφορική. However, informatics in English is not directly synonymous with computer science; it is actually more equivalent with information science.
Major fields of importance for computer science
Mathematical foundations
- Boolean algebra
- Discrete mathematics
- Graph theory
- Mathematical logic
- Probability and Statistics
- Cybernetics
- Information theory
- Domain theory
- Category theory
- Set theory
Theoretical computer science
- Algorithmic information theory
- Computability theory
- Computational Complexity theory
- Cryptography
- Formal semantics of programming languages
- 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
- Quantum computing
- Quantum information 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
- Configuration management and Software Configuration Management (SCM)
- Design patterns
- Formal methods
- Object orientation
- Aspect orientation
- Documentation
- Optimization
- Software metrics
- Structured programming
- Programming languages
- Imperative programming Languages such as C
- Functional programming Languages such as LISP
- Logic programming Languages such as Prolog
- 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
- Computer-aided engineering
- Robotics
- Human-computer 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 an electronic digital computer: the ABC Computer. Unlike ENIAC, the first all-electronic computer designed to be Turing-complete, 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 high-level programming language, and he formulated the Backus-Naur form that described the formal language syntax. |
George Boole | Formalized boolean algebra, the basis for digital logic and computer science. |
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. |
Ole-Johan Dahl and Kristen Nygaard | Invented the proto-object oriented language SIMULA. |
Edsger Dijkstra | For algorithms, Goto considered harmful, the semaphore (programming), rigor, and pedagogy. |
Gottlob Frege | Whose development of first-order 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 first-order predicate calculus. Church, Kleene, and Turing developed the foundations of computation theory based on corollaries to Gödel's work in 1931. |
Admiral Grace Murray Hopper | Pioneered work on the necessity for high-level programming languages, which she termed automatic programming, and wrote the A-O 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 K-202. |
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 and TeX. |
Gottfried Leibniz | Whose huge advances in symbolic logic, such as the Calculus ratiocinator, were heavily influential on Gottlob Frege, who development of first-order predicate calculus was crucial for the theoretical foundations of computer science. |
Ramon Llull | For his multiple symbolic representations machines, his "Ars Combinatoria", and his pioneering 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 modern computer (i.e. all electronic Turing-complete computer), and the UNIVAC I, the first commercially available computer in the United States. John von Neumann of the Institute for Advanced Study admitted to being greatly influenced by their work when he did pioneering work in computer architecture. |
John McCarthy | Invented 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 and practical digital circuit design. |
Emil L. Post | Developed the Post machine as a model of computation, independently of Turing. Known also for developing truth tables, the Post correspondence problem used in recursion theory as well as proving what is knows as Post's theorem. |
Herbert Simon | A political scientist and economist who pioneered artificial intelligence. |
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 (EDSAC) to be completed and for being credited with the ideas of several high-level programming language constructs. |
Niklaus Wirth | Programming language designer, including Pascal, Modula-2 and Oberon. |
Konrad Zuse | Built a binary computer, for which he allegedly devised a theoretical high level programming language, Plankalkül. |
See also
- Benchmark
- Computer jargon
- Computer numbering formats
- Computer slang
- Computing
- Data acquisition
- European Association for Theoretical Computer Science
- History of computing
- History of computing hardware
- IEEE John von Neumann Medal
- Internet
- List of algorithms
- List of basic computer science topics
- List of computer science conferences
- List of computing topics
- List of data structures
- List of open problems in computer science
- List of publications in computer science
- Multimedia
- Online computations and algorithms
- Sensor network
- Turing Award (ACM)
External links
- Open Directory Project: Computer Science
- Downloadable Science and Computer Science books
- Collection of Computer Science Bibliographies
- Belief that title "science" in "computer science" is inappropriateaf:Rekenaarwetenskap
ar:علم الحاسوب ast:Informática bg:Информатика bn:কম্পিউটার বিজ্ঞান br:Urzhiataerezh ca:Informàtica cs:Informatika (počítačová věda) 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 io:Informatiko 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:Bilişim bilimi zh:计算机科学