Computer science
In its most general sense, computer science (CS) is the study of computation, both hardware and software. In practice, CS includes a variety of topics relating to computers, which range from the abstract analysis of algorithms to more concrete subjects like programming languages, software, and computer hardware. As a scientific discipline, it is a very different activity from computer programming, although the two are often confused.
The Church-Turing thesis states that all known kinds of general computing devices are essentially equivalent in what they can do, although they vary in efficiency. This thesis is sometimes characterized as the fundamental principle of computer science. Computer scientists usually emphasize von Neumann computer or Turing machines (computers that do one small, deterministic task at a time), because that resembles most real computers in use today. Computer scientists also study other kinds of machines, some practical (like parallel and quantum machines) and some theoretical (like random and oracle machines).
CS studies what programs can and cannot do (computability and artificial intelligence), how programs should efficiently evaluate specific results (algorithms), how programs should store and retrieve specific bits of information (data structures), and how programs and people should communicate with each other (user interfaces and programming languages).
CS 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 terminologies.
The first computer science department was founded at Purdue University in 1962. Most universities today have CS departments.
The highest honor in computer science is the Turing Award, the winners of whom are all major pioneers in the field.
- Computer science is no more about computers than astronomy is about telescopes
Related fields
Computer science is closely related to several other 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.
- Software engineering emphasizes analysis, design, and construction of useful software using contemporary tools and practices.
- Information systems is the application of computing to support the operations of an organization: operating, installing, and maintaining the computers, software, and data. Management information systems is a key subfield that emphasizes financial and personnel management.
- Computer engineering is about the analysis, design, and construction of computer hardware.
- Information security is about the analysis and implementation of information system security (cryptography is included).
Major subfields
Mathematical foundations
- Boolean algebra
- Discrete mathematics
- Graph theory
- Information theory
- Symbolic logic
- Probability and Statistics
Theoretical computer science
- Algorithmic information theory
- Compilers
- Computability theory
- Cryptography
- Denotational 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
- used laptops/notebook and spares [[1]]
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
- Programming languages
- Operating Systems
Data and information systems
- Data structures
- data storage representations
- data encryption
- Data compression
- coding and information theory
- files
- information systems
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 sciences and engineering
- life and medical sciences
- social and behavioral sciences
- arts and humanities
- computer-aided engineering
- Robotics
- Human-computer interaction
Computing milieux
- the computer industry
- History of computing
- computers and education
- computers and society
- legal aspects of computing
- management of computing and information systems
- personal computing
History
Leading computer scientists
- John Backus Invention of FORTRAN, the first practical high-level programming language.
- James Cooley and John Tuckey The Fast Fourier Transform and its impact on scientific research..
- Edsger Dijkstra for algorithms and rigor and pedagogy.
- Gene Golub for matrix work
- Alston Householder Contributions to the field of matrix computations. [see more on Householder in the MacTutor Biographies]
- 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
- John von Neumann for devising the von Neumann architecture.
- Claude E. Shannon for information theory.
- Alan Turing for computability theory.
- James 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 the first binary computer in the 1930s, for which he devised a programming language well ahead of its times.
See list of computer scientists for additional notables.