This course introduces students to the practical issues that arise in compiling programs from a source language to a target language. Topics include register allocation, parsing, intermediate representations, and the basics of code optimization. Compiler construction requires finding always-correct and approximately-optimal solutions for intractable problems, and involves the application of theoretical computer science to practical programs. The course exposes the lowlevel details that underlie many basic programming abstractions, such as variables, homogenous computer memory and compositional programming languages. (Offered occasionally.) Prerequisites: CSCI-2321
3 credits
Upper Division