CS 6120: Advanced Compilers: The Self-Guided Online Course (2020)

394 points · 55 comments on HN · read original →

Points and comments are a snapshot, not live.

Cornell's CS 6120 advanced compilers course is freely available online with video lectures and assignments.

The self-guided version of Cornell's PhD-level compilers course covers intermediate representations, data flow, classic optimizations, parallelization, JIT compilation, and garbage collection. It uses LLVM and an educational IR called Bril. Lessons include videos, written notes, papers to read, and open-ended implementation tasks. The instructor notes that production values are amateurish, especially early on. The course is open source on GitHub. Students are encouraged to fill out a feedback form upon completion.

What commenters are saying

Top commenter Ben Titzer notes the course's section on dynamic compilers focuses on trace compilation, which he says is a "dead end" repeatedly abandoned; he argues type feedback, speculation, and deoptimization are the more important and industrially relevant concepts. The course author agrees that tracing is useful as a mind-expanding concept but wishes he could offer more context on what works in practice. A subthread pushes back, citing LuaJIT as a production trace compiler used on "hundreds of millions of servers and devices." Another commenter questions the "advanced" label, noting topics like dead code elimination and SSA form belong in a first compilers course; others counter that the course focuses on the backend and reading academic papers.