Compilers

ECE479K, Unique: 18950
Semester: Fall 2025



Overview

Compilers are a critical component of any system as they are responsible for translating programs written in high-level languages and frameworks (source code) to optimized and correct machine-language executables (target code, in general). Compilers do this by: first parsing and analyzing the high-level source code; lowering that code into an intermediate representation; performing a series of code transformation passes on the intermediate representation to optimize the code for myriad goals, including performance, efficiency, reliability, security, etc.; and finally generating code for the target.

The purpose of this class is to examine the design and implementation of an optimizing compiler. You will learn about programming language representation, common transformations, analyses, and optimizations, intermediate languages, and design choices in lecture and will learn about the software engineering challenges of implementing a compiler and simple runtime support for an imperative, object-oriented language in programming labs. We will use the Classroom Object-Oriented Language (COOL) and the LLVM compiler framework, which is commonly used also in industry. The emphasis in this course is on code transformations and optimization.
 


Catalog Description

Program compilation and translation from high-level into machine languages. Compiler structure; syntax analysis; semantic analysis; type systems; code generation; intermediate language and representation; control and data flow analysis; optimization techniques.
 


Prerequisites

ECE306 (or EE306) or ECE306H (or EE306H) or CS429 or CS429H, and ECE312 (or EE312) or ECE312H (or EE312H) or CS312 or CS312H with a grade of at least C- in each.

You should understand how a computer fundamentally works so that you understand how to target it with a compiler (i.e., machine language, ISA, register, memory, assembly, the stack, function calls, etc.). You should also have mastered high-level programming and concepts, in particular writing code in C++ including basic object-oriented programming concepts.

The class involves building on a large existing compiler infrastructure codebase (LLVM and Cool language) with a corresponding learning curve. I expect the workload to be on the heavier side, perhaps similar to 460N and 461S. This is only the third time the course is offered and the first time I am teaching it, and we are making continuous adjustments and improvement based on prior experiences and feedback.
 


Textbook

No required textbook, but either of the following books provides good coverage of the main topics of the course (and beyond). You may find you do not need a textbook, but you are very unlikely to need both. The first is very popular.

Dragon Book
Engineering Compiler


Learning Objectives

After successfully completing the course, students will be able to:


Topics

Tentative list of course topics (see class schedule for details):


How to Get the Most From This Course

  1. Read the text as it is quite thorough, with many examples worked out, good motivating discussions, and useful intuition.
  2. Participate actively in class: ask questions when you don't understand something, and share in any in-class exercises.
  3. Go to the recitations sections and participate actively in those as well
  4. Do the homeworks and project assignments ahead of time whenever possible. Working madly to beat a deadline is a terrible way to learn! Study in a group.
  5. Do not cheat yourself when studying for exams. Time yourself so that you know you are proficient enough in the material, do not prematurely look at any solutions, and do not delude yourself into thinking that incorrect answers while studying are all just “silly mistakes” rather than suggesting more fundamental misunderstanding.
     


Policies


Sharing of Course Materials

Sharing of course materials is prohibited. No materials used in this class, including, but not limited to, lecture hand-outs, videos, assessments (quizzes, exams, papers, projects, homework assignments), in-class materials, review sheets, and additional problem sets, may be shared online or with anyone outside of the class unless you have my explicit, written permission. Unauthorized sharing of materials promotes cheating. It is a violation of the University's Student Honor Code and an act of academic dishonesty. The University is well aware of the sites used for sharing materials, and any materials found online that are associated with you, or any suspected unauthorized sharing of materials, will be reported to Student Conduct and Academic Integrity in the Office of the Dean of Students. These reports can result in initiation of the student conduct process and include charge(s) for academic misconduct, potentially resulting in sanctions, including a grade impact.
 


Class Recordings

Class recordings are reserved only for students in this class for educational purposes and are protected under FERPA. The recordings should not be shared outside the class in any form. Violation of this restriction by a student could lead to Student Misconduct proceedings.
 


Religious Holidays

Religious holy days sometimes conflict with class and examination schedules. If you miss a class, examination, work assignment, or other project due to the observance of a religious holy day you will be given an opportunity to complete the work missed within a reasonable time after the absence. By UT Austin policy, you must notify each of your instructors of your pending absence for a religious holy day as far in advance as possible of the date of observance. For questions regarding religious accommodations, please contact the Office of the Dean of Students.
 


University Policies and Resources

For a list of other important university policies and helpful resources that you may need as you engage with and navigate your courses and the university, see the University Policies and Resources Students Canvas page. The page includes the language of the University Honor Code, Title IX legal requirements for Texas employees, and information about how to receive support through the office of Disability & Access.
 


Contents © Copyright 2025 Andreas Gerstlauer http://users.ece.utexas.edu/~gerstl/ece479k_f25