Watch a video introduction to this course on YouTube.
Building on CS 360, this course discusses more advanced topics in formal languages and automata theory, with applications to compiler writing. In particular, several practical parsing methods are discussed.
CS 462 is normally taken in a student's fourth year. This course should be of interest to students planning further studies in computer science.
Prerequisites: CS 360 or 365; Computer Science students only.
Successors: Graduate courses in compiler writing or formal languages.
A Second Course in Formal Languages & Automata Theory, by J. Shallit Published by Cambridge University Press.
3 hours of lectures per week.
Outline of formal language theory. Strings, machines, proofs by induction. Combinatorics on words. Thue's problem.
Review. Closure of regular sets under quotient, substitution, and inverse homomorphism. Decision algorithms for regular sets. The Myhill-Nerode theorem. Minimization of finite automata. Finite-state transducers.
Review. Coping with ambiguity. Inherently ambiguous CFL's. Closure of context-free languages under substitution, inverse homomorphism, and intersection with regular sets. Decision algorithms for context-free languages. Parsing arbitrary context-free grammars. Decidability results for CFG's.
Phases of compilation. Top-down parsing. LL(1) grammars. Bottom-up parsing. LR(0) grammars. LR(k) grammars.
Left- and right-regular grammars. Unrestricted (Type 0) grammars. Equivalence of Type 0 grammars and Turing machines. Context-sensitive languages. Linear bounded automata.
Normal forms. Closure under complementation. Relationship to LR(0) grammars.
L-systems. Applications to computer graphics. Rational series.

David R. Cheriton School of Computer Science
University of Waterloo
Waterloo, Ontario, Canada N2L 3G1
Tel: 519-888-4567 x33293
Fax: 519-885-1208
Contact | Feedback: cs-uops@cs.uwaterloo.ca | David R. Cheriton School of Computer Science | Faculty of Mathematics