CS 426: Compiler Construction

Fall 2022

12:30 - 01:45PM Wednesdays and Fridays, 1302 Everitt Laboratory

Course Number 43355 (3 hours) / 43356 (4 hours)


Teaching Staff

Instructor: Vikram Adve
Office: 4235 SC
Phone: 217-244-2016
Email: vadve@illinois.edu
Office Hours: Wednesday 2-3pm (initially in foyer outside Everitt 1302 and then in my office, Siebel 4235) or by appointment via Piazza private message.

Teaching Assistant: Aaron Councilman
Pronouns: they / them
Email: aaronjc4@illinois.edu
Office Hours: Thursday 3-4pm (Zoom)

Teaching Assistant: Leon Medvinsky
Email: leonkm2@illinois.edu
Office Hours: Monday 3-4pm (Zoom)

Course Assistant: TBA

Statement on CS CARES and CS Values and Code of Conduct

All members of the Illinois Computer Science department - faculty, staff, and students - are expected to adhere to the CS Values and Code of Conduct. The CS CARES Committee is available to serve as a resource to help people who are concerned about or experience a potential violation of the Code. If you experience such issues, please contact the CS CARES Committee. The instructors of this course are also available for issues related to this class.

Course Content

The purpose of this class is to examine the design and implementation of an optimizing compiler. Students will learn about common optimizations, intermediate languages, and design choices in lecture and will learn about the software engineering challenges of implementing a compiler for an imperative, object-oriented language in machine problems.

Assignments

Students will complete two homeworks and four machine problems throughout the course, plus a fifth machine problem for students in the 4-hour section (N4). There will also be a midterm and a final exam. Each machine problem will build on the previous one, so it is expected that students will write maintainable, reusable, well-documented code for assignments. Information on grading policies can be found below.

Textbook

Either of the following books provides good coverage of many topics in the course. You may also find this additional reading useful:

Piazza

For questions to the instructors and discussions among students we have set up a forum on Piazza. This is an external website not affiliated with the University of Illinois.

NOTE: No solutions or code should be posted by students on Piazza. Only the instructors may post solutions or hints.

Lecture Notes

Copies of the slides used in class have been posted on the course website. If any changes are needed for a topic (which is infrequent), they will be posted at least by 5pm before each class. This way, you do not need to copy down material on the slides. Nevertheless, you should take detailed notes during the lectures. NOTE: The slides are generally sparse, containing only brief bullets on key points. For example, they are insufficient for studying for exams. This is why you should be sure to take notes during the lectures.

Homeworks and Exams

There will be two homeworks and two exams, spaced out over the course of the semester. The midterm exam will be in class and the date will be announced shortly. The final exam will be at the normal time scheduled by the University for our class slot.

Project Description

This class has a semester project divided into four MPs. Graduate students who are taking the course for 4 credit hours (hereinafter, and without loss of generality, referred to as 1-unit students) will be required to do a fifth and more substantial part during roughly the second half of the semester. The broad goals for the project are described on the course project page.

Grading Policies

  UG or 0.75 unit grads 1-unit grads
MP1-MP4 40% 32%
Homeworks 20% 16%
Midterm Exam 15% 12%
Final Exam 25% 20%
Unit Project N/A 20%

Computing Facilities

We will use the EWS machines for the programming projects. See the EWS web site for more information. All students should automatically have accounts assigned. You are responsible for getting your own passwords and making sure you can access the account in the first week of classes.

General Course Policies

Second-chance Submissions:

Incomplete MPs

Lateness

Cheating

You are NOT to copy solutions from ANY source (including, but not limited to, books, people, old class notes or handouts). While the pressures of many classes, homeworks, work and/or extracurricular activities can be great, this is never an excuse for copying solutions from others. "Helping" somebody by allowing them to "borrow" your homework is not doing them a favor either, but indicates your approval and active participation in such activities.  Refer to the Campus Code regarding academic integrity.  A first offense will result in a zero on the assignment or exam, as well as reducing the overall course grade by a whole letter grade. If you are aware of any breach of academic integrity, it is your responsibility to report it to the instructor.

Discussing your problems with other students, however, is encouraged and even highly recommended. This means asking someone to look at parts of your code to give you advice, asking them for suggestions when you face an obstacle, working out example exercises together that are not on an assigned homework, or just discussing any aspect of the material.  What you may not do is to copy or any in way use code or homework solutions written by anyone else or dictated by anyone else.  As responsible adults, you can draw the distinction between cheating and honest behavior: exercise your judgement and try to preserve the highest level of professional integrity in everything you do.

Bottom line: You may discuss difficulties with others and get occasional help with debugging but you must write your code entirely by yourself.

How to Get the Most out of this Course

  1. Read the text as it is quite thorough, with many examples worked out, good motivating discussions, and useful intuition.
  2. Participate actively in class: ask questions when you don't understand something, and share in the in-class exercises.
  3. Do the homeworks and project assignments ahead of time whenever possible.  Working madly to beat a deadline is a terrible way to learn!