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. 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 mathematics, programming, software engineering, and computer engineering, although these fields are often confused. 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!"
Computer scientists study what programs can and cannot do (see computability and artificial intelligence), 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), and how programs and people should communicate with each other (see human-computer 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.
Computer science is closely related to several other fields. These fields overlap considerably, though important differences exist
Related fields
Major fields of importance for computer science
Mathematical foundations
Theoretical computer science
Hardware
(see also electrical engineering)
Computer systems organization
(see also electrical engineering)
- Computer architecture
- Computer networks
- Performance of systems
- Computer system implementation
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
- File formats
- Information systems
- Databases
- Information Storage and retrieval
- Information Interfaces and Presentation
Computing methodologies
Computer applications
- Administrative data processing
- Mathematical software
- Numerical analysis
- Automated theorem proving
- Computer algebra systems
- Physical science and Engineering
- Life and medical sciences
- Social and behavioral sciences
- Arts and Humanities
- Computer-aided engineering
- Robotics
- Human-computer 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 high-level programming language and the Backus-Naur form for describing formal language syntax.
- James W. Cooley and John W. Tukey The Fast Fourier Transform and its impact on scientific research.
- Ole-Johan Dahl and Kristen Nygaard, inventors of the proto-object oriented language SIMULA.
- Edsger Dijkstra for algorithms, Goto considered harmful, 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 A-O compiler. Her ideas heavily influenced the COBOL language.
- Kenneth Iverson Inventor of APL, for his contribution to interactive computing.
- William Kahan for the IEEE floating-point 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 creditted with the ideas of several high-level 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 also
External links