Lecture notes

PART I:  Finite Automata and Regular Languages


PART II: Pushdown Automata and Context-Free Langugaes


PART III: Turing machines and Effective Computability