Topics studied include formal description of programming languages, lexical analysis, syntax analysis, symbol tables and memory allocation, code generation, and interpreters. Students undertake a semester project that includes the design and implementation of a compiler for a language chosen by the instructor.
Prerequisite
C or higher: CSE 216 or CSE 219 or CSE 260; CSE 220; Advisory Prerequisites: CSE 303 or CSE 350
Course Outcomes
An ability to use of formal attributed grammars for specifying the syntax and semantics of programming languages.
Working knowledge of the major phases of compilation, particularly lexical analysis, parsing, semantic analysis, and code generation.
An ability to design and implement a significant portion of a compiler for a language chosen by the instructor.