1. 1
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
Welcome to CSE 599
Instructor: Rajesh Rao (rao@cs.washington.edu)
TA: Aaron Shon (aaron@cs.washington.edu)
Class web page
http://www.cs.washington.edu/education/courses/599/CurrentQtr/
Add yourself to the mailing list see the web page
Today’s lecture:
Course Introduction
What is Computation?
History of Computing
Theoretical Foundations: Part I
2. 2
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
Course goals
To examine the future of computing
Moore's law will certainly end. What are the alternatives?
Biologically-inspired and quantum computing
To broaden your perspectives on the fundamental aspects of
computation
To give you sufficient exposure to
understand the premises of alternative computing paradigms
allow you to pursue these topics further
What we will not accomplish
Mastery of any specific field
3. 3
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
What we will cover
Background topics
Theoretical foundations of computer science
Silicon technology and digital computer organization
Information theory and thermodynamics
DNA computing
Using DNA-binding properties to solve computationally hard
problems
Neural computing
Computation in animal brains and in artificial neural networks
Quantum computing
Using quantum superposition for massively parallel computation
4. 4
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
Sequence of Lecture Topics
1. Theoretical Foundations of Computer Science (Jan 4 & 11)
2. Silicon Technology and Digital Computing (Jan 18,
including a guest lecture by Chris Diorio, UW)
3. DNA Computing (Jan 25, including a guest lecture by Anne
Condon, UBC)
4. Neural Computing (Feb 1 & 8)
5. Information Theory and Thermodynamics (Feb 15)
6. Quantum Computing (Feb 22, including a guest lecture by
Dan Simon, Microsoft Research)
5. 5
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
Grading, homework, and other logistics
Grading: Homeworks 50%, Mini-Project 50%
Homework assignments will be handed out on the day of the
lecture related to the homework (see Course web page)
Homeworks are due at the beginning of class on the
specified due date (see Course web page)
Pick a mini-project related to a course topic (project ideas
will appear on Course web…or come up with your own!)
Project presentations: beginning of March
Project reports due: finals week (Mar 12-15)
6. 6
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
OK, enough about the course.
Let’s get started…
What is computation?
What does it mean to “compute” something?
What is a computer?
7. 7
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
What is a computer?
Consider the following:
A coffee filter
A wheat threshing machine
A handful of spaghetti
Can these be viewed as computers??
8. 8
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
Yes, if you can find a useful mapping…
For example, consider the handful of spaghetti
Suppose you want to sort 100 numbers
Take 100 sticks of spaghetti and cut them to the length of
your numbers
Hold the spaghetti sticks and align their bottom ends on a
table
Pick out the tallest stick, then the next tallest, and so on…
You have just sorted your 100 numbers using a spaghetti
“computer”!
9. 9
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
So, what is a computer?
A working definition:
A computer is a physical system whose:
physical states can be seen as representing elements of another
system of interest
transitions between states can be seen as operations on these
elements
Three basic steps:
1. Input data is coded into a form appropriate for physical system
2. Physical system shifts into a new state
3. Output state of system is decoded to extract results of computation
Consider these 3 steps for our spaghetti computer example.
Also holds for silicon, DNA, neural, and quantum computers.
10. 10
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
If computers can have such varied substrates, how
did we end up with silicon-based digital computers
on our desks (rather than, say, organic, spaghetti-
manipulating analog computers)?
Answer: Because of a convergence of theoretical
and practical ideas in the history of computing…
11. 11
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
A Brief History of Computing
The early years:
Mapping numbers to objects (e.g. stones)
Adding and subtracting by manipulation
Stonehenge (~ 2800 BC) – a prehistoric computer of solar eclipses?
The first personal “calculator” –
the abacus (a mnemonic aid
based on place-value notation)
12. 12
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
Early pioneers in software and hardware…
Muhammad ibn Musa Al’Khorizmi
Proposed the concept of an “algorithm”
as a written process that achieves a
certain goal when executed
Published first book on “software”
(12th century)
Blaise Pascal
Built a mechanical adding machine
in 1642
Numbers mapped to dials and gears
Based on differential transmission via
gears of different sizes
13. 13
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
The middle ages (1800-1900)…
First software-based controller (1801):
J.-M. Jacquard’s Automatic Loom
Control program written on punched
cards
Babbage’s ideas for steam-powered computers
Difference Engine (1822) for computing mathematical tables
Analytical Engine (1833) for general computation (introduced conditionals)
Both were never constructed
14. 14
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
Punched cards and digital computing…
Used by Hollerith to input data to his “Tabulating machine”
for tabulating and counting census information (1890)
Perforated strips of discarded movie film used by Zuse to
control the first programmable digital computers (Z1-Z3)
15. 15
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
The digital computer revolution
~1850: George Boole invents Boolean algebra
Maps logical propositions to symbols
Allows us to manipulate logic statements using mathematics
1936: Alan Turing develops the formalism of Turing Machines
1945: John von Neumann proposes the stored computer program concept
1946: ENIAC: 18,000 tubes, several hundred multiplications per minute
1947: Shockley, Brattain, and Bardeen invent the transistor
1956: Harris introduces the first logic gate
1972: Intel introduces the 4004 microprocessor
Present: <0.2 m feature sizes; processors with >20-million transistors
16. 16
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
What is computable?
We have examined how developments in theory and technology paved
the way for the digital computers we use today
A key concept that allowed general purpose computing: the stored
program idea
Theoretical roots: Turing machines, Machines simulating other machines,
Universal Turing Machines
Church-Turing Thesis: The Turing machine is equivalent in
computational ability to any general mathematical device for
computation, including digital computers.
Important Result: There exist functions that are not computable by any
computational device
17. 17
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
5 minute break….
(Next: Theoretical foundations of computing)
18. 18
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
Introduction
We asked what computation was - now we’ll try to answer
the question “what is computable?”
These results about computability are fundamental.
They apply regardless of the machine
But they don’t answer all of our questions
One of the major contributions of theoretical CS: negative
results
19. 19
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
Abstract Models of Computation
We want to answer fundamental questions:
What can we do in a reasonable amount of time?
What can we do in a reasonable amount of space?
What can we do at all?
AMAZING result-- some things are not computable!
20. 20
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
A First Model for Computation: Automata
Chalkboard Example…(automata for Parity, from Feynman
text, chapter 3)
21. 21
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
Languages
A language is some set of strings
The language of a FA is the set of strings the FA recognizes
In the parity example, we can write
L = 0* (1 0* 1)* 0*
22. 22
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
In-Class Exercise
Design a Finite Automata that accepts strings where the
number of 1’s AND the number of 0’s is even…
23. 23
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
Limitations of DFA’s
Cannot recognize some languages e.g. balanced parens, 0n1n
Only a finite number of states, so it can’t count.
We can actually characterize what languages DFA’s
recognize exactly
Called regular languages
24. 24
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
The Chomsky Hierarchy of Languages
Finite Automata
Regular Languages e.g.
parity
Pushdown Automata
Context-Free Languages
e.g. 0n1n
Linear Bounded
Automata
Context Sensitive
Languages e.g. anbncn
Turing Machines
Recursively Enumerable
Languages
25. 25
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
DFA’s vs. Computers
Technically, computers are DFA’s
BUT- we think they can answer questions like 0n1n
They actually can’t-- what if n was 10100?
We think of computers as storing numbers, instead of
moving to a state which represents storing that number, but
the general notion is the same
26. 26
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
Turing Machine
Equivalent to a finite automaton that has an unbounded tape
Has a head which can move left or right, as well as write
symbols on the tape
The TM is aware of what the head is looking at
Can defined as a “program” or list of quintuples:
(current state, current symbol on tape) to
(next state, new symbol to write, direction of head movement), or
(q, s, q’, s’, d)
There exists an initial state q0 and a set of halting states
27. 27
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
An Example of a Turing Machine
A Turing Machine for checking if parentheses are balanced
(from Feynman text, chapter 3)
E.g. Tape contains …E()E…, or …E(()(E…, or
…E((()()))E…
28. 28
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
Exercise on Turing Machines…
Design a Turing machine that multiplies two unary numbers
Example: Tape contains …111X11…
Answer should be: …111111…
For a complete solution, see the handout (chapter 28 of The
Turing Omnibus by Dewdney)
29. 29
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
Solution Sketch
A TM that multiplies unary numbers
Example: Tape contains …111X11…
Answer is: …111111…
Pseudocode: On input string w:
1. Write a * to the left of the input to separate the output from input
2. For each 1 occurring after the X:
1. For each 1 occurring before the X:
Write a 1 in the leftmost blank cell of the tape beyond the *
End for
End for
3. Erase the * and all symbols to the right of it
4. Halt
30. 30
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
Alternate Models of TMs
Multitape TMs
equivalent to ordinary TMs
TMs with Rectangular Grids
TM that can jump to arbitrary locations on the tape
Nondeterministic TMs
equivalent to TM in terms of computability
Will play an important role in the next class
31. 31
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
The stage is set to tackle the big questions…
What functions are computable?
We can now ask: Are there functions that a Turing machine cannot
compute?
What functions are tractable?
For what type of problems do fast and efficient algorithms exist?
By efficient, we mean time- and space-efficient
This will then allow us to look at:
Problems that are hard to solve on conventional computers but can be
solved more efficiently using alternative computing methods such as
DNA, neural, or Quantum Computing
32. 32
R. Rao, CSE 599 Week 1: Introduction and Overview, Theoretical Foundations (Part I)
Next week: Theoretical Foundations (Part II)
Turing machines that simulate other Turing machines
Universal Turing machines
Halting problem and Undecidability
Computational Complexity: Time and Space Efficiency
P, NP, and NP-complete problems
Read the handout given today and Feynman chapters 1-3…
Have a great weekend!
Editor's Notes
Class rule: Interrupt when you don’t understand why we are doing something