Introduction. Part 1: Automata and Languages. 1. Regular Languages. 2. Context-Free Languages. Part 2: Computability Theory. 3. The Church-Turing Thesis. 4. Decidability. 5. Reducibility. 6. Advanced Topics in Computability Theory. Part 3: Complexity Theory. 7. Time Complexity. 8. Space Complexity. 9. Intractability. 10. Advanced Topics in Complexity Theory. Selected Bibliography.