| 1. Course info | |
| 2. Proof methodology | |
| 3. HW 1 | due 1/13 | 
| 4. HW 1 solutions | |
| 5. HW 2 and examples.py | due 1/25 | 
| 6. HW 2 solutions and NFAtoDFA.py | |
| 7. half(L) example | |
| 8. HW 3 | due 2/3 | 
| 9. HW 3 solutions | |
| 10. HW 4 | due 2/17 | 
| 11. HW 4 solutions | |
| 12. Bison/flex calculator example | |
| 13. Midterm | due 3/10 | 
| 14. HW 5 | due 3/17 | 
| 15. HW 5 solutions | |
| 16. HW 6 | due 3/31 | 
| 17. HW 6 solutions | |
| 18. Sample final exam questions | 
| Lecture | Content | Reference | 
|---|---|---|
| Lecture 1 (Jan. 4) | Introduction Alphabets, strings, languages Deterministic finite automata (DFAs) | Ch. 1, 2.1-2.2, 8.1.1, Handout 1, XKCD | 
| Lecture 2 (Jan. 6) | Nondeterministic finite automata (NFAs) | Ch. 2.3.1 - 2.3.5, notes | 
| Lecture 3 (Jan. 13) | NFA to DFA conversion & overhead | notes, Ch. 2.3.5 - 2.3.6 | 
| Lecture 4 (Jan. 18) | epsilon-NFAs, Regular expressions | notes, Ch. 3 (3.1 and 3.2) | 
| Lecture 5 (Jan. 20) | Equiv. betwn. Regular expressions & NFAs | notes, Ch. 3.2.1-3.2.2 | 
| Lecture 6 (Jan. 25) | Closure properties of regular languages | Ch. 4.2-4.3, half(L) example | 
| Lecture 7 (Jan. 27) | Pumping Lemma | notes, Ch. 4.1 | 
| Lecture 8 (Feb. 1) | Review of regular languages, Context-free grammars | notes, Ch. 5 | 
| Lecture 9 (Feb. 3) | CFG ambiguity, Useless symbols, Chomsky normal form | notes, Ch. 5 | 
| Lecture 10 (Feb. 8) | Applications of CNF: Decision problems for CFGs, Pumping lemma for CFLs | notes, Ch. 7.4, 7.2 bison/flex calculator example, Senizergues paper (Deciding equality for DPDAs) | 
| Lecture 11 (Feb. 10) | Push-down automata, final-state & empty-stack acceptance | notes, Ch. 6.1, 6.2 | 
| Lecture 12 (Feb. 15) | CFG to PDA conversion | notes, Ch. 6.3 | 
| Lecture 13 (Feb. 17) | PDA to CFG conversion | notes, Ch. 6.3 | 
| Lecture 14 (March 1) | Turing machines | notes, Ch. 8.2-8.3 | 
| Lecture 15 (March 3) | Turing machine extensions | notes, Ch. 8.4, 8.5.1, 9.2.1 | 
| Lecture 16 (March 8) | Universal language is undecidable | notes, Ch. 9.1-9.2 | 
| Lecture 17 (March 10) | Reductions | notes, Ch. 9.3 | 
| Lecture 18 (March 15) | Reductions and decidability (continued) | |
| Lecture 19 (March 17) | Time complexity, NP-complete | Ch. 10.1 | 
| Lecture 20 (March 22) | Cook-Levin Theorem: SAT is NP-complete | notes, Ch. 10.2 | 
| Lecture 21 (March 24) | Polynomial-time reductions: More NP-complete problems | notes, Ch. 10.4 | 
| Lecture 22 (March 29) | NP-complete problems, Time hierarchy theorem | notes, Ch. 10.4 |