- 2 sheets of 8.5" by 11.0" piece of paper with notes written on it
- Pencil or pen
- eraser

Topics you should know

- Definitions of formalisms
- Regular Language
- Regular Expression
- DFA
- NFA
- NFAe
- GenNFA
- Regular Grammar
- Context Free Langauge
- Context Free Grammars
- Context Free Expressions
- Push Down Automata (deterministic and non-deterministic)
- Turing machines
- Turing Decideability and Undecidability
- Turing recognizability
- Diagonalization
- Countable
- Mapping reducability
- The recursion theorem and self description
- Big O and small o notation
- P and NP
- NP-completeness

- Skills
- Translating word descriptions of a language into any of the formalisms
- Using properties of Regular Expressions (Table 11.1, page 700)
- Executing DFA's by hand over a string
- Executing PDAs
- Executing Turing Machines
- Creating Turing machines from written descriptions.
- Reduceability, Reducing one kind of problem into another.
- Using a diagonalization argument
- Using accepting (rejecting) Histories to show decideability
- Showing languages are in P, NP, or NP-complete

- Algorithms
- RegExp to Finite automaton
- Finite automaton to RegExp
- Computing epsilon-closures
- NFA to DFA (subset construction)
- NFA to RegGrammar
- Context Free Gramma to PDA
- PDA to Context Free Grammar

- Other topics
- Closure properties of Regular languages
- Applying the pumping-lemma to prove a language is not regular.
- Applying the CF pumping lemma to prove a language is not context free.
- Church Turing Thesis
- Acceptance by TM is undeciadle by the table approach
- Diagonalization to show the functions from Nat to Nat are not countable.