History of computer science
The history of computer science began long before the modern
discipline of computer science that emerged in the 20th century and
hinted at in the centuries prior. The progression, from mechanical
inventions and mathematical theories towards the modern computer
concepts and machines, formed a major academic field and the basis of a
massive worldwide industry.

The earliest known tool for use in computation was the abacus
developed in 2700-2300 BCE in Sumer. The Sumerians' abacus consisted of
a table of successive columns which delimited the successive orders of
magnitude of their sexagesimal number system.
Its original style of usage was by lines drawn in sand with pebbles.
Abaci of a more modern design are still used as calculation tools today.
The Antikythera mechanism is believed to be the earliest known
mechanical analog computer.
It was designed to calculate astronomical positions. It was
discovered in 1901 in the Antikythera wreck off the Greek island of
Antikythera, between Kythera and Crete, and has been dated to c. 100
BCE.
Technological artifacts of similar complexity did not reappear until
the 14th century, when mechanical astronomical clocks appeared in
Europe.
When John Napier discovered logarithms for computational purposes in
the early 17th century, there followed a period of considerable progress
by inventors and scientists in making calculating tools. In 1623 Wilhelm
Schickard designed a calculating machine, but abandoned the project,
when the prototype he had started building was destroyed by a fire in
1624. Around 1640, Blaise Pascal a leading French mathematician,
constructed a mechanical adding device based on a design described by
Greek mathematician Hero of Alexandria.
Then in 1672 Gottfried Wilhelm Leibnitz invented the Stepped Reckoner
which he completed in 1694.
In 1837 Charles Babbage first described his Analytical Engine which
is accepted as the first design for a modern computer.
The analytical engine had expandable memory, an arithmetic and logic
processing capabilities able to interpret a programming language with
loops and conditional branching.
-Internet |