CS 6120: Advanced Compilers γ Syllabus

This is a research-oriented PhD course about programming language implementation. The class focuses on hacking, reading papers, and writing blog posts.

Communication

Please sign up for the course Zulip. All course communication will happen there (not on email).

(Zulip is an open-source Slack-like chat tool with a few unique features that make it a good fit for class discussion. Thanks to the Zulip folks for donating a plan for 6120!)

Class Sessions

The scheduled class sessions for 6120 have a funky flipped format this year. Everything happens on Zoom (please join Zulip for the link). Check the schedule for each day of class—it will fall into one of two categories:

The Work

There are four kinds of things that make up the coursework for CS 6120.

Implementation Tasks

To reinforce the specific compiler techniques we learn about in class, you will work on implementing them on your own. The usual pattern is that we will come up with the high-level idea and the pseudocode in lessons; your job is to turn it into real, working code and collect empirical evidence that it's working. Going through the complete implementation will teach you about realities that you cannot get by thinking at a high level.

You can work individually or in groups of 2–3 students. When you finish an implementation, do this:

Paper Reading & Discussion

Another part of 6120 is reading and discussing research papers. Every time we read a paper (see the schedule), you need to participate in Zulip and Zoom discussion. For every paper, there will be a Zulip topic; post at least one message there with your thoughts on the paper before the class period with the discussion.

For some subset of the papers, you will be the discussion leader! For those, here is what you need to do—all due one week before the designated day:

Project

At the end of the course, you'll do a language implementation research project. This is an open-ended and open-source project that can be on any topic that you can construe as being about compiler hacking. The final product is an experience report on the course blog where you rigorously evaluate the success of your implementation.

You can work individually or in groups of 2–3 people.

Proposal

The first deadline is the project proposal. Open a GitHub issue answering these three questions, which are a sort of abbreviated form of the Heilmeier catechism:

You should also list the GitHub usernames of everyone in the group. After you send the PR, submit its URL to the "Project Proposal" assignment on CMS.

The instructor will have feedback on how to approach your project.

Implementation

The main phase, of course, is implementing the thing you said you would implement. I recommend you keep a “lab notebook” to log your thoughts, attempts, and frustrations—this will come in handy for the report you'll write about the project.

I strongly recommend that you develop your code as an open-source project. Use a publicly-visible version control repository on a host like GitHub, and include an open source license. When you create your repository, comment on your proposal GitHub issue with a link. (If you have a specific objection to open-sourcing your code, that's OK—include a description of how you'll share your code privately with me.)

Evaluation

A major part of your project is an empirical evaluation. To design your evaluation strategy, you will need to consider at least these things:

Other questions may be relevant depending on the project you choose. Consider the SIGPLAN empirical evaluation guidelines when you design your methodology.

Experience Report

For the main project deadline, you will write up the project’s outcomes in the form of a post on the course blog. Your writeup should answer these questions in excruciating, exhaustive detail:

As with paper discussions, you can optionally include a video to go along with your blog post.

To submit your report, open a pull request in the course’s GitHub repository to add your post to the blog. In your PR description, please include “closes #N” where N is the issue number for your proposal. The repository README has instructions.

Grading

I will grade the four categories of coursework based on a Michelin star system: you should shoot for one star, indicating excellent implementation work, insightful participation, a thoughtful blog post, or a spectacularly successful project. Merely acceptable work will receive no stars, and extraordinary work can receive multiple stars. On CMS, all assignments are out of one point, indicating the number of stars.

Consistently earning a Michelin star will get you an A for the course. Occasional multi-star work yields an A+, and missing stars leads to incrementally lower grades.

Policies

Non-PhD Enrollment

CS 6120 is for PhD students at Cornell. If that doesn’t describe you, you can still apply to take the course. Write short 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 Zulip.

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: