59
History of Computing Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis, design, efficiency, implementation, and application. The fundamental question underlying all computing is, What can and cannot be automated? (adapted from Denning et. al., “Computing as a Discipline,” Communications of the ACM, January, 1989). CS 1401 (Source: Andrew Bernat)

History of Computing Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

Embed Size (px)

Citation preview

Page 1: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Definition of Computing:

• Computing is the study of systematic processes that describe and transform information: their theory, analysis, design, efficiency, implementation, and application. The fundamental question underlying all computing is, What can and cannot be automated? (adapted from Denning et. al., “Computing as a Discipline,” Communications of the ACM, January, 1989).

CS 1401 (Source: Andrew Bernat)

Page 2: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing

What is Process?

• How we do things

• How we specify what we do

• How we specify what kinds of things we’re processing

CS 1401 (Source: Mark Guzdial)

Page 3: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing What is an Algorithm?

• Precise description of a process

• Specifies exactly what is to be done in what order

• Uses terms that can be completely defined and understood

• Similar to a recipe

• Word algorithm is derived from name of Persian textbook author al-Khowârizmî (approx. A.D. 825)

• Word originally referred to process of using arithmetic computations using Arabic numerals

CS 1401 (Source: Mark Guzdial, Andrew Bernat)

Page 4: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing A goal of computing

If we:

• Develop a computing machine

• Specify a precise algorithm, represent the data used, and devise a way to translate all of this into a language (encoding) that our computing machine can “understand”

Then,

• Our computing machine can accurately, consistently, and more quickly carry out our computation for us

CS 1401

Page 5: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Prehistoric People Groups

• Used fingers for counting, and length of hands and arms for measurements

• Kept track of larger numbers, such as number of animals in herds, using small pebbles

CS 1401

Page 6: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing People of Egypt, China and ancient Babylonia

• By 3000 B.C., had developed written symbols to represent numbers

• Computational methods developed to save labor and solve practical eng., ag., bus., and gov. problems (applied math)

• Applications included measuring time, drawing straight lines, counting money, and computing taxes

• Developed tables for multiplication, square and cube roots, exponents, formulas for quadratic equations

• Babylonians and Egyptians not systematic reasoners; trial-and-error methods not always precise

CS 1401 (Source: Andrew Bernat)

Page 7: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing

Practical examples of geometry in ancient Egypt

• Land surveying and navigation

• Egypt was the “bread basket” of the world

• Annual Nile River flooding fertilized plains but made it difficult to mark property

• Geometry used to survey fields and reestablish property boundaries

• Navigation required for food distribution

• Building of pyramids required extensive measurements

CS 1401

Page 8: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Greece

• Between 600 and 300 B.C., inherited mathematical knowledge from Egypt and Babylon

• Were the first to separate study of mathematics from application to practical problems

• Developed foundation of formal logic: stated formal axioms, precise definitions, and patterns of valid reasoning

• Pythagoras, Euclid, Archimedes, Ptolemy, and others developed extensive knowledge of geometry, trigonometry, algebra, astronomy and physics

CS 1401

Page 9: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Aristotle’s modus ponen example:

If a student is a CS major, then the student takes CS 1401.

You are a CS major.Therefore, you take CS 1401.

Notice that the reasoning is valid, but this does not assure that the statements in the argument are true

CS 1401

Page 10: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Rome

• Applied mathematics to practical tasks in business, civil engineering, and military work

• Had little interest in study of pure mathematics

CS 1401

Page 11: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Middle Ages

• No new mathematical advances in Europe for hundreds of years after fall of Rome in 476 A.D.

• Arabs preserved mathematical knowledge developed by Greeks and Romans and expanded algebraic concepts

• Concept of zero and decimal number system developed in India and used by Arabs

• After 1100, growing commerce in Europe required an easier numbering system for merchants than Roman numerals

• Europeans started using decimal number system and studying Arabic mathematical texts

• During late Middle Ages, European mathematicians such as Fibonacci contributed to algebra and geometry

CS 1401

Page 12: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Renaissance

• From 1400’s to 1600’s exploration of new lands required improved mathematics to support navigation, development of capitalism, and trade

• Invention of mechanical printing press allowed rapid spread of new math texts

CS 1401

Page 13: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Renaissance

• What was an important contribution of Francois Viète (1540-1603) ?

CS 1401

Page 14: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Renaissance

• What was an important contribution of Francois Viète (1540-1603) ?

• Francois Viète introduced the use of letters to stand for unknown numbers in formulas and equations (use of variables, important in computer science)

• Example:

c2 = a2 + b2

CS 1401

Page 15: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Renaissance

• What was an important contribution of John Napier (1550-1617) ?

CS 1401

Page 16: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Renaissance

• What was an important contribution of John Napier (1550-1617) ?

• Scottish mathematician John Napier invented logarithms that took advantage of fact that addition is easier than multiplication: log (a * b) = log a + log b

• Logarithms are inverse of power function: log2 8 = 3 because 23 = 8

CS 1401

Page 17: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Renaissance

• Do you know what a slide rule is?

CS 1401

Page 18: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Here’s Robby the Robot holding a giant-sized slide rule:

CS 1401

                                                                                                                                                                                                       

          

Page 19: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing But the actual size was hand-held, with a middle sliding

rule:

CS 1401

                                                                                                                                                                                                       

          

Page 20: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Renaissance

Facts about the slide rule:

• Edmund Gunter (1581-1626) invented forerunner of slide rule in 1620. Slide rule invented around 1630.

• Slide rule is ruler-like device marked with logarithmic scales used to perform mathematical calculations.

• Slide rule used extensively for mathematical calculations by students, engineers, scientists, military, and others until largely replaced by hand-held calculators, starting with HP models in 1970’s

CS 1401

Page 21: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Renaissance

• Galileo (1564-1642) worked on mathematical applications in physical sciences

• Rene Descartes (1596-1650) developed analytic geometry

• Who designed and built what is believed to be the first digital calculator?

CS 1401

Page 22: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Renaissance

• Who designed and built what is believed to be the first digital calculator? Wilhelm Schickard, in 1623

• Automated addition and subtraction; partially automated multiplication and division

• Blaise Pascal (1623-1662) developed version of mechanical calculator called “Arithmometer” about 20 years later; just added and subtracted

• Modern computer programming language named after Pascal

CS 1401

Page 23: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Renaissance

• Who was a co-inventor of calculus along with Sir Isaac Newton?

CS 1401

Page 24: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Renaissance

• Who was a co-inventor of calculus along with Sir Isaac Newton? Gottfried Wilhelm Leibniz (1646-1716)

• What did he state about machines assisting with the work of calculation?

• Invented the Leibniz wheel based upon Pascal’s work, which performed arithmetic automatically

• Investigated binary arithmetic and proposed machine testing of hypotheses

CS 1401

Page 25: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing 1700’ and 1800’s

• Who was Charles Babbage (1791-1871) ?

CS 1401

Page 26: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing 1700’s and 1800’s

• Who was Charles Babbage (1791-1871) ?

• A founding member of the British Royal Astronomical Society • In 1800’s England’s sea power required accurate computations for

calculating cannon shots from moving ships• Babbage developed concept for steam-powered “Difference

Engine” in 1821 to produce math tables• Developed concept for “Analytical Engine,” designed to be

general device for any kind of calculation and symbol manipulation

• Similar in concept to modern computers, “Analytical Engine” designed to use punch cards; unfortunately, working model never completed

CS 1401

Page 27: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing 1700’s and 1800’s

• Where did Babbage get the idea of using punch cards? From Joseph-Marie Jacquard of France

• Many inventions during Industrial Revolution led to automation of tasks formerly done by hand

• Jacquard invented automatic loom in 1804, improving on earlier punch card concept

• Holes in card controlled which doors opened or closed for thread patterning

• Similar cards with holes punched to represent data developed for use by modern computers

CS 1401

Page 28: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Jacquard Loom:

CS 1401

Page 29: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Computer punch card:

CS 1401

Page 30: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing 1700’s and 1800’s

• Why did the U.S. DOD name the new programming language it developed in 1979 “Ada” ?

CS 1401

Page 31: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing 1700’s and 1800’s

• Why did the U.S. DOD name the new programming language it developed in 1979 “Ada” ?

In honor of Ada Byron, Lady Lovelace , the first “computer programmer”

• Daughter of the famous English poet Lord Byron, and trained in mathematics and science

• Became colleague of Babbage after hearing about his ideas for “Analytic Engine” at a dinner party

• Predicted in 1843 many uses for engine and developed first “programs” for it

CS 1401

Page 32: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing

What was George Boole’s (1815-1864) important contribution to the field of computer science?

CS 1401

Page 33: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing

What was George Boole’s (1815-1864) important contribution to the field of computer science?

Answer: Boolean expressions

A largely self-educated Englishman, Boole worked on identifying fundamental operations, variables, and symbolic representations of both

Introduced and studied expressions that had only two values: 1 for “true”

0 for “false”

CS 1401

Page 34: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing

Boole’s ideas became foundation for logic study

Concepts are basis for arithmetic-logic circuitry design in digital computers

CS 1401

Page 35: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Late 1800’s and 1900’s - Herman Hollerith

• Considered father of modern automatic computation

• Worked on 1880 U.S. census and saw need for mechanization of recording and tabulating process as immigration increased

• Won design competition for 1890 census by inventing equipment to tabulate and sort punched cards similar to ones used on Jacquard loom

• Founded company Computing-Tabulating-Recording Company (CTR) that later changed name to IBM in 1924

CS 1401

Page 36: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Late 1800’s and 1900’s - Herman Hollerith (cont’d.)

• In Hollerith’s own words (“An Electric Tabulating System,” 1889):

“Few, who have not come directly in contact with a census office, can form any adequate idea of the labor involved in the compilation of a census of 50,000,000 persons, as was the case in the last census, or of over 62,000,000, as will be the case in the census to be taken in June, 1890… Although our population is constantly increasing, and although at each census more complicated combinations and greater detail are required in the various compilations, still, up to the present time, substantially the original method of compilation has been [-239-] employed; that of making tally-marks in small squares and then adding and counting such tally-marks. While engaged in work upon the tenth census, the writer's attention was called to the methods employed in the tabulation of population statistics and the enormous expense involved. These methods were at the time described as "barbarous…” Some machine ought to be devised for the purpose of facilitating such tabulations.”

CS 1401

Page 37: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing 1900’s Question: Is it possible to state one consistent

system of logical/mathematical axioms from which all mathematics can be derived?

Or…..

Are there mathematical problems that are inherently unsolvable? (Is there a limit to how far the systematic reasoning methods first developed by the ancient Greeks can take us) ?

CS 1401Source: Andrew Bernat

Page 38: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing 1900’s Question: Is it possible to state one consistent

system of logical/mathematical axioms from which all mathematics can be derived?

Answer: Mathematician David Hilbert (1862-1943) thought so. He proposed the existence of such a system for which all mathematics could be derived

Are there mathematical problems that are inherently unsolvable? (Is there a limit to how far the systematic reasoning methods first developed by the ancient Greeks can take us) ?

Answer: Kurt Godel (1906-1978) proved in 1931 that a sufficiently general formal system either must be inconsistent or must contain statements that can’t be proved or disproved.

CS 1401Source: Andrew Bernat

Page 39: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Mathematics were revolutionized

Mathematicians and logicians worked to define exactly what it means when they say they have a method to solve a problem.

One very influential answer came from Alan Turing. (1912-1954)

What is Alan Turing famous for?

CS 1401Source: Andrew Bernat

Page 40: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing What is Alan Turing famous for?

Answer: Turing machine

Turing defined an “effective computation” as a specific kind of “abstract machine”

Became a major development in field of computing

Greatest impact was on design of digital computer

CS 1401Source: Andrew Bernat

Page 41: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing Late 1800’s-1900’s New Applications Drive Advances in

Computing Design

• Leonardo Torres y Quevedo (1852-1936), President of Academy of Sciences in Madrid , proposed chess-playing electromechanical version of Babbage’s machines

• New scientific uses developed for Hollerith’s punched-card tabulating machine , such as calculating position of moon

• Astronomer Wallace J. Eckert (1902-1971) recognized need for more scientific capability; proposed several extensions to IBM tabulating machine

CS 1401Source: Andrew Bernat

Page 42: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing 1900’s - Four new computing capacities identified

by Howard T. Aiken (1900-1973). Ability to:

• Handle positive and negative numbers• Apply various mathematical formulas• Operate fully automatically• Perform long calculations in sequence

CS 1401Source: Andrew Bernat

Page 43: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing 1900’s -

“Mark I” is not a missile. What is it?

CS 1401Source: Andrew Bernat

Page 44: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing 1900’s -

“Mark I” is not a missile. What is it?

Answer: A computing machine designed and built in 1944 by Aiken and his engineers in collaboration with IBM engineers.

• Instructions written on paper tape• Could multiply 2 numbers in 6 seconds !• Similar machine built by Bell Labs

CS 1401Source: Andrew Bernat

Page 45: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing 1900’s -

How was a graduate student instrumental in linking the theory of computation and the design of computing machines?

CS 1401Source: Andrew Bernat

Page 46: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing 1900’s -

How was a graduate student instrumental in linking the theory of computation and the design of computing machines?

Answer: Claude E. Shannon, in master’s thesis at MIT, showed how Boolean algebra could be used to analyze complex switching circuits• Pioneered systematic approach to design of switching

circuits

CS 1401Source: Andrew Bernat

Page 47: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing 1900’s -

The first fully electronic digital computer was named “ABC.” Why?

CS 1401Source: Andrew Bernat

Page 48: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing 1900’s -

The first fully electronic digital computer was named “ABC.” Why?

Answer: Atanasoff Berry Computer• Built in 1940 by John V. Atanasoff (1903- ), prof. at

Iowa State University and grad. Student Clifford E. Berry

• Used vacuum tubes and binary arithmetic• Influenced design of ENIAC

CS 1401Source: Andrew Bernat

Page 49: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing 1900’s -

• First modern computers developed in 1940’s

• Government and military requirements drove many early advances in computing:

- Accurate artillery tables needed for WWII, 1939-1945

- Automatic computations needed for atomic bomb development

• Increasingly larger and more powerful computing machines were developed

CS 1401

Page 50: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing 1900’s – What is ENIAC ?

• Electronic Numerical Integrator and Computer, world’s first electronic digital computer, developed by Army Ordnance to compute WWII ballistic firing tables

• Completed in 1945, served as prototype for development of most other modern computers

• Weighed over 30 tons, and stored a maximum of twenty 10-digit decimal numbers

• Included logic circuitry design now standard in computers

CS 1401

Page 51: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing 1900’s – ENIAC

CS 1401

Page 52: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing 1954 - IBM's Naval Ordinance Research Calculator, the first

“supercomputer”

CS 1401

Page 53: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing 1954 – Tubes in IBM's NORC

CS 1401

Page 54: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing 1900’s – Who was John von Neumann (1903-1957) and

what are characteristics of a von Neumann machine?

CS 1401

Page 55: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing 1900’s – Who was John von Neumann (1903-1957) and

what are characteristics of a von Neumann machine?

• Famous Princeton University mathematician interested in both logic design and applied math

• Investigated complex problems in fluid flow requiring intensive calculations

• Developed characteristics of modern computers, which became known as von Neumann machine

• Began working with ENIAC project in 1944

• Took responsibility for logic design of new machine (EDVAC) planned to correct some of ENIAC’s shortcomings; created detailed instruction set

CS 1401

Page 56: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing 1900’s - Some of von Neumann’s Contributions (“von

Neumann machine”)

• Notation for describing logic aspects of computer circuitry

• Concept of stored program (program and data can be stored in memory; first program sorted and merged numbers in list)

• Concept of serial operation, one step at a time, simplifying circuitry (now going in direction of parallel processing)

• Use of binary arithmetic rather than decimal

CS 1401

Page 57: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing

1900’s and Beyond: Hardware Generations

• Can you describe five generations?

CS 1401

Page 58: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing

1900’s and Beyond: Software Generations

• Early machines – machine language

Ex: 10100101

• Early 1950’s assembly languages (symbolic )

• Late 1950’s and early 1960’s high-level languages.Ex:

• FORTRAN (formula translator), John Backus,1954

• COBOL (common business-oriented language), Grace Murray Harper and others, 1960

• Pascal (Nicklaus Wirth, 1970)

CS 1401

Page 59: History of Computing  Definition of Computing: Computing is the study of systematic processes that describe and transform information: their theory, analysis,

History of Computing

1900’s and Beyond: Software Generations

• Move from procedural languages to object-oriented languages

• C C++

• C++ developed at Bell Labs starting in 1979 (named in 1983), “C with Classes”

• Java (James Gosling and others at Sun Microsystems) developed early 1990’s, released 1995; platform independence lent itself to Internet use

CS 1401