Theory of computation.
Here are some good slides by Prof. S. Akshay and Prof. Ashutosh Gupta at IIT Bombay
Textbooks:
- Introduction to the theory of computation -- very concise theory, with more focus on ideas than rigor, tricky exercises. We followed this for our CS2200 course at IIT Madras
- Introduction to Automata Theory, Languages and Computation, Hopcroft, Motwani, and Ullman - Very detailed, less exercises but rigorous proofs.
- Automata and Computability, Dexter C. Kozen
Possible workflow
- TOC is a very proof oriented course and requires a good understanding of discrete math and proof writing. TOC -- especially CFGs help you build foundations for Programming Languages and Compilers. One possible structure is (Please Note that this is only a suggestion -- everyone has their own way of learning things):
- Follow the NPTEL playlist
- Solve the problem sets here -- click on the lectures link
- If you get time try solving some questions from Sipser although above problems should be good enough to give you strong foundations. If you are not sure about which ones, have a look
- Writing and iterating over a proof is necessary to see urself grow on this skill -- yes proof writing is a very valuable skill :) and comes only by doing
- Solve exams
I do not have solutions to these problems, but a lot of solutions to Sipser's textbook are available online, although it is worth giving the problems some thought before jumping over to the solutions.
Links:
- CS 2200 - 2024
- A set of notes that I wrote on Cardinality.
- 18.404J Theory of Computation - MIT OCW
- PDF Lecture Notes - CMU
- Theory of Computation 2017 - CMI