This course covers principles and practice in the design and implementation of modern compilers and programming language runtime systems. Topics include lexical analysis, parsing, symbols tables, semantic analysis, type checking, intermediate representations, program analysis and optimization, code generation, garbage collection, and other runtime support. As time permits, the course may also survey topics including just-in-time compilation, runtime optimization, concurrent runtime systems, or extended automatic program error detection. Students will construct a full compiler and runtime system for a simple statically-typed programming language over the course of the semester.
Max Enrollment: 18
Prerequisites: CS 230 and at least one of CS 240 or CS 251. CS 235 is recommended, but not required.
Distribution Requirements: MM - Mathematical Modeling and Problem Solving
Typical Periods Offered: Every other year
Semesters Offered this Academic Year: Not Offered