CSC 2210 Automata, C o m p l e x i t y and Computability (a) Description The course introduces students to the concept of automata and complexity. It sets a background for more advanced studies like compiler construction and principles of programming languages. (b) The aims of the course are: • To introduce students to the concepts of complexity, automata and computability • To prepare students for advanced studies in compiler construction and principle of programming languages (c) Teaching and learning pattern Teaching will be in form of class lectures and tutorials (d) Indicative content • Finite state machines and regular languages: • Deterministic and non-deterministic machines; • Equivalence and minimization; • Regular expressions and regular grammars; • Kleene’s theorem. • Push-down automata and context free grammars; • Normal forms of grammars; Top-down and bottom-up parsing. • Turing machines and computability; • Church’s thesis; • NP-Computable problems. (e) Assessment method Assessment will be in terms of Assignments and tests (40%) and final written examination (60%) (f ) Reading list • John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman: Introduc- tion to Automata Theory, Languages, and Computation; Addison Wesley, 2000. • Daniel I. A. Cohen Introduction to Computer Theory; John Wiley and Sons, Inc, 1996.