This course introduces a formal framework for investigating both computability and complexity. This course covers topics on abstract machine and language, finite automata, regular expressions, push down automata and context-free languages and pumping lemma. Also, it discusses machines and recursively enumerable languages and other properties dealing with grammars and machine languages. Â