Fundamental question: what problems can we solve with a computer?
Automata
- an automaton (plural: automata) is a mathematical model of a computing device
- an abstraction of a real computer, the way that graphs are abstractions of social networks, transportation grids, etc.
an example: calculators vs. desktops
- calculators: small amount of memory, desktop: large amount of memory
- calculators: fixed set of functions, desktop: reprogrammable, run many different programs
- in CS 103, we’ll first explore “small-memory” computers, then discuss “large-memory” computers
what’s in common in computing devices
- e.g. four-function calculator vs. abacus
- these machines receive input from an external source
- input is provided sequentially, one discrete unit at a time
- each input causes the devices to change configuration
modeling finite computation → finite automaton (plural: finite automata)
We’ll model a finite-memory computer as a collection of states linked by transitions
- each state corresponds to one possible configuration of the device’s memory, and each transition indicates how memory changes in response to inputs
- let each transition be labelled by a character
- now, a set of inputs is just a string made of characters
- start from start state
- change state depending on character
- as a simplifying assumption, assume that we just need to get a single bit of output. our machines will just say YES or NO. (this can be generalized)