*"Computer science is no more about computers than
astronomy is about telescopes."*

**E. W. Dijkstra**

**Extrinsic
Useful Material:**

**Specific
Course Material**

**Index:**

- Algorithms and Ancient Machines
- Algorithms and Modern Machines
- Processing Numbers
- Processing Text
- Processing Images
- Computational Geometry
- Searching Data Bases
- Computers as Models of Brains and Intelligence
- Computers in Statistics and Exploratory Data Analysis
- Computer Vision
- Network Security
- Computer Graphics and Visualization
- Philosophical, Ethical and Social Implications of Computers

- Computers: From the Past to the Present
- A History of
Information Technology

- Modular Arithmetic with Ashtrays and Pebbles
- Gravity as a Computer
- The Knotted String Computer
**Pythagoras' Theorem:**- Pythagoras' Theorem (An award winning proof and interactive demo)
- Animated Proof of the Pythagoream Theorem by M. D. Meyerson
- A Hinged Dissection Proof of the Pythagorean Theorem
- Other Dissection Proofs (with interactive Java applets)
- The Chinese Square Proof of the Pythagorean Theorem
- Two dozen other proofs of the Pythagorean theorem
- The Converse of Pythagoras' Theorem
- The Abacus
- Napier's Bones in Various Bases
- The Virtual Museum of Computing
- Links to History of Computing
- Euclid's Elements
- Euclid of Alexandria
- More Euclid on the Web
- Relative computing power of machines
- Heron's Shortest Path via a Line (with interactive Java applet)
- More on Heron's problem and other constrained shortest path problems (with interactive Java applets)
- More about Heron of Alexandria
- The Lunes of Hippocrates

- The Turing machine
- Computability theory
- Binary Numbers
- Error correcting codes
- Logic gates
- How logic gates add 2 + 3
- Boolean logic
- Boolean logic gates
- Boolean gates and adders
- Boolean Algebra
- More Boolean Algebra
- Logic and Boolean algebra
- Searching the Web with Boolean logic
- More about George Boole
- Computational Complexity
- Big "O" Notation
- Polynomial complexity
- Exponential complexity and the Towers-of-Hanoi puzzle

- What is a Number?
- Elementary number theory
- Numbers: Real, rational, integer and binary numbers (bits and bytes)
- Floating Point Numbers
**Newton's Method:**- The Euclidean factorization algorithm
**Prime Numbers:**

**3.2 Creating Order**

**Sorting Numbers:**- Selection sort tutorial
- Bubble sort tutorial
- Heap sort tutorial
- Merge sort tutorial (Divide and Conquer)
- Sorting Algorithm Animations (Applets also sort your own set of numbers!)
- More Sorting Algorithm Animations
- Sorting Code
- Probability and Random Number Generation
**Monte Carlo Simulation:**- Randomness
and the
*Netscape*browser

- Data compression
- Introduction to Data Compression
- Fundamental Concepts
- Shannon-Fano Coding
- More about Claude Shannon
- The Significance of Claude Shannon's Work
- Pictures of Shannon
- More about Robert Fano
- Huffman coding
- More About David Huffman
- Morse Code
- Introduction to probability and information theory
- Entropy
- Markov models of natural language (monkeys and typewriters)
- Spelling correction programs.
- Determining unknown authorship of manuscripts.

- Tiles, pixels and grids.
- Obtaining grey-level images with a digital camera.
- Obtaining binary images from grey-level images (thresholding).
- Finding connected components in binary images (contour tracing with cellular automata).
**Smoothing:**- smoothing images (noise removal)
- smoothing polygons
- Sharpening images (spatial differentiation).
- The Medial Axis of a shape (with interactive Java applet)
- Cellular Automata

- Polygons: crossing, simple and convex.
- Polygonizing Sets of Points
- The area of a polygon.
- Determining if a point is inside a polygon.
- Smoothing polygons and polygonal waveforms.
- Application to point facility location (minimal spanning circle of a set of points in the plane).
**Convex Hulls:**- The Gift-Wrapping Algorithm (Jarvis' March)
- The Quick-Hull Algorithm (stretching an elastic band)
- The 3-Coins Algorithm (Graham scan)
- Linear programming and optimization problems (with Java applet)

- Data Structures.
- Arrays.
- Linked lists.
- Stacks.
- Queues.
- Trees.
- Binary search.
- Creating Binary Search Trees (Java applet)
- Searching in a Binary Search Tree (Java applet demo)
- The Number-Guessing Game

- Real and Artificial Neurons
- Threshold logic units.
- Dr. Gurney's course on neural networks.
- Perceptrons & neural networks (learning machines).
- Playing Games
- Play
**Checkers**with**Chinook**(The World Champion) - Play
**Othello**with**Keyano and other programs** - Play
**Chess**with**The Turk** - Game trees
- Other Games, Toys and Puzzles
- Clever games for clever people
- Tetris
- Artificial Life
- Decision theory.
- Recognizing patterns (how can a robot tell an orange from a banana).
- The Poetry Generator
- Artificial intelligence on-line demos
- Expert Systems

- Graphs and networks.
- The minimal spanning tree and its application to cluster analysis.
- Unsupervised learning.
- Robust estimation of location (onion peeling).

- The Hough transform.
- Detecting lines in a digital image with the Hough transform.
- Image segmentation in document analysis.
- Text-line orientation inference in document analysis (another application of the minimal spanning tree).

- Electronic mail.
- Coding theory.
- Basics of classic ciphers
- More about private-key cryptography.
- Transposition ciphers.
- Substitution ciphers.
- Cryptanalysis (breaking secret codes).
- Creative Cryptography
- Francis Bacon and Cryptography
- Are there cyphers in Shakespeare? (by PennLeary)
- Public-key encryption
- Basics of public-key cryptography.
- The Knapsack problem.
- The Unbounded Knapsack Problem (with Java applet)
- The Hellman-Merkle-Diffie cryptosystem.
- Security on the Internet (Netscape).

- Turtle geometry.
**Fractals:**- Hidden surface removal.
- The painter's algorithm.
- Virtual reality.

- Bibliography on the Philosophy of Artificial Intelligence
- Can a computer think?
- Turing's test.
- Searle's Chinese Room Argument.
- The Robot Reply.
- How to pass the Turing Test by cheating
- Conversing with Computer Programs - The Loebner Prize.
- About the program DEBRA (the Canadian winner of the 1994 Loebner Prize).
- Obtain sex advice from DEBRA
- About the program JULIA
- Talk to JULIA about Cats and Dogs.
- About the program ELIZA
- Obtain free psychotherapy from ELIZA.
- Computer Art
- MONDRIMAT: competition with Mondrian?
- Privacy.
- Computers and Law.
- Computers and Medicine.
- Men and Women in Computing Science: