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, Computer program design, Software, computer hardware, artificial intelligence, and numerical analysis. By definition, computer science 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 computational complexity theory), 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 machines 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 computers machines and theoretical models such as Probabilistic algorithm, Oracle (computer science), 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, Boston in 1982. Most universities today have specific departments devoted to computer science, while some conjoin it with engineering, with applied mathematics, or other disciplines.
= 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, Software, 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 Computer program 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.
Denmark 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
Cryptography
Formal semantics of programming languages
Theory of computation (or theoretical computer science )
Analysis of Algorithms and problem Computational complexity theory
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 data structures
Computer storage structures
Input/output and Communications
Logic Design
Integrated circuits
Very-large-scale integration
Performance tuning and reliability
== Computer systems organization ==
(see also electrical engineering and computer engineering)
Computer architecture
Computer networks
Distributed computing
Performance tuning
Computer system implementation
== Software ==
Computer program and Computer programming
Concurrent Programming
Parallel Programming
Program specification
Program verification
Computer programming
Software engineering
Configuration management and Software Configuration Management (SCM)
Design pattern (computer science)
Formal methods
Object-oriented programming
Aspect-oriented programming
Software Documentation
Software optimization
Software metrics
Structured programming
Programming languages
Imperative programming Languages such as C programming language
Functional programming Languages such as LISP
Logic programming Languages such as Prolog
operating system
Compilers
Lexical analysis
Parsing
Compiler optimization
== Data and information systems ==
Data structures
Data storage representations
Data Encryption
Data compression
Data recovery
Computer programming and Information theory
Computer file
File formats
Information systems
Databases
Computer storage and Information retrieval
Information Interfaces and Presentation
== Computing methodologies ==
Symbolic and Algebraic manipulation
Artificial intelligence
Computer graphics
Image processing and computer vision
Pattern recognition
Speech recognition
Simulation and Modeling
Document and Word processing
Digital signal processing
== Computer applications ==
Administrative data processing
Enterprise resource planning
Customer relationship management
Human Resource Management Systems
Mathematical software
Numerical analysis
Automated theorem proving
Computer algebra systems
Physical science and Engineering
Computational chemistry
Computational physics
Biology and Medicine
Bioinformatics
Computational biology
Medical informatics
Social sciences and Behavioral science
Computer-aided engineering
Robotics
Human-computer interaction
Speech synthesis
Usability engineering
Telecommunications
Queueing theory
Computer industry
History of computing hardware
Unsolved problems in computer science
Computers and education
Computers and society
Computer supported cooperative work
Legal aspects of computing
Free software and Open Source
Management of computing and Information systems
Personal computing
Computer security and information security
= History =
History of computing
List of computer term etymologies
Early programming projects
Computer science departments
Timeline of algorithms
= Prominent pioneers in computer science =
= See also =
*Benchmark (computing)
*Computer jargon
*Computer numbering formats
*Jargon file
*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 (Association for Computing Machinery)
= External links =
*[
http://www.dmoz.org/Computers/Computer_Science/ Open Directory Project: Computer Science]
*[
http://www.techbooksforfree.com/science.shtml Downloadable Science and Computer Science books]
*[
http://liinwww.ira.uka.de/bibliography/ Collection of Computer Science Bibliographies]
[http://www.geocities.com/tablizer/science.htm Belief that title science in computer science is inappropriate]