COLLEGE OF ENGINEERING, UIC

CS 473 Compiler Design

4/3 Credit Hours (Graduate/Undergraduate)

Fall 2026

Instructor & Course Details

Instructor:
Luís Pina
Email:
luispina@uic.edu (you should use Piazza for any class-related communications)
Drop-In Office Hours:
  • In-person: Monday/Wednesday 2pm–3pm
  • Remote (via Zoom): Friday 1pm–2pm
  • It is possible to schedule extra office hours by appointment
Drop-In Hours Location:
TA:
Joseph Wiseman
Email:
jwisem6@uic.edu
Drop-In Office Hours:
  • In-person: Tuesday 1pm–3pm
    • Note: If no one shows up in the first hour, the second hour may be cancelled. Let us know if you plan to arrive late.
  • Remote (via Zoom): Thursday 1pm–3pm
Drop-In Hours Location:
Course site:
CS 473 course website

Course modality: On campus
Days/Times: Monday/Wednesday 12h30pm-1h45pm
Location: CDRLC 1406 (also on the CS 473 Zoom room)

Course Information

Catalog Course Description and Prerequisite/Corequisite Statement

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:

Growth Mindset

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 Goals and Learning Outcomes

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:

Required Technology

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.

Course Policies & Classroom Expectations

Grading Policy and Point Breakdown

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.

Grade components:

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.

Grade components and their weight for undergraduate and graduate students
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

Attendance will be measured using one of three alternatives:

  1. In-person clicker-style quizzes during class. Attend the class in-person and answer all clicker-style questions via iClicker. For full marks on one class you have to answer 80% of all questions, regardless of correctness. This means that incorrect answers count as much as correct answers.
  2. Remote attendance: Attendance via Zoom is allowed provided that the majority of students attend in-person. Students should use Zoom as an exception for days you cannot be on campus. If in-person attendance drops below 50%, iClicker availability via Zoom will be disabled.
    1. Instructors will perform random “spot checks” by asking students to press a particular button. If a student fails to do so, the instructors will assume they are passively pressing buttons instead of paying attention, and such student will not get attendance for that class.
    2. Failing several random “spot checks” will be considered a violation of the academic honesty policy, and will incur the penalties described later in this document.
  3. Asynchronous offline lecture-capture watch. A quiz will be made available after each class on Gradescope, in which you have to answer a subset of the clicker-questions correctly as you watch the lecture recording.
    1. When multiple options are correct, you have to select them all. This should be clear when following the lecture recording.
    2. Some clicker questions in class may be skipped in the quiz. Echo360 will have a modified slide deck in which each Gradescope question is clearly marked.
    3. The quiz must be completed by Sunday at 5pm of the same week as the class.

For full attendance, you can only miss 3 classes. For example, for undergraduate students:

  1. If you miss between 0 and 3 classes, your attendance will be 15%
  2. If you miss 4 classes, your attendance will be (27 – 4) / 27 x 15% = 85.2% x 15% = 12.8%

Programming assignments

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.

Exams

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).

Policy for Missed or Late Work

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.

Attendance and Participation Policy

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.

Academic Integrity

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.

Use of AI assistants

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.

Use of shared computers

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:

Email Expectations

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.

Course Schedule

Week 1.
Overview of what a compiler is and does
Week 2.
Lexing
Week 3.
Parsing – Context Free Grammars, yacc, and disambiguation
Week 4.
Parsing – LL, LR(0), LR(1), LALR(1)
Week 5.
Parsing – Conflicts, Abstract Syntax Trees (ASTs)
Week 6.
Semantic analysis – Symbol resolution
Week 7.
Semantic analysis – Type checking
Week 8.
Intermediate Representation (IR) – AST Transformation, Translation, Basic Blocks
Week 9.
Code generation and Stack Machines
Week 10.
Code generation – MIPS assembly
Week 11.
Code generation – Stack frames
Week 12.
Register Allocation
Week 13.
Analysis and Optimization – Loop optimization
Week 14.
Analysis and Optimization, Compiler testing
Week 15.
Conclusion and Research Topics
Week 16.
Final exam week

Disclaimer

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.

Accommodations

Disability Accommodation Procedures

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.

Religious 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.”

Classroom Environment

Inclusive Community

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.

Name and Pronoun Use

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.

Community Agreement / Classroom Conduct Policy

Content Notices

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.

Resources: Academic Success, Wellness, and Safety

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.

Academic Success

Wellness

Safety

Change log

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