- Rosen, K.H. Discrete Mathematics and its Applications, Global Edition Direct Link
- Sipser, M. Introduction to the theory of computation PDF excerpts are provided on Coursera, however I suggest getting the book, because we only have access to chapter 1. The international edition can be found for cheap. Link
- Hopcroft, J., R. Motwani and J.D. Ullman Introduction to automata theory, languages and computation PDF Excerpts are provided on Coursera.
- Forbes, M. A theoretical introduction to Turing Machine Direct Link
- Kozen, D.C. Automata and Computability. PDF excerpts are provided on Coursera
- Chang, S. (ed) Data structures and algorithms Direct Link
- Discrete Math Prerequisites
- Logic
- Proofs:
- Direct Proof
- Proof by Contraposition
- Proof by Contradiction
- Proof by Induction
- Combinatorics
- Automata Theory
- Finite State Automata
- Deterministic
- Nondeterministic
- Regular Languages
- Regular Expressions
- Non-Regular Languages*
- Pumping Lemma
- Context-Free Grammars
- Turing Machines*
- Finite State Automata
- Algorithms
- Algorithm Complexity
- Algorithms Covered:
- Insertion Sort
- Bubble Sort
- Heap Sort
- Quick Sort
- Merge Sort
- Binary Search
- Gale-Shapley
- Master Theorem
*Consult external resources because these topics are not explained well in the lectures
Week | Topic | Reading |
---|---|---|
1 & 2 | Logic | Rosen: Chapter 1.1 - 1.4, 1.5 (optional) |
3 & 4 | Proofs | Rosen: Chapter 1.8, 1.9 (optional, to practice proof-writing) 5.1, 5.3 (optional, but highly recommended to get more comfortable with recursion) |
5 & 6 | Combinatorics | Rosen: Chapter 6.1 - 6.3 |
7 & 8 | Automata Theory: DFA and NFA | Sipser: Chapter 1.1, 1.2 |
9 & 10 | Automata Theory: Regular Languages | Sipser: Chapter 1.3, 1.4 |
11 & 12 | Automata Theory: Non-Regular Languages* | Sipser: Chapter 2.1 (More concise and easier to understand than Hopcroft reading) Hopcroft: Chapter 5 Chapter 7.1 (Covers Chomsky Normal Form) |
13 & 14 | Automata Theory: Turing Machines* | Forbes: Chapter 1 (I found this book to be unreadable. Read Sipser or Hopcroft instead) Kozen: Lecture 32 Sipser: Chapter 3.1 (Optional) Hopcroft: Chapter 8.1, 8.2 (Optional) |
15 & 16 | Algorithms I | Rosen: Chapter 3.1 Chang: Chapter 8, 9 |
17 & 18 | Algorithms II | Rosen: 5.4 |
19 & 20 | Algorithms: Complexity | Rosen: Chapter 3.2, 3.3 (both optional) Chang: Chapter 2, 3 (optional) |
*The lectures in weeks 11 - 14 (covering non-regular languages and Turing machines) are exceptionally poor so I suggest consulting the resources below
Lecture notes by Felipe Balbi
- The exercises in chapters 1.8, 1.9, and 5.1of the Rosen book give you the opportunity to practice proof-writing. Check your answers here
- A Guide to Proof-Writing
- Techniques for Proof-Writing
- The Stanford CS103 website has many resources related to writing proofs
- Practice designing automata, regular expressions, grammars, and Turing machines by solving homework problems in the Automata Theory MOOC (#5 below) or the Sipser book. Check your answers here
- The Stanford CS103 website also has very well made and detailed slides covering Finite State Automata, Regular Expressions, Context-Free Grammars, and Turing Machines
- Theory of Computation lectures by UC Davis. Follows the Sipser book.
- Harry Potter Theory of Computation Playlist
- Stanford Automata Theory MOOC. Follows the Hopcroft book. Includes homework as well.
There are many resources to learn algorithms online here is a few of them:
- Khanacademy
- Visualgo
- GeeksforGeeks
- Interview Cake sorting algorithms reference, Binary Search reference
- Algorithms Youtube Playlist
- We also have access to CLRS, a popular algorithms textbook. Direct Link The chapters relevant to this course are: 2, 3, 4.5, 4.6, 6, 7