Science Fair Project Encyclopedia
4.1 Mathematical foundations
Computer science (informally, CS, CSC or compsci) encompasses a variety of topics relating to computation, ranging from abstract analysis of algorithms and formal grammars, to subjects such as programming languages, program design, software and computer hardware.
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, including parallel machines and theoretical models such as probabilistic, oracle, and quantum computers.
Edsger Dijkstra 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. 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. Prior to this, 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. Most universities today have specific departments devoted to computer science, while some conjoin it with engineering, with applied mathematics, or other disciplines.
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, including 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, including 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 Internet-based dictionaries.
- Linguistics is the study of languages, converging 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
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.
In French, the discipline is named informatique, in German Informatik, and in Polish informatyka. 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
- Boolean algebra
- Discrete mathematics
- Graph theory
- Information theory
- Mathematical logic
- Domain theory
- Probability and Statistics
Theoretical computer science
- Algorithmic information theory
- Computability theory
- Formal semantics
- Theory of computation (or theoretical computer science)
- Type theory
(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)
- Computer architecture
- Computer networks
- Performance of systems
- Computer system implementation
- Computer program and Computer programming
- Programming techniques
- Software engineering
- Programming languages
- Operating Systems
Data and information systems
- Data structures
- Data storage representations
- Data encryption
- Data compression
- Data recovery
- Coding and Information theory
- Information systems
- 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
- Administrative data processing
- Mathematical software
- Physical science and Engineering
- Life and medical sciences
- Social and behavioral sciences
- Computer-aided engineering
- Human-computer interaction
- 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 of computing
- Origins of computer terms
- Early programming projects
- Computer science departments
- Timeline of algorithms
Prominent pioneers in computer science
- John Vincent Atanasoff, for building the first electronic digital computer: the ABC Computer. Differently than ENIAC, allegedly the first all-electronic computer designed to be Turing-complete, the ABC Computer was not programmable.
- Charles Babbage, for designing and building a prototype for a mechanical calculator and designing the more powerful Analytical Engine.
- John Backus, for inventing FORTRAN (Formula Translation), the first practical high-level programming language and formulating the Backus-Naur form for describing formal language syntax.
- Alonzo Church, for founding 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, for the Fast Fourier Transform and its impact on scientific research.
- Ole-Johan Dahl and Kristen Nygaard, for inventing 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 Godel, for his 1930 proof that demonstrated that Peano axiomatized arithemetic 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 corallaries to Godel's work in 1930.
- Admiral Grace Murray Hopper, for pioneering work on the necessity for high-level programming languages, which she termed automatic programming, for writing the A-O compiler, and heavily influencing the COBOL language.
- Kenneth Iverson, for inventing the APL and for his contribution to interactive computing.
- Jacek Karpinski, for developing the first differential analyzer using transistors and developing 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, for his pioneering 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 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, for beginning 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, for designing and building the ENIAC, the first all electronic Turing-complete 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, for inventing the LISP, a functional programming language.
- John von Neumann, for devising the von Neumann architecture upon which most modern computers are based.
- Claude E. Shannon, for founding 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, for building the first practical stored program computer to be completed and for being credited with the ideas of several high-level programming language constructs.
- Konrad Zuse for building a binary computer, for which he allegedly devised a theoretical high level programming language, Plankalkül.
- List of basic computer science topics
- List of computing topics
- History of computing
- History of computing hardware
- Turing Award (ACM)
- IEEE John von Neumann Medal
- Computer jargon
- Computer slang
- Data acquisition
- Sensor network
- Online computations and algorithms
- Computer numbering formats
- List of publications in computer science
- List of open problems in computer science
- Riverside Graphics Lab
- Open Directory Project: Computer Science
- Collection of Computer Science Bibliographies
- Belief that title "science" in "computer science" is inappropriate
The contents of this article is licensed from www.wikipedia.org under the GNU Free Documentation License. Click here to see the transparent copy and copyright details