Day 1
I. Intro.
A. Me: Bill Siever
1. Grad Student: B.S. in C.S., M.S. in C.S.,
In Progress: PhD in Comp. Eng
2. Been here an insane amount of time
8th attempt at teaching 234
3. Research: Robotics, Machine Vision, Parallel Programming, etc.
4. Actual Experience with this material
5. Outside interests: Reading, Biking, Skiing, Racquetball, etc.
B. Class Format / Polocies
1. Syllabus Review / Handout / Expectations
2. Roll Call
C. Class Scope - Three Parts
1. Intro. to CS history & Performance analysis
Where computers came from and why there here.
(Give us some insight into what they are good for,
how they're built,
and where they may be headed)
Also practical experience to compare different computers,
algorithms, etc.
2. Intro. to ASM programming - how programs work inside the computer
Why? Nesc. to understand & better use the computer
Better understanding of language design/limitations
Better understanding of Operating system
Write Device Drivers
Historical/Developmental Perspective
Nesc. to effectively use higher level languages (C++)
Develop Efficient Programs
Better/Easier Debugging, better understanding of errors
Design and Debugging Techniques!
Critical Thinking/Planning!
3. Intro. to computer architecture - How computers are built.
(Helps us understand assembly lang)
All these pieces fit together to really allow us to understand and
use computers to their full potential. They also allow use to
quickly spot, diagnose, and resolve some types of problems.
II. History of Computers
A. Q. What do computer's DO? (Most abstract sense)
A. Symbolic Manip:
So, the history of computers is really the
history of symbolic manipulation.
Symbolic Manipulation & Storage - Using some sort of symbol to represent an idea.
B. Early Symbols
0. Simple Drawing: (30k-70k yrs ago)
1. Drawings -> A "standard" Hieroglyphs (3k-5k yrs ago)
2. Written Languages
3. Numerics: Numerals, Beads, Knots, etc.: Abacus
Needed by Agrarian based societies: Track trading/bartering
Develop a calendar based counting system / record keeping / solar events
Keeping track of information!
C. Symbol Manipulators
1. Written Symbols & Associated Rules (Math & Logic)
2. "Aids": Abacus & Slide Rule
(Humans still did manipulation)
Abacus: Beads "store" information about numbers,
A person "computes" with them.
~1000 yrs old.
Slide Rule: Use logarithms to compute (~100 yrs)
3. Machines: Jaquard Loom, Pascal, Charles Babbage & Ada
Pascal (mid 1600's) - Simple Adding/Math machines
Single Purpose, but little human intervention
Loom (1810 / Joseph Jacquard)- Could follow a "program" and
repeat a process
Babbage & Ada (1791-1871) - Visionaries behind "re-programmable"
computing machines & algorithms
D. "Early" Era - The Electronic Computer
0. Zuse: Electro-Mechanical computers
1. ENIAC (1946)? (& Univac) J. Presper Eckert & John Mauchly @ U. of Penn.
"First" electronic computer
Wired Programs
"Slow" / Power Hungry
Big!
ENIAC
(1946)'s first customer - Military (trajectory tables)
UNIVAC (1951)'s first customer - U.S. Census
Sept. 9, 1945 @ 15:45 - First recorded computer bug. By Grace Hopper
(a Moth stuck between relays)
(Mrs. Hopper also gave us COBOL and improved compilers)
2. John von Neumann
Stored Program & EDSAC
Importance of stored program - Foundation of modern computer science
E. Middle Ages of Computing 1960-70's
1. Development of the transistor (1947, 1954, 1st comp. in 1955)
Faster
Less Power
Cheaper
Smaller
Ack! TOO MANY WIRES!!!! (Leads to IC)
2. Development of IC (Integrated Circuit 1959)
Production is similar to a photograph
Allowed for "Abstraction" in designs
First Customer - NASA
Lead to todays "personal" & "embedded" computers
F. Modern Machines:
CPU - Central Processing Unit:
The CPU does the real "work" of the computer.
It processes the data.
Basically it does 3 types of things:
Data Movement (Move data from one place to another)
Data Manipulation (Add, Mult, And, etc.)
Decision Making (Branching) (Ifs, whiles, etc.)
The Book further breaks the CPU into:
Datapath: "Roads" for data to travel on
Consist of "registers" and ALU
Register is a basic unit of storage/work for a processor.
I.e. the fundamental amount of data a processors was designed for.
ALU - Performs basic logic/arithmatic of computer
(I.e. where all data manipulation is done)
Control: Traffic Director
Controls what operations are performed on data
controls flow of program (Branching/Decisions)
(Exception Handler)
We'll come back to this model often.
Talking to the Computer:
Input: Mouse, Keyboard
Output: Monitor, Printer, Blinky Lights
(I/O: Network, Modem, etc.)
Memory/Storage:
Random Access: "RAM" & "Cache" - Temporary "Volatile" storage
Fast/Memory Hierarchy
Non-Random Access (Sequential): Disks, HDs, CDs, Tapes
- Non-Volatile Storage Slow/Mechanical
For most computers, memory is a special type of storage and
Disks are just another IO device.
RAM holds instructions and data. (Thanks Von Neumann!!)
Instruction: A command for the processor to follow.
Data: A piece of information or variable.
(Actually, we're talking about a location to store
a specific piece of information here)
Random vs. Sequential Access: When we talk about access, we're
really talking about access TIME. I.e. how long will it take
to get a particular piece of information.
Random Access - No mater what piece of information we ask for,
it'll always take the same time to retrieve.
(We can pick randomly)
(Hypothetical library)
Sequential - The information is in some order and getting
one element you must go through some others.
(VCR tape)
Some pieces of information are more readily
and accessable faster.
In the 2nd part of the semester we'll take a look at
this model to try to understand assemble language.
(We'll also re-fine our picture of the datapath)
In the last 3rd of the semester we'll figure out how
Memory, and the Datapath work and gain some insights
into the Control.
III. Next Time:
1. Reading
2. Hw#1 Assigned
3. Video: The Machine that changed the world, Part I: Great Brains
(Bring a drink - I'll provide donuts)