COLLEGE OF ENGINEERING, UIC
CS 473 Compiler Design
4/3 Credit Hours (Graduate/Undergraduate)
Fall 2026
Course modality: On campus
Days/Times: Monday/Wednesday 12h30pm-1h45pm
Location: CDRLC 1406 (also on the CS
473 Zoom room)
The purpose of this course is to learn how to transform programs written in common user-level programming languages into code that can be executed by the processor. We will cover all the stages of a compiler, from processing program text into an internal representation, through optimization and program improvement, to the generation of assembly code.
Prerequisite/Corequisite:
Course materials and assignments can be complex and challenging, but they are crucial to your intellectual and personal growth and development. There are times you may need extra help. Students who attend class consistently, complete all assignments, thoughtfully engage with feedback on work, develop good study strategies, visit the tutoring center, and contact faculty when struggling can develop a thorough understanding of the course material and ultimately succeed in the course.
Course requirement status: Elective
Topics overview: Lexical Analysis, Regular expressions,
Deterministic and non-deterministic finite automata, Parsing, Grammars:
LL, LR(0), LR(1), LALR(1), Abstract Syntax Trees (ASTs), Symbol
resolution, Type checking, Function frames, Stack machines, Assembly
code: MIPS, Translating ASTs to assembly language, Intermediate
representation (IR), Translating IR to assembly language, Liveness
analysis. Register allocation. Compiler optimizations, Dataflow
analysis
Required materials:
Please protect the copyright integrity of all course materials and content. Please do not upload course materials not created by you onto third-party websites or share content with anyone not enrolled in our course.
You must complete Assignment 0 and the Syllabus Quiz during the first 2 weeks of class to receive a grade higher than F in this course:
Assignment 0 ensures you understand how to start and submit the programming assignments. It consists of following a video tutorial and: (1) Starting an assignment on Forgejo; (2) Checking your assignment grade through the autograder; (3) Performing a trivial change to the original code given the feedback on the autograder; (4) Submitting the updated code; and (5) Checking your final grade on the autograder.
Syllabus Quiz ensures that you read and understand this document by answering 20 questions, with a focus on the logistics and academic integrity.
The following table explains the grade components for undergraduate and graduate students. Note that some components have a minimum grade for a passing grade. Students that fail to achieve that minimum grade will receive an F letter grade, regardless of the other components.
| Rubric | Undergraduate | Graduate | Minimum Grade |
|---|---|---|---|
| Attendance | 15% | 15% | — |
| Programming assignments | 40% | 40% | 60% |
| Midterm exam | 20% | 20% | — |
| Final exam | 25% | 25% | — |
| TOTAL | 100% | 100% | — |
Attendance will be measured using one of three alternatives:
For full attendance, you can only miss 3 classes. For example, for undergraduate students:
Programming assignments will be made available and submitted through Forgejo. You will have access to an instance of Forgejo specific to this course, which you can log in to using your UIC credentials.
To submit a programming assignment, you simply push your changes to the repository that will be created for you. There will be an autograder made available. The autograder will run every time you submit new code, and it will generate a grade based on how many tests your submission passes.
The date of submission is the date of the last commit in your repository.
This course will use the CLion as the editor for your programming assignments. CLion is free for students (you have to register for an educational account first), available for all common platforms (e.g., OSX, Linux, and Windows) and supports editing, debugging, and submitting your assignments. You are responsible for installing CLion on your machine. We will release a video to cover how to import, edit, and submit your assignments.
A portion of each assignment may be based on questions or screencast videos (submitted through Gradescope) that require you to explain a particular aspect of your submission (e.g., how do you parse complex strings with octal numbers in them).
Graduate students will have more work to do than undergraduate students, to reflect the difference in credit hours.
Assignments split in half: Some assignments have 2 deadlines, you should complete the first half by the first deadline and the second half by the second deadline.
Assignments will be released and due according to the following schedule:
| Assignment | Release date | Due date |
|---|---|---|
| 0 | 08/26/2026 | 09/05/2026 5pm |
| 1 | 09/02/2026 | 09/12/2026 5pm |
| 2 | 09/16/2026 | 09/26/2026 5pm |
| 3.1 | 09/30/2026 | 10/10/2026 5pm |
| 3.2 | 09/30/2026 | 10/17/2026 5pm |
| 4.1 | 10/21/2026 | 10/31/2026 5pm |
| 4.2 | 10/21/2026 | 11/07/2026 5pm |
| 5.1 | 11/11/2026 | 11/21/2026 5pm |
| 5.2 | 11/11/2026 | 12/05/2026 5pm |
Exams will take place in-person.
Final grade scale: Students that score less than 60% in the programming assignments: F, regardless of the other components. Otherwise: A 90% or higher, B 80% or higher, C 70% or higher, D 60% or higher, F for below 60%. Important note: the actual cut-offs may be slightly lower, the instructor will determine the curve once all the components for all the students have been graded (after the final exam).
Assignment resubmission: After the due date, the instructors will post a screen-capture video of the instructors solving the assignment from the starting code to a 100% grade. You can follow this video and update your submission to fix what you got wrong. You can then resubmit your assignment and get credit for that.
Exams: No makeup exams and quizzes will be permitted.
The attendance policy is described above.
Participation bonus: Each programming assignment will have a bonus component based on Piazza participation. Each question/answer that you contribute that is tagged with the assignment tag and marked as good by an instructor is worth 5%. Each duplicated question you find by answering with the original question and answer, under the same circumstances as above, is worth 5%. You will be able to get 10% or more in bonus points for each assignment.
Early completion bonus: For assignments split in half, any work for the second half that you complete before the first deadline will receive bonus points.
As a student and member of the UIC community, you are expected to adhere to the Community Standards of academic integrity, accountability, and respect. Please review the UIC Student Disciplinary Policy for additional information.
Unless stated otherwise, all work submitted for grading must be done individually. While instructors encourage you to talk to your peers and learn from them, this interaction must be superficial with regards to all work submitted for grading. This means you cannot work in teams, you cannot work side-by-side, you cannot submit someone else’s work (partial or complete) as your own.
All the submissions for programming assignments will be checked for plagiarism using an automated tool that checks each submission against all other submissions. The tool is sophisticated enough to detect variable renaming, code transformation (turning a for loop into a while loop, inverting an if statement, moving functions/methods to a different place/file, etc.) and I will investigate personally submissions that are classified as much more similar than average.
Plagiarism on a programming assignment will result in an immediate zero grade for that assignment, a one letter grade drop from your final grade (e.g., from B to C, or from D to F), loss of all bonus points given throughout the semester, and a report filed with the Dean of Students for all parties involved.
Attempting to claim undeserved bonus points, (e.g., by modifying an existing and already endorsed Piazza post), will result in losing all bonus points in this course.
Academic dishonesty is unacceptable, and penalties can result in expulsion from the university. All cases are handled via the official student conduct process.
In particular, note that you are guilty of academic dishonesty if you extend or receive any kind of unauthorized assistance. You may not solicit code from family, friends, or online forums. Other examples of academic dishonesty include emailing your program to another student, working in a group on a homework assignment, and allowing a tutor, TA, or another individual to write an answer for you. It is also considered academic dishonesty if you click someone else’s iClicker with the intent of answering for that student.
If you are struggling with a particular part of your assignments, post a question on Piazza. Other students may be struggling as well and benefit from the discussion around your question. If you see a student asking a question that you know how to answer with a small code example carefully curated from your assignment (e.g., how to use an API to parse a file), it is acceptable to share that code. Use your common sense to not disclose important parts of the assignment. For instance, if you are struggling with C but not with the concepts of an assignment, showing/sending your code to a fellow student is considered a violation of academic integrity. Posting a question on Piazza about that same issue is rewarded with bonus points.
You are required to be the sole author of all the code you submit for the assignments. Submitting code not authored by you (e.g., copy/pasted from an AI tool) violates the academic integrity policy (described above) and will result in applying all the penalties. When performing plagiarism checks, instructors will include code copied directly from common AI assistants submission to detect such cases.
The use of shared computers may lead to inadvertently accessing someone else’s code for an assignment, which will be counted as plagiarism. A shared computer is a computer that is accessible potentially by many students. Your own personal computer can become a shared computer if you allow a fellow student to use it in the context of this course. Examples of shared computers include (but are not limited to):
If you use your credentials on another student’s computer, then fail to log-off securely, and that other student accesses your answers, both are guilty of academic dishonesty. I suggest using incognito/private mode in modern browsers when using your credentials on any computer that may be accessed by someone else. Using shared computers can lead to complications that are considered plagiarism. When using shared computers, pay close attention to each submission of each assignment. For instance, the following situations can happen:
Students are expected to use Piazza for any communication with the instructors. Instructors will not read any email received, and simply reply with a redirection to read this document instead.
Students are responsible for reading all information instructors publish on Piazza. Faculty messages should be regularly monitored and read in a timely fashion.
Instructors may need to communicate directly with students via a private Piazza message. Instructors will assume that students read all private Piazza messages within 24h.
This syllabus is intended to give the student guidance on what may be covered during the semester and will be followed as closely as possible. However, as the instructor, I reserve the right to modify, supplement, and make changes as course needs arise. I will communicate such changes in advance through in-class announcements and in writing via Piazza announcements.
UIC is committed to full inclusion and participation of people with disabilities in all aspects of university life. If you face or anticipate disability-related barriers while at UIC, please connect with the Disability Resource Center (DRC), via email at drc@uic.edu, or call (312) 413-2183 to create a plan for reasonable accommodations. To receive accommodations, you will need to disclose the disability to the DRC, complete an interactive registration process with the DRC, and provide me with a Letter of Accommodation (LOA). Upon receipt of an LOA, I will gladly work with you and the DRC to implement approved accommodations.
Following campus policy, if you wish to observe religious holidays, you must notify me by the tenth day of the semester. If the religious holiday is observed on or before the tenth day of the semester, you must notify me at least five days before you will be absent. Please send me a Piazza message with a title: “YOUR NAME: Requesting Religious Accommodation.”
UIC values diversity and inclusion. Regardless of age, disability, ethnicity, race, gender, gender identity, sexual orientation, socioeconomic status, geographic background, religion, political ideology, language, or culture, we expect all members of this class to contribute to a respectful, welcoming, and inclusive environment for every other member of our class. If aspects of this course result in barriers to your inclusion, engagement, accurate assessment, or achievement, please notify me as soon as possible.
If your name does not match the name on my class roster, please let me know as soon as possible. I welcome your pronouns if you would like to share them with me. For more information about pronouns, see What and Why of Pronouns on MyPronouns.org.
Our classroom provides an open space for a critical and civil exchange of ideas, inclusive of a variety of perspectives and positions. Some readings and other content may expose you to ideas, subjects, or views that may challenge you, cause you discomfort, or recall past negative experiences or traumas. I intend to discuss all subjects with dignity and humanity, as well as with rigor and respect for scholarly inquiry. If you would like me to be aware of a specific topic of concern, please send me a message on Piazza or visit my Student Drop-In Hours.
We all need the help and the support of our UIC community. Please visit my office hours for course consultation and other academic or research topics. For additional assistance, please contact your assigned college advisor and visit the support services available to all UIC students.
08/18/2026 Document available
08/25/2026 Fixed wrong minimum assignment grade (was 65%, fixed to 60%)
08/28/2026 Added TA details
09/08/2026 Removed stale references to Blackboard
09/24/2026 Converted syllabus to HTML