CENG 513

Compiler Design and Construction

This graduate-level course provides theoretical and practical concepts of compiler design. It will cover the front-end, including scanners and parsers, middle-end optimizations, and back-end with instruction selection, register allocation, and instruction scheduling techniques. We will have practical examples based on the LLVM framework.

Course Objectives

1. Understand scanning and parsing techniques.

2. Understand high-level optimizations and code transformations.

3. Practice and implement basic compiler structures.

4. Understand machine-dependent optimizations and low-level execution details.

Recommended or Required Reading

– Engineering a Compiler, Keith D. Cooper, Linda Torczon, Morgan Kaufmann.

– Practical examples with LLVM framework

Learning Outcomes

1. Know the theoretical fundamentals of compiler theory

2. Recognize theoretical limits on the abilities of compilers

3. Discuss the next generation compilers

4. Design and implement compilers

Topics
Introduction
Lexical Analysis
Parser
Parser – Kaleidoscope
Intermediate Representation
LLVM IR
Code Optimization
Code Optimization – LLVM Pass
Midterm
Instruction Selection
Instruction Scheduling
Register Allocation
ML Compilers
Paper Presentations

Grading

20% Midterm Exam – Take Home

20% Programming Assignments

20% Paper Reproduce and Presentation

40% Final Exam – Take Home