Languages and machines : an introduction to the theory of computer science Mathematical preliminaries Languages Context free grammars Normal forms for context free grammars Finite automata Properties of regular languages Pushdown automata and context free languages Turing machines Turing computable functions The Chomsky hierarchy Decision problems and the church turing thesis Undecidability Mu recursive functions Time complexity P NP and Cooks theorem NP complete problems Additional complexity classes Parsing : an introduction LL(k) grammars LR(k) grammars