Take Cornell's CS 6120 Advanced Compilers For Free
Written by Nikos Vaggalis   
Tuesday, 19 January 2021

A PhD-level course, originally provided remotely to Cornell Computer Science students, has now been made available for free to anyone in a self-paced version.


The full title of this course is Fall 2020: CS 6120, “Advanced Compilers”. It a new and experimental PhD-level course about programming language implementation using a broad definition of "compilers".It is taught by Adrian Simpson, an assistant professor in the Department of Computer Science at Cornell University, who specializes in programming languages and computer architecture.

The course covers:

Universal compilers topics like intermediate representations, data flow, and “classic” optimizations as well as more research-flavored topics such as parallelization, just-in-time compilation, and garbage collection.Use of LLVM and an educational IR ( intermediate representation,called Bril) invented just for this class:

Bril is an instruction-oriented language, like most good IRs.The core is minimal and ruthlessly regular. Extensions make it interesting.The tooling is language agnostic. Bril programs are just JSON.Bril is typed.

There are 13 Lessons comprising of videos, notes, and tasks in writing code.In the end there's also a final assignment. The main differences with the “real” CS 6120 is that you can ignore the task deadlines and you can’t participate in the class's discussion hreads.

These lessons are :

Lesson 1: Welcome & Overview

Lesson 2: Representing Programs

Lesson 3: Local Analysis & Optimization

Lesson 4: Data Flow

Lesson 5: Global Analysis & SSA

Lesson 6: LLVM

Lesson 7: Loop Optimization

Lesson 8: Interprocedural Analysis

Lesson 9: Alias Analysis

Lesson 10: Memory Management

Lesson 11: Dynamic Compilers

Lesson 12: Program Synthesis

Lesson 13: Concurrency & Parallelism

Each lesson has an associated task. For instance, Lesson 2 requires the student to acquire familiarity with Bril, write a new benchmark and a program to analyze or transform Bril programs in some small way. Since you'll be taking the self-paced counterpart you don't have to submit the tasks, although it is advisable to attempt them in order to solidify the theory. The issue with that is that if you run into problems, there's no real help as you can't ask anyone.

In between the lessons students are expected to read externally referenced research papers, such as "An Efficient Implementation of SELF, a Dynamically-Typed Object-Oriented Language Based on Prototypes", "Chlorophyll: Synthesis-Aided Compiler for Low-Power Spatial Architectures", or "Trace-Based Just-in-Time Type Specialization for Dynamic Languages".

This course is not about parsing, but about the deeper topics of the semantics of programs and compiler optimization. It requires a lot of research and is very theoretical, living up to its branding as a "PhD-level" course. If you're more practical then you're better off with the more down-to-earth alternatives of the following great books:

How To Create Pragmatic, Lightweight Languages

Parsing with Perl 6 Regexes and Grammars 

On the other hand, if you really want to dive deep into compiler magic, then this is the chance you've been waiting for...

More Information

CS 6120: Advanced Compilers: The Self-Guided Online Course

Directory of all lessons' video lectures 

Related Articles

How To Create Pragmatic, Lightweight Languages
Parsing with Perl 6 Regexes and Grammars 


To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on, Twitter, Facebook or Linkedin.



jQuery 3.6 Released

After a considerable gap between releases, jQuery 3.6 is out, bringing with it bug fixes and improvements. Despite what you might think, it is still very relevant.

TypeScript 4.2 Release Candidate Available

Microsoft has announced the release candidate of TypeScript 4.2. The new version improves the handling of rest elements in tuple types, and supports smarter type alias preservation.

More News





or email your comment to: comments@i-programmer.info

Last Updated ( Tuesday, 19 January 2021 )