Syllabus
A syllabus describes what you can expect from the course, including the purpose of a course and what you will learn from it. A syllabus also often provides lots of details such as course policies and how grading works.
Overview
This course is about the design and implementation of compilers. A compiler is a piece of software that translates one computer language to another. Topics include elegant theoretical results that underlie compilation techniques, practical issues for implementing programming languages efficiently, and low-level interactions with hardware and operating systems. Over the course of the semester, we will build a working compiler.
By the end of this course, you will:
- Understand the major theories and issues that inform how we implement a compiler (including parsing, intermediate representations, analysis and optimization, and code generation).
- Apply these ideas in practice by building a working compiler for a small but realistic programming language.
- Practice ways of thinking and encounter concepts, skills, and tools that are useful beyond compilers.
The remaining pages in the syllabus describe the learning environment for this course, things you will need to be successful, coursework and grading, collaboration and AI policies, and additional information.