Computer science
Computer science is the study of manipulating, managing, transforming and encoding information.
There are many different areas in computer science. Some areas consider problems in an abstract manner, while some need special machines, called computers.
A person who works with computers will often need mathematics, science, and logic in order to design and work with computers.
History
History of computing |
---|
Hardware |
Software |
Computer science |
Modern concepts |
By country |
Timeline of computing |
Glossary of computer science |
The earliest foundations of what would become computer science predate the invention of the modern digital computer. Machines for calculating fixed numerical tasks such as the abacus have existed since antiquity, aiding in computations such as multiplication and division. Algorithms for performing computations have existed since antiquity, even before the development of sophisticated computing equipment.
Wilhelm Schickard designed and constructed the first working mechanical calculator in 1623.[3] In 1673, Gottfried Leibniz demonstrated a digital mechanical calculator, called the Stepped Reckoner.[4] Leibniz may be considered the first computer scientist and information theorist, for, among other reasons, documenting the binary number system. In 1820, Thomas de Colmar launched the mechanical calculator industry[note 1] when he invented his simplified arithmometer, the first calculating machine strong enough and reliable enough to be used daily in an office environment. Charles Babbage started the design of the first automatic mechanical calculator, his Difference Engine, in 1822, which eventually gave him the idea of the first programmable mechanical calculator, his Analytical Engine.[5] He started developing this machine in 1834, and "in less than two years, he had sketched out many of the salient features of the modern computer".[6] "A crucial step was the adoption of a punched card system derived from the Jacquard loom"[6] making it infinitely programmable.[note 2] In 1843, during the translation of a French article on the Analytical Engine, Ada Lovelace wrote, in one of the many notes she included, an algorithm to compute the Bernoulli numbers, which is considered to be the first published algorithm ever specifically tailored for implementation on a computer.[7] Around 1885, Herman Hollerith invented the tabulator, which used punched cards to process statistical information; eventually his company became part of IBM. Following Babbage, although unaware of his earlier work, Percy Ludgate in 1909 published [8] the 2nd of the only two designs for mechanical analytical engines in history. In 1937, one hundred years after Babbage's impossible dream, Howard Aiken convinced IBM, which was making all kinds of punched card equipment and was also in the calculator business[9] to develop his giant programmable calculator, the ASCC/Harvard Mark I, based on Babbage's Analytical Engine, which itself used cards and a central computing unit. When the machine was finished, some hailed it as "Babbage's dream come true".[10]
During the 1940s, with the development of new and more powerful computing machines such as the Atanasoff–Berry computer and ENIAC, the term computer came to refer to the machines rather than their human predecessors.[11] As it became clear that computers could be used for more than just mathematical calculations, the field of computer science broadened to study computation in general. In 1945, IBM founded the Watson Scientific Computing Laboratory at Columbia University in New York City. The renovated fraternity house on Manhattan's West Side was IBM's first laboratory devoted to pure science. The lab is the forerunner of IBM's Research Division, which today operates research facilities around the world.[12] Ultimately, the close relationship between IBM and the university was instrumental in the emergence of a new scientific discipline, with Columbia offering one of the first academic-credit courses in computer science in 1946.[13] Computer science began to be established as a distinct academic discipline in the 1950s and early 1960s.[14][15] The world's first computer science degree program, the Cambridge Diploma in Computer Science, began at the University of Cambridge Computer Laboratory in 1953. The first computer science department in the United States was formed at Purdue University in 1962.[16] Since practical computers became available, many applications of computing have become distinct areas of study in their own rights.
Etymology
Although first proposed in 1956,[17] the term "computer science" appears in a 1959 article in Communications of the ACM,[18] in which Louis Fein argues for the creation of a Graduate School in Computer Sciences analogous to the creation of Harvard Business School in 1921,[19] justifying the name by arguing that, like management science, the subject is applied and interdisciplinary in nature, while having the characteristics typical of an academic discipline.[18] His efforts, and those of others such as numerical analyst George Forsythe, were rewarded: universities went on to create such departments, starting with Purdue in 1962.[20] Despite its name, a significant amount of computer science does not involve the study of computers themselves. Because of this, several alternative names have been proposed.[21]
Common tasks for a computer scientist
Asking questions
This is so people can find new and easier ways to do things, and the way to approach problems with this information.
While computers can do some things easily (like simple math, or sorting out a list of names from A-to-Z), computers cannot answer questions when there is not enough information, or when there is no real answer. Also, computers may take too much time to finish long tasks. For example, it may take too long to find the shortest way through all of the towns in the USA - so instead a computer will try to make a close guess. A computer will answer these simpler questions much faster.
Answering the question
Algorithms are a specific set of instructions or steps on how to complete a task. For example, a computer scientist wants to sort playing cards. There are many ways to sort them - by suits (diamonds, clubs, hearts, and spades) or by numbers (2, 3, 4, 5, 6, 7, 8, 9, 10, Jack, Queen, King, and Ace). By deciding on a set of steps to sort the cards, the scientist has created an algorithm. The scientist then needs to test whether this algorithm works. This shows how well and how fast the algorithm sorts cards.
A simple but slow algorithm is: pick up two cards and check whether they are sorted correctly. If they are not, reverse them. Then do it again with another two, and repeat them all until they are all sorted. This "bubble sort" method will work, but it will take a very long time.
A better algorithm is: find the first card with the smallest suit and smallest number (2 of diamonds), and place it at the start. After this, look for the second card, and so on. This algorithm is much faster, and does not need much space. This algorithm is a "selection sort".
Ada Lovelace wrote the first computer algorithm in 1843, for a computer that was never finished. Computers began during World War II.[22] Computer science separated from the other sciences during the 1960s and 1970s. Now, computer science has its own methods, and has its own technical terms. It is related to electrical engineering, mathematics, and language science.
Computer science looks at the theoretical parts of computers. Computer engineering looks at the physical parts of computers (hardware). Software engineering looks at the use of computer programs and how to make them.
Parts of computer science
Central math
- Boolean algebra (when something can only be true or false)
- Computer numbering formats (how computers count)
- Discrete mathematics (math with numbers a person can count)
- Symbolic logic (clear ways of talking about math)
- Order of operations (which math operations are performed first)
How an ideal computer works
- Algorithmic information theory (how easily can a computer answer a question?)
- Complexity theory (how much time and memory does a computer need to answer a question?)
- Computability theory (can a computer do something?)
- Information theory (math that looks at data and how to process data)
- Theory of computation (how to answer questions on a computer using algorithms)
- Graph theory (math that looks for directions from one point to another)
- Type theory (what kinds of data should computers work with?)
- Denotational semantics (math for computer languages)
- Algorithms (looks at how to answer a question)
- Compilers (turning words into computer programs)
- Lexical analysis (how to turn words into data)
- Microprogramming (how to control the most important part of a computer)
- Operating systems (big computer programs, e.g. Linux, Microsoft Windows, Mac OS) to control the computer hardware and software.
- Cryptography (hiding data)
- Parallel computing (many instructions are carried out simultaneously)
Computer science at work
- Artificial intelligence (making computers learn and talk, similar to people)
- Computer algebra (using computers for Mathematical problems)
- Computer architecture (building a computer)
- Computer graphics (making pictures with computers)
- Computer networks (joining computers to other computers)
- Computer program (how to tell a computer to do something)
- Computer programming (writing, or making, computer programs)
- Computer security (making computers and their data safe)
- Databases (a way to sort and keep data)
- Data structure (how to build or group data)
- Distributed computing (using more than one computer to solve a difficult problem)
- Information retrieval (getting data back from a computer)
- Programming languages (languages that a programmer uses to make computer programs)
- Program specification (what a program is supposed to do)
- Program verification (making sure a computer program does what it should do, see debugging)
- Robots (using computers to control machines)
- Software engineering (how programmers write programs)
What computer science does
- Benchmark (testing a computer's power or speed)
- Computer vision (how computers can see and understand images)
- Collision detection (how computers help robots move without hitting something)
- Data compression (making data smaller)
- Data structures (how computers group and sort data)
- Data acquisition (putting data into computers)
- Design patterns (answers to common software engineering problems)
- Digital signal processing (cleaning and "looking" at data)
- File formats (how a file is arranged)
- Human-computer interaction (how humans use computers)
- Information security (keeping data safe from other people)
- Internet (a large network that joins almost all computers)
- Web applications (computer programs on the Internet)
- Optimization (making computer programs work better)
- Software metrics (ways to measure computer programs, such as counting lines of code or number of operations)
- VLSI design (the making of a very large and complex computer system)
Related pages
References
- ↑ "Charles Babbage Institute: Who Was Charles Babbage?". cbi.umn.edu. Retrieved 28 December 2016.
- ↑ "Ada Lovelace | Babbage Engine | Computer History Museum". www.computerhistory.org. Retrieved 28 December 2016.
- ↑ "Wilhelm Schickard – Ein Computerpionier" (PDF) (in Deutsch).
- ↑ Keates, Fiona (25 June 2012). "A Brief History of Computing". The Repository. The Royal Society.
- ↑ "Science Museum, Babbage's Analytical Engine, 1834-1871 (Trial model)". Retrieved 2020-05-11.
- ↑ 6.0 6.1 Anthony Hyman (1982). Charles Babbage, pioneer of the computer.
- ↑ "A Selection and Adaptation From Ada's Notes found in Ada, The Enchantress of Numbers," by Betty Alexandra Toole Ed.D. Strawberry Press, Mill Valley, CA". Archived from the original on February 10, 2006. Retrieved 4 May 2006.
- ↑ "The John Gabriel Byrne Computer Science Collection" (PDF). Archived from the original on April 16, 2019. Retrieved August 8, 2019.
- ↑ "In this sense Aiken needed IBM, whose technology included the use of punched cards, the accumulation of numerical data, and the transfer of numerical data from one register to another", Bernard Cohen, p.44 (2000)
- ↑ Brian Randell, p. 187, 1975
- ↑ The Association for Computing Machinery (ACM) was founded in 1947.
- ↑ "IBM Archives: 1945". Ibm.com. Retrieved 2019-03-19.
- ↑ "IBM100 – The Origins of Computer Science". Ibm.com. 1995-09-15. Retrieved 2019-03-19.
- ↑ Cite error: Invalid
<ref>
tag; no text was provided for refs namedDenning_cs_discipline
- ↑ "Some EDSAC statistics". University of Cambridge. Retrieved 19 November 2011.
- ↑ "Computer science pioneer Samuel D. Conte dies at 85". Purdue Computer Science. July 1, 2002. Retrieved December 12, 2014.
- ↑ Tedre, Matti (2014). The Science of Computing: Shaping a Discipline. Taylor and Francis / CRC Press.
- ↑ 18.0 18.1 Louis Fine (1959). "The Role of the University in Computers, Data Processing, and Related Fields". Communications of the ACM. 2 (9): 7–14. doi:10.1145/368424.368427. S2CID 6740821.
- ↑ "Stanford University Oral History". Stanford University. Retrieved May 30, 2013.
- ↑ Donald Knuth (1972). "George Forsythe and the Development of Computer Science". Comms. ACM. Archived October 20, 2013, at the Wayback Machine
- ↑ Matti Tedre (2006). "The Development of Computer Science: A Sociocultural Perspective" (PDF). p. 260. Retrieved December 12, 2014.
- ↑ "A Brief History of Computer Science | World Science Festival". World Science Festival. Retrieved 2018-03-20.
Cite error: <ref>
tags exist for a group named "note", but no corresponding <references group="note"/>
tag was found