CS 6120: Advanced Compilers β Syllabus

This is a research-oriented PhD course about programming language implementation. The class focuses on reading and discussing research papers and independent hacking on open-source projects.

This Course is in Beta

CS 6120 is a brand new, experimental course. Everything might change. Nothing is certain.


Sign up for the course Slack. All course communication will happen there. I’m absolutely serious about this; there won’t be email about this course. You have to pay attention to Slack.


These are things we’ll do in the first week of classes. The deadline for both is Friday, September 6.

Introductions. Post an introductory message on Slack. Give the name you like people to refer to you with and mention one thing you’re interested in learning about in CS 6120. This suggestion can be as general as an entire topic or as specific as a particular paper. (There are no guarantees that we’ll actually cover your idea.)

Non-PhD students. CS 6120 is for PhD students at Cornell. If that doesn’t describe you, you need to apply to take the course. Write answers to these two questions: (1) What is CS 6120 about? (2) Why do you want to take the course? Submit your responses as a one-page PDF to Adrian via Slack.

Discussion & the Time

This is a discussion-focused course. To get the value out of the course, you need to show up and participate. Everyone needs to do the reading ahead of time—you are not allowed to just pick it up on the fly in class.

I know that the 9am start time might be hard for some people—I encourage you to see it as an opportunity to become a morning person. If 9am repeatedly doesn’t work for you, I will ask you to drop the course.

Paper Reading, Perspectives, and Presentations

One part of the “work” in CS 6120 is about reading and understanding research papers. For some small subset of the classes, you will be the discussion leader. The discussion leader has two main responsibilities: writing a blog post and facilitating the in-class discussion.

I will grade both your blog post and your in-class discussion facilitation. Each one will use a Michelin star system: you should shoot for one star, indicating a remarkably insightful exploration of the research. A merely acceptable blog post or discussion will receive no stars, and extraordinary work can receive multiple stars.

Read more about leading discussions.

Implementation Projects and Design Reviews

The big part of the course “work” consists of language implementation projects. These are all open-ended (to varying degrees) and open-source projects—even when you implement a well-known technique, how you approach the design and implementation are up to you and will inevitably end up being unique. Each project culminates in an experience report on the course blog and an in-class design review.

I will grade your blog post and design review using the same Michelin star system as for paper discussion leading. Your grade will depend on the ambition of the project, the clarity of your report and design review, and the rigor of your empirical evaluation---but not on the success of your idea (negative results are OK).

Read more details on how projects work.

Ad Hoc Implementation Homework

Especially during the first part of the course, another part of course “work” will be implementing compiler algorithms that we learn about in class. In a given class, you'll come up with the pseudocode for an algorithm. Then, you should work outside of class—by yourself or with other students—to implement the algorithm for Bril programs.

You won’t turn this code in, but you really should do it without looking at the provided implementations. Struggling to derive pseudocode before you see the answer is the best way to solidify the big concepts in this course. Struggling to get an actually correct implementation is the best way to confront the nitty-gritty details that are intrinsic to compiler implementation. Avoid the temptation to stop when you’ve got it most of the way—the idea is to go all the way to a complete, tested implementation to get the most out of the assignment.


Academic Integrity

Absolute integrity is expected of all Cornell students in every academic undertaking. The course staff will prosecute violations aggressively.

You are responsible for understanding these policies:

You can also read about the protocol for prosecution of violations.

Everything you turn in must be ether 100% completely your own work or clearly attributed to someone else. You may discuss your work with other students, look for help online, get writing feedback from the instructor, ask your friend to help debug something, or anything else that doesn't involve someone else doing your work for you. You may not turn in any writing that you did not do yourself or misrepresent existing implementation work as your own.

The projects in this course are open source, and you may use existing code in your implementation—including code written by other students in this course. You must, however, make it clear which code is yours and which code is borrowed from where.

Respect in Class

Everyone—the instructor, TAs, and students—must be respectful of everyone else in this class. All communication, in class and online, will be held to a high standard for inclusiveness: it may never target individuals or groups for harassment, and it may not exclude specific groups. That includes everything from outright animosity to the subtle ways we phrase things and even our timing.

For example: do not talk over other people; don't use male pronouns when you mean to refer to people of all genders; avoid explicit language that has a chance of seeming inappropriate to other people; and don't let strong emotions get in the way of calm, scientific communication.

If any of the communication in this class doesn't meet these standards, please don't escalate it by responding in kind. Instead, contact the instructor as early as possible. If you don't feel comfortable discussing something directly with the instructor—for example, if the instructor is the problem—please contact the advising office or the department chair.

Special Needs and Wellness

We provide accommodations for disabilities. Students with disabilities can contact Student Disability Services at 607-254-4545 or the instructor for a confidential discussion of their individual needs.

If you experience personal or academic stress or need to talk to someone who can help, contact the instructor or: