The course designers and instructors deeply appreciate researchers in the
community for their inspiring works, which provide rich materials for developing
the course and advancing the research in this direction.
Back to Homepage · Previous Page
Fig 1. The textbook.
Welcome to our comprehensive course on compilers! This course will delve into the intricate world of programming language translation and execution. Compilers are the backbone of modern software development, translating human-readable code into machine-executable instructions. Whether you're a beginner or an experienced developer looking to deepen your understanding, this course will equip you with the knowledge and skills of designing, implementing, and optimizing compilers.
Throughout this journey, we'll cover various topics, including lexical analysis, syntax parsing, semantic analysis, code generation, and optimization techniques. You'll learn about compiler architectures, compiler construction tools, and practical strategies for building efficient compilers for various programming languages.
By the end of this course, you'll have a solid grasp of how compilers work under the hood and gain practical experience through hands-on projects and assignments. So, let's embark on this exciting exploration of compilers together!Prerequisites: Before registering for this course, a student must check if he has basic knowledge of data structures, algorithms, and fundamental programming languages such as C/C++ and Java.
Lectures
The course slides are listed below. They cover most but selective parts of the Dragon Book, with Chapter 11 intentionally excluded and much more not covered in the textbook. Contact the instructor if you have any questions or suggestions.
The course designers deeply appreciate instructors and researchers in the
community for their inspiring works, which provide rich materials for developing
the course slides.
Lectures | Materials |
---|---|
Ch1/Ch2 Introduction to Compilers - Basic Concepts of Programming Languages and Compilers |
Slides-1 |
|
|
Ch3 Lexical Analysis - DFA / DFA Minimization and Bisimulation / NFA / NFA → DFA - Regular Language and Expression / Pumping Lemma / Lexical Analysis |
Slides-1 Slides-2 |
Ch4 Syntax Analysis - Context-Free Language / Push-Down Automata / Pumping Lemma for CFL - Top-Down and LL Parsing / Precedence Climbing Parser |
Slides-1 Slides-2 |
Ch5/Ch6 Intermediate Representation - Three Address Code / Syntax-Directed Definition / IR Generation - Translation into SSA / LLVM IR |
Slides-1 Slides-2 |
|
|
Ch7/Ch8 Target Code Generation - Memory Model / Instruction Selection / Peephole Optimization - Translation out of SSA - Local Register Allocation / Global Register Allocation |
Slides-1 Slides-2 Slides-3 |
Ch10 Instruction Scheduling - Scheduling Constraints / Local Scheduling / Global Scheduling |
Slides-1 |
|
|
Ch9 Dataflow Analysis - Dataflow Analysis / Sparse Dataflow Analysis - Symbolic Execution / Satisfiability |
Slides-1 Slides-2 |
Ch12 Interprocedural Analysis - Context Sensitivity / IFDS / CFL-Reachability - Pointer Analysis / Datalog-Based Analysis |
Slides-1 Slides-2 |
Labs
(TBA)
Grading Scheme
(TBA)
Teaching Assistants
(TBA)
Online Discussion
(TBA)
Office Hours
By appointment. Feel free to email TAs or the instructors to claim a time slot.