Class 55: History of Computing (2)
Held Wednesday, May 12
Summary
- A history of pre-computer computing
- Computing since computers
- Some social implications
Contents
Handouts
Notes
- Any questions on the exam?
- Remember that it's due on Friday.
- I got a question on binary search trees. The idea is that the tree organizes the information in such a way that it's easy to do binary search.
Recall that binary search is something like
binarySearch(Object thingToSearchFor, Collection stuffToSearch)
if stuffToSearch is empty, return false
Look at the "middle" element of stuffToSearch
if thingToSearchFor equals the middle element of stuffToSearch then
return true
else if thingToSearchFor is less than the middle element then
binarySearch(thingToSearchFor, stuffToSearch.smallerThanMiddle())
else // thingToSearchFor is greater than the middle element
binarySearch(thingToSearchFor, stuffToSearch.largerThanMiddle())
We use a "node" to represent the three options: it contains
the "middle" value, a reference to another binary search tree that
contains the smaller values (the left subtree) and a reference to
another binary search tree that contains the larger values (the right
- Don't forget that evaluation forms are also due on Friday.
- Essays, projects, and everything else are due Friday, May 21.
- Don't forget the picnic on Friday afternoon.
- Some links:
- There is a new special topics course this Fall, to be taught by the
new Noyce visiting professors (the Morrisons). Here's the info
I received.
50788 SCI195.01 Special Topic: In Black and White - Shadows
and Beyond
This short course will be taught jointly by the Morrisons. It will be taught
in Science 1420 (MWF 8:30-10:00) beginning Monday, Sept. 13 and ending
Friday, Oct. 8.
This will be largely a studio couse, with class time, field and lab work.
There are no prerequisites and the Morrisons would like to have as diverse
[a] group as possible. Small groups of students will work on projects
reflecting their interests. It is hoped that Robert Miller, San Francisco
artist associated with the Exploratorium, will assist during the first
few days. The course will move from an exploration of real-world phenomena
to consideration of some physical principles -- the geometry and intensity
of shadows, the camera as shadow box, etc.
- Ancient Greece, Babylon, China, etc (a few hundred BCE)
- First algorithms. E.g., Euclid's algorithm for computing
greatest-common-factors, Eratothenes sieve method for computing
primes.
- Early aids to computation. E.g., abacus.
- Early common era
- Early ``hypertexts''. E.g, the Talmud.
- 1500s - 1700s.
- Slide rule as computational aid (John Napier).
- First automated/mechanical calculators designed by Pascal and
Leibniz.
- Printing press permits publication of ``computational tables''
(e.g., logarithm tables).
- 1800s.
- Jacquard invents ``automated loom'' controlled by punch cards.
Permits encoding of expert knowledge of weaving. (c. 1801)
- Babbage designs ``difference engine'' for computation of tables.
(c. 1820's).
- Babbage designs ``analytical engine'' for general purpose computation.
- Lady Augusta, Countess Lovelace, designs programming language and
writes programs for nonexistent analytical engine.
- 1880 census takes seven years to compute. 1890 census predicted
to be impossible to compute.
- Hollerith devises electromechanical counting machine for census.
Basics of 1890 census computed in six weeks. Hollerith's company
eventually becomes IBM.
- Early 1900's.
- 1920's. Vannevar Bush develops large scale analog calculator for
computing projectile trajectories.
- 1930's. Zuse develops a series of electromechanical computing
devices. Turing publishes paper on what is computable.
- Early 1940's. First long-distance computation done at Dartmouth.
- 1940s.
- Colossus, first electronic computer, used in Britain for breaking
German codes.
- Harvard Mark I is first fully automatic computer.
- ENIAC is first programmable electronic computer.
- Transistor invented at Bell labs. Grant Gale at Grinnell gets one
of the first transistors to show in his physics classes.
- Vannevar Bush writes ``As We May Think'' (published in Atlantic
Monthly), an article on a system
he has designed for organizing and linking information. Perhaps first
mechanical hypertext system. The paper eventually inspires a number
of great developments in computing.
- 1950s.
- Clif Flynt born (Clif said he lived through it all, so I thought
I'd put him in here).
- Noyce contributes to development of integrated circuit.
- First graphical output computers at MIT.
- Growth of Digital Equipment Corporation: ``It's a personal data
processor and not a computer'' (emphasis mine).
- Movement of computing towards business applications begins
(continues?).
- Turing designs ``Turing Test'' for artificial intelligence.
- 1960s.
- Ted Nelson coins the term hypertext.
- MIT hackers develop SpaceWar, perhaps first videogame (1962)
- Eliza, an automated ``psychotherapist''. See
http://www.friendlyware.com/Ella1_0.shtml for
an online example.
- Time sharing developed. More than one person can use a computer
at a time!
- ARPANET developed for communication between computers. Quickly
grows into system for human communication.
- 1970s.
- Graphical user interfaces and the mouse developed partially in
response to Bush's paper.
- Pong!
- Textual adventure games.
- Personal computers (late 70's, still mostly ``geek devices'').
- VisiCalc: first spreadsheets. Led to the growth of personal computers
in business.
- 1980s.
- First true GUIs on personal computers.
- Continued growth in video games.
- More networking.
- ARPANET retargeted as Internet.
- Macintosh released. Computer as personal appliance.
- 1990s
- The Web (early 1990).
- Enormous growth.
- As one might guess, the growth of computing has had a tremendous
impact on society, particularly because computing has grown
more quickly than almost any technology.
- How has it impacted society? In many ways.
- Computing permits us to gather and analyze much larger data
sets than ever before. (
- The growth of computing has led many to rely on computers and
their algorithms for things previously done by hand. At times,
this is good (it can prevent bias), but frequently it is bad
(it ignores many things that can't be quantified or automatically
processed). For example, consider a ``computerized judge''.
Such a thing might be race-blind. It might also forever
store contemporary biases (including race-based biases).
- Computing and the Web have led us to ask many new questions about
intellectual property.
- Computer programs have been called ``the most complex man-made
objects''. How do we handle that complexity and the likely errors
associated with that complexity? In fact, there are some algorithms
that ``build themselves''. What can we say about such things?
- Because computing can challenge some expectations, there are many attempts
to legislate computing. For example, it may be considered a felony
to export an encryption algorithm and many legislators are attempting
to control what information appears on the Web.
- Computing can both narrow and increase the barriers between classes,
nationalities, races, etc.
- Networks, computing, and particularly the World-Wide Web are forcing
many to rethink notions of information, particularly with regards to
intellectual property laws (copyright, patent, etc.) and the
veracity and usefulness of information.
- For example, many complain that little of the information on the Web is
refereed or edited in any way. Unfortunately, some people believe
``if it's in printed form (or on the Web) it must be true''.
- How do we teach people about ``levels of accuracy''?
- If someone writes an incorrect set of instructions for doing
X (e.g., picking a college), are they responsible
if someone else uses them and suffers the consequences?
- If another site links to the incorrect information (e.g., on
``The Official Xylinks Magazine List of Recommended College
Tips''), is the linker responsible for the incorrect information?
- Of course, it's never been clear to me why people think that print
is much better about accuracy. Amateur 'zines have existed for a
long time (certainly as far back as the broadsides of the
revolution) and much of what appears in print is still biased
according to the knowledge, limitations, or even goals of writers,
editors, and publishers.
- Another example has to do with linking and copyright.
- Is it (or should it be) a violation of copyright to make a document
containing a
link to another URL? Most would say no, as we have a tradition
of writing things like ``for more information, see ...''.
- Is it (or should it be) a violation of copyright to follow a link to
a document?
Again, most would say no, as the standard on the Web is ``if a link
to a document works, the provider of the document expects me to
be able to read the document''.
- Is it (or should it be) a violation of copyright to include an image
tag that links
to another site? For example, if I create a page at Grinnell, can I
include an image from Dartmouth, even if I don't copy the image but
instead write code that says ``Put this image from Dartmouth at this
point in my page?'' This is less clear, as it seems like a link, and
the actual downloading of the image is done by the reader. However,
the image appears within the Grinnell page, making it seem like the
property of Grinnell, rather than Dartmouth.
- Is it (or should it be) a violation of copyright to save a copy
of an image or file I obtained from the Web on my local disk, given
that I don't allow anyone else to access it? Note that most
browsers do this automatically. Does it make a difference whether
the saving is explicit or implicit?
- Is it (or should it be) a violation of copyright to print a page
from the Web?
- Is it (or should it be) a violation of copyright to modify a page
from the Web (provided the modified version is only for your own
use)? How is this like cutting up a magazine you buy? How is it
different?
- To return to our first two questions, consider the following links
to an archive of comic strips.
http://www.creators.com/comics/compage/obh.asp
http://www.creators.com/comics/compage/obh/obh51599.gif
as you may note, even though the ``main'' page limits access to
strips from over two weeks ago, the second link is to a strip not
yet published.
- These days, there are also many questions of deception, intentional
and unintentional.
- The Princeton Review once purchased the domain name
kaplan.com and used it to advertise their
services.
- If I purchase the domain name
grinnell.edu or
grinnell.com and write about a fictitious
Grinnell University, am I impinging upon the rights of Grinnell
College?
- I've been told that there were three ``front doors'' for Bob Dole before
the last election. None was authorized.
- There are also many questions of internationalization.
- What happens when one government tries to control the Web (as
ours tends to do)?
- Does the Web promote the ``Americanization'' of the world?
- Many also worry about issues of access, particularly for the disabled.
- There are screen-readers, but they require particular layouts and
can't usually read images.
- Clearly, one of the biggest issues relating to the social impact of
computing is the legendary ``Y2K'' (year 2000) problem.
- What is the problem? The problem is that many computer programs
(implementations of algorithms) represent dates using only the last
two digits. When the year reaches 2000, programs are likely to get
confused.
- Is ``00'' before or after ``95''? It's important for computing
interest, computing people's ages, and such.
- You might think ``but dates are just numbers, why does it matter
how many digits you use''?
- Unfortunately, while it should have been practice to use 19xx as
the internal represenation (the number the computer uses), even if
xx was the external representation (the number we see on the
screen), most programmers didn't make the leap.
- You might think ``but it's easy to tell whether something is a date,
and if it is, just put the 19 before it''.
- However, consider something like the following code intended to
``give older people a special benefit'':
if (foo > 59) then
specialBenefit = 10;
else
specialBenefit = 0;
- Is this ``if someone is older than 59''?
- Is this ``if someone is born after 1959''?
- Only rigorous inspection of the program can tell us (and it
can't always tell us).
- You might say ``can't we just set the clock forward, and see what
happens''?
- Testing every possible circumstance isn't possible.
- Some clocks can't be set forward. Consider the computer chips that
are embedded in other systems (cars, oil rigs, ....).
- The costs of identifying such problems have been enormous (and it's
clear that we haven't caught them all).
- Is anyone at fault?
- Programmers were often given specifications that said that the program
only needed to work for N years.
- The contractors that hired them were given similar specifications.
- How much havoc will this cause? No one knows.
- Some experts believe we'll have a day or two of minor trouble.
- Some believe that it will be months of severe trouble.
- Some believe that it will be years of minor trouble.
- Some believe that we'll all die, and it won't matter how long it
takes to fix it. (The former Soviet union is reputed to have an
emergency retaliation system that automatically fires missiles if
communication is lost. No one knows whether it's sensitive to
Y2K problems. Given the current financial state of Russia, it's
not clear that anyone is looking into it.
- Some students and faculty at Dartmouth have put together a nice set
of pages reflecting on particular implications. You can also follow
links to other articles.
My notes on the history of computing are based on a variety of sources
and experiences, not all of which are things I've seen, used, or heard
recently. Recent and remembered sources include:
- A collection of short historical videos from the Boston Computer
Museum.
- Jon Palfreman and Doron Swade (1991). The Dream Machine: Exploring
the Computer Age. BBC Books.
- Steve Ditlea, ed. (1984). Digital Deli: The Comprehensive,
User-Lovable Menu of Computer Lore, Culture, Lifestyles, and Fancy.
Workman Publishing.
- Rick Decker and Stuart Hirshfield (1998). The Analytical
Engine: An Introduction to Computer Science Using the Internet.
International Thomson Press.
My notes on social issues in computing are based on a variety of sources
and experiences, not all of which are things I've seen, used, or heard
recently. Recent and remembered sources include:
- Sara Baase (1997). A Gift of Fire: Social, Legal, and
Ethical Issues in Computing. Prentice-Hall.
- Rick Decker and Stuart Hirshfield (1998). The Analytical
Engine: An Introduction to Computer Science Using the Internet.
International Thomson Press.
- Richard G. Epstein (1997). The Case of the Killer Robot.
John Wiley and Sons.
- Peter G. Neumann (1995). Computer-Related Risks. ACM Press /
Addison-Wesley.
History