View the Project on GitHub TiarkRompf/cs352

Compilers: Principles and Practice

Spring 2018, 3 credits. Instructor: Gregory Essertel (Tiark Rompf)

Announcements will be posted on Piazza. Homework submission and grading will be done through Blackboard

Midterm will be in March/April, the exact date and time will be announced later.

Lectures are Tuesdays and Thursdays, 1:30pm to 2:45pm in Grissom Hall GRIS 103.

PSO sessions are:

  • Monday 9:30am to 11:20am in Haas 257
  • Wednesday 11:30am to 1:20pm in Lawson B146
  • Wednesday 1:30pm to 3:20pm in Haas G040
  • Friday 1:30pm to 3:20pm in Haas G040

Gregory Office hour is Monday at 5:30PM to 6:30PM HAAS G050

James Office hour is Wednesday at 10:00AM to 11:00AM HAAS G050

About the Course

In a nutshell: The theory and practice of programming language translation, compilation, and run-time systems, organized around a significant programming project to build a compiler for a simple but non-trivial programming language. Modules, interfaces, tools. Data structures for tree languages. Lexical analysis, syntax analysis, abstract syntax. Symbol tables, semantic analysis. Translation, intermediate code, basic blocks, traces. Instruction selection, CISC and RISC machines. Liveness analysis, graph coloring register allocation. Supplemental material drawn from garbage collection, object-oriented languages, higher-order languages, dataflow analysis, optimization, polymorphism, scheduling and pipelining, memory hierarchies.

The first part of the class is inspired by the paper An Incremental Approach to Compiler Construction by Abdulaziz Ghuloum. This second part of the class is heavily based on the Advanced Compiler Construction class taught by Michel Schinz at EPFL. The ACC class materials (lecture slides, programming assignments, etc) are used with permission.

Grades: Final grades will be based on results for the midterm (20%) final (30%) project (50%)

Late Work Policy: No late submission will be accepted. Exceptions will be given only in the most extreme circumstances. Any travel, including interview trips, load from work or other classes, or simply not being able to get your program to run will not be grounds for extensions or exceptions.

Honesty, Integrity, & Conduct

Taken from here

Acedemic Integrity: This link is to a more comprehensive document on academic honesty, cheating, and plagiarism. You are expected to read that page, and you will be held accountable for its contents!

Courtesy in Class and Elsewhere: Being polite never went out of style. If you act with consideration it will enhance your image and help you get along with others. This is a professional environment, and we request that you act accordingly. This includes: If you are waiting to talk to a TA or faculty member, or waiting to get into a class, wait quietly along the wall and do not block the hallway. If you are seriously ill, overly tired, hungover, or otherwise impaired, do not come to class as you may be a distraction for others. If you absolutely must attend, sit where you will not disrupt others. Respect the right of others to ask questions or make statements in class and labs — do not interrupt. Do not insult or deride others for any reason — even if you intend it to be funny, because not everyone who hears it may understand it is in jest. Be on time for classes and labs. Showing up late is disruptive and discourteous to your instructors and classmates. Some of your instructors may not care if you address them in a casual manner, but don't assume that all do. Email addressed as "Hey" or "Yo" is never appropriate. (Here's one professor's take on this.) Don't leave your trash for others to collect — in the classrooms, halls, commons, or walks. The basic idea behind all of these and more is simple: treat others with courtesy and respect, similar to how you want others to treat you. If you make an extra effort to be polite the effect cascades and we all have a more pleasant environment in which to work.

Recommended Book

Further Reading