June 26: Introduction; History
What's this course about?
Your perspective?
- What is a computer?
- What is computer science?
- Why do you care?
Some thoughts
- Brian Kernighan: universality
- Numbers are a universal representation (music, pictures, books)
- Computers are universal number processors
- The internet is a universal number carrier
- Universal gadgets: cell phone = computer with radio, iPod = computer with headphones, ...
- Sean Smith: A liberal arts education centers on thinking and knowledge. CS is the study of the physical embodiments of thinking and knowledge.
- General consensus: Fun! Freedom! Creativity! Make things happen that otherwise just couldn't! Learn to communicate a process precisely!
- Invitation to Computer Science: some misconceptions about CS
- not just about the machines (just like biology is not just about the microscopes), but also what can we do with them
- not just about programming, but also about the stuff leading up to it (analysis and design) and following it (testing)
- not just about applications (just like automotive engineering is not about driving cars)
What we'll cover
- How do we represent information?
- How do we compute with those representations?
- How do we make a program do those computations?
- How does a computer carry out that program?
- What can a computer do and not do?
- What can we do with computers?
Administrative stuff
See http://www.cs.dartmouth.edu/~cbk/4/ for
- Who, when, where
- Requirements: homeworks, exams
- Policies: follow the honor code
- Schedule
Some history
Calculation: mechanical
Abacus, circa 3000 B.C.: addition, subtraction, multiplication, division
- Information stored in positions of beads.
Blaise Pascal's "Pasacline", 1642 (he was 18): addition
- Information stored in positions of gears.
- Upon cranking, rods and meshing gears transferred information.
Gottfried Wilhem von Leibniz, 1694: extended Pascal's design to include multiplication.
Charles Xavier Thomas de Colmar, 1820: invented the arithometer that could add, subtract, multiply and divide.
Programmable: punch cards
Joseph Jacquard (1752-1834): punch card loom
- Holes punched in a card controlled movement of the warp strings.
- Cards described patterns and the looms cycled through the cards.
- Encoded knowledge of master weaver, for automation.
- Software piracy: competing manufacturers would steal card decks.
Charles Babbage (1792-1871): Difference Engine (1820s)
- Could perform many arbitrary sequences of arithmetic, in some cases to as many as 31 digits of precision.
- The Kensington Science Museum built a replica of the Difference Engine
in the 1990s.
Babbage, with Lady Ada Lovelace: designed (but never completed) first general purpose computer, the steam-powered Analytical Engine.
- Included 50,000 components, input device (perforated cards) containing instructions, memory (1,000 numbers), a control unit that allowed instructions to be processed in any order, and an output device.
- Lady Lovelace (daughter of the poet Lord Byron) helped develop a "program" for computing a sequence of Bernoulli numbers.
Herman Hollerith (1860-1929): 1890 census via punch card tabulator.
- Estimates said it would take 8 to 9 years by hand; machine helped do it in 6 weeks.
- Tiny wires detected the presence or absence of holes.
- His company eventually became known as IBM.
Let's get digital
Mark I, 1945 ($200,000): sines, cosines, logs, and basic arithmetic.
- Harvard's Howard Aiken (1900-1973) helped design it after finding a model of Babbage's difference engine sitting in an attic.
- 51 feet long, 8 feet high and 2 feet wide; over 10,000 pounds.
- About 5 operations per second.
ENIAC, 1944: artillery shell trajectories
- Roughly 18000 vacuum tubes, weighed 30 tons, dimmed lights in section of Philadelphia.
- Up to 5000 additions per second.
The CPU
- John von Neumann (1903-1957) simplified the model.
- One "central processing unit" would do the calculation.
- The program would be stored in memory and fed into the CPU to tell it what to do.
- No need to replug wires or rewire the machine; no more wiring
"bugs".

- But the word "bug" stuck. Grace Hopper started using it to refer to correcting ("debugging") programs.
- Beginning of software.
Quotes about where computers are heading:
"I think there is a world market for maybe five computers."
--Thomas Watson, IBM chairman, 1943
"Computers in the future may weigh no more than 1.5 tons."
--Popular Mechanics, 1949
The modern era
Transistor (1956): replace vacuum tubes; smaller, faster, more reliable
- IBM Stretch: 50,000 ops/sec, $3.5 million

Programming languages (1960s): COBOL, FORTRAN, LISP
- High-level languages make it easier and faster to program computers; "compilers" convert to machine-understandable code.
- At Dartmouth, John Kemeny and Thomas Kurtz invented BASIC.
- Somewhat later, a man by the name of Bill Gates got his start making BASIC available for an early personal computer.
Integrated circuits (1960s): multiple transistors per chip
- 100,000+ ops/sec.
- "There is no reason anyone would want a computer in their home." --Ken Olson, president, chairman and founder of Digital Equipment Corp., 1977
Personal computers (1970s): Apple, Commodore, Radio Shack
- 1,000,000+ ops/sec.
- 1981: IBM PC
1984: Macintosh (Mac 1984 commercial)

Internet
- 1969: first ARPANET communication (Stanford Research Institute and UCLA); total of 4 nodes (also UCSB and Univ. Utah)
- email: 1971: first message; 1972: "at" sign; 1976: QEII; 1978: spam
- rapid growth

- 1990/91: www, by Berners-Lee (CERN) for sharing hypertext documents among scientists;
for view from 1996-, search wayback machine
Applications
- word processing (70s & 80s, esp. after GUI)
- spreadsheet (1979: Visicalc): killer app for business
- games: drive a lot of the development
Where are we now?
CS to automobile industry: if we made cars,
- They would cost $1.
- They would go 20,000 mph
- They would get 1,000,000 miles per gallon.
(Invitation to Computer Science, p. 28, analogous rate of change from 1909 Model T)
Automobile industry back: but,
- They would crash twice a day for no reason.
- You would need a new car every time they repainted the lines on the road.
- If it stalled, you would need to open and close the passenger's window three times, twist the radio knob to the left for a quarter turn, turn the air conditioner on full blast, and then it would restart.
- Airbags would ask, "Are you sure?" before proceeding.
- You would press the "start" button to turn it off.
(Folklore from multiple sources.)
Where are we going?
Moore's law: processor complexity doubles every 18-24 months. [some examples]
(Image from Wikimedia Commons)
Also exponential groth of internet.
Computers getting faster, smarter, smaller; being used everywhere for everything, ....