Compilers take input programs written in a high-level language and generate equivalent programs in a low-level language. This course introduces the mathematical tools (formal languages and automata) necessary for recognizing and validating input programs and the computational techniques used to construct equivalent output programs. Students develop first-hand experience with the process by implementing a sample compiler as a course project. The tools and techniques introduced in this course can be applied across a wide range of applications. In particular, this course is valuable preparation for writing any program that needs to read and act on structured input files.
Prerequisites: CSCI 240, 361 and 281. CSCI 370 is recommended.