|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:
On the other hand, if you really want to dive deep into compiler magic, then this is the chance you've been waiting for...
or email your comment to: firstname.lastname@example.org
|Last Updated ( Tuesday, 19 January 2021 )|