Concepts in Computing
CS4 - Winter 2007
Instructor: Fabio Pellacini

Lecture 1: Introduction

Welcome

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 (ICS): 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)
    Also a precise definition of what it is, centered on the idea of an "algorithm", or step-by-step method for accomplishing a task.

What we'll cover

(see also the schedule page)

  • 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/~fabio/teaching/cs4-winter07/ for

  • Who, when, where
  • Requirements: homeworks, exams
  • Policies: follow the honor code
  • Schedule

A brief history of computing machines

Also check out the wikipedia page.

Calculation: mechanical

Abacus, circa 3000 B.C.: addition, subtraction, multiplication, division

  • Information stored in positions of beads.

Blaise Pascal's "Pascaline", 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

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.

(ICS, 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.

Computers everywhere (ubiquitous)