The link is to Cornell’s self-guided version of CS 6120, an online advanced compilers course built around optimizing compiler techniques rather than the basic mechanics of building a parser and code generator. People who know compiler courses framed it as the natural follow-on to an intro class. The first course gets you to a working compiler. This one gets into SSA form, dataflow, dominators, instruction selection, register allocation, garbage collection, and papers behind modern optimization work.
The strongest reaction was simple approval. This is a lot of high-quality material being given away. The more useful argument was over the word “advanced.” Several readers thought the syllabus looked too foundational for that label. The pushback was that this is exactly what counts as advanced in practice for most compiler engineers. Intro courses often stop at lexing, parsing, and basic codegen. The hard part in real systems is the optimizer and backend. People also noted that many books popular with hobbyists barely touch that territory at all.
The liveliest technical exchange was about the course’s dynamic compiler section, which leans on trace compilation. Experienced
JIT people said tracing has repeatedly failed as the main organizing idea for dynamic language VMs, especially in JavaScript, where branchy and unpredictable real-world programs create pathological cases and unstable performance. The concepts that aged well are
type feedback,
inline caches, speculation,
deoptimization, fast compilation, and
tiering. Others pushed back that tracing is hardly dead everywhere. LuaJIT still works at huge scale, and systems like
JAX and
PyTorch also use tracing. The consensus that emerged was narrower and more practical: tracing is weak as a general-purpose dynamic-language strategy, but it remains effective in constrained domains like numerical and
ML workloads where control flow is unusually stable and the runtime stack is built around that assumption.
For newcomers, the course was positioned above books like Writing a C Compiler and well after interpreter-focused material like Crafting Interpreters. Several concrete on-ramps were suggested for anyone who wants a more formal first pass before diving into this one.