CS-540 Syllabus
Course Summary
This course offers a comprehensive introduction to the theory and practice of compiler construction. Students will learn all stages of the compilation process, from front-end parsing to intermediate representations and backend code generation. Each session combines fundamental theory with motivating examples to promote a clear and practical understanding. Short in-class quizzes will reinforce key concepts and support active learning.
Class Time and Location
Time: Tuesday 4:30 pm-7:10 pm
Date Range: Aug 26, 2025 - Dec 2nd, 2025
Location: Innovation Hall 215G
Instructor
Name: Keren Zhou
Email: kzhou6@gmu.edu
Office: ENGR 5315
Office Hour: Tuesday 3:30pm - 4:30pm
Teaching Assistants
Name: Ruochen Wang
Email: rang29@gmu.edu
Office: ENGR 4456
Office Hour:
- Tuesday 11am-noon
- Thursday 11am-noon
Canvas Moderator Hour: Monday - Friday
Prerequisites
CS 310 and CS 330 and CS 367
Course Objectives
- Provide a comprehensive introduction to fundamental compiler concepts.
- Introduce students to state-of-the-art research directions and industry practices in compiler design.
- Facilitate hands-on experience by reproducing and analyzing results from classical and influential compiler papers.
Textbooks
- Compilers: Principles, Techniques, and Tools: Aho, Alfred, Ullman, Jeffrey, Sethi, Ravi, Lam, Monica
You are not expected to read every chapter in the textbooks in order to succeed on the quizzes.
Honor Code
Please follow GMU’s honor code policy:
To promote a stronger sense of mutual responsibility, respect, trust, and fairness among all members of the George Mason University community and with the desire for greater academic and personal achievement, we, the student members of the university community, have set forth this honor code: Student members of the George Mason University community pledge not to cheat, plagiarize, steal, or lie in matters related to academic work
And the CS department has its own policy.
Please do note there has been revisions to the honor code policy:
Unless permission to do so is granted by the instructor, you (or your group, if a group assignment) may not:
…
- use assistive technology, artificial intelligence, or other tools to complete assignments which can generate, translate, or otherwise create/correct code or answers (many types of assistive technology may be permitted, but you must ask permission)
Disability Accommodations
Should you possess documented evidence of a learning disability or any other condition that could impact your academic achievements, kindly ensure this documentation is registered with the Office of Disability Services. Subsequently, please initiate a conversation with the professor regarding potential accommodations.
Course Structure
Quizzes
Students will complete up to four in-class quizzes during the semester.
Each quiz contributes 20% of the final grade and will consist of short questions spanning no more than two pages. The duration of each quiz will be 1–1.5 hours.
Quizzes are open book and open resource. You may use any textbooks and notes. However, seeking answers online or collaboration with peers or TAs during the quiz is not permitted.
Project
Students may choose one of the following two project options:
Reproducing Classical Papers
Read one of the following papers and write code to reproduce major results declared in the paper, submitting your code and a short report of 2 pages.
The report should:
- Describe the core algorithms you reproduced.
- Explain the input/output tests you conducted.
- Reference any test data, which may be submitted in a separate file.
Paper list:
- Knuth 1965: On the Translation of Languages from Left to Right
- McKeeman 1965: Peephole Optimization
- Chaitin 1982: Register allocation & spilling via graph coloring
- Cytron et al., 1991: Efficiently computing static single assignment form and the control dependence graph
- Kildall 1973: A unified approach to global program optimization
- J Cocke 1970: Global common subexpression elimination
- GJ Chaitin 1981: Register allocation via coloring
State-of-the-art Compiler Research
Select five compiler-related papers published after 2020 at the provided conferences and write five individual reports (2 pages each).
Each report should follow this format:
- Abstract– A concise overview of the work.
- Core Topic – The main focus of the paper or post.
- Strengths and Weaknesses – Evaluation of the proposed techniques.
- Technical Results – Key findings or performance evidence.
- Reflection and Improvements – Your understanding and possible extensions.
Conference list:
- CGO (International Symposium on Code Generation and Optimization)
- ASPLOS (International Conference on Architectural Support for Programming Languages and Operating Systems)
- PPoPP (Symposium on Principles and Practice of Parallel Programming)
- PoPL (Symposium on Principles of Programming Languages)
- PLDI (Programming Language Design and Implementation)
- OOPSLA (Object-Oriented Programming, Systems, Languages, and Applications)
- CC (International Conference on Compiler Construction)
- ECOOP (European Conference on Object-Oriented Programming)
- ICFP (International Conference on Functional Programming)
- LCTES (Languages, Compilers, Tools and Theory for Embedded Systems)
- CASES (International Conference on Compilers, Architecture, and Synthesis for Embedded Systems)
- PACT (International Conference on Parallel Architectures and Compilation Techniques)
- SC (The International Conference for High Performance Computing, Networking, Storage, and Analysis)
- ICS (International Conference on Supercomputing)
- OSDI (Operating Systems Design and Implementation)
- SOSP (Symposium on Operating Systems Principles)
Each report should include the following sections
- Paper summary
- Strengths (1-3 points)
- Weaknesses (1-3 points)
- Algorithm review
- Experiments review
- Your questions
- Your thoughts for related & future work
Grading
- Quizzes (80%)
No reschedule is allowed
- Project (15%)
- Attendance (5%)
Random checks 3-5 times
Schedule (subject to change)
Week | Date | Topic | Timeline |
---|---|---|---|
1 | Aug 26, 2025 | Introduction | |
2 | Sep 2, 2025 | Theory | |
3 | Sep 9, 2025 | No Class | |
4 | Sep 16, 2025 | Parser-1 | |
5 | Sep 23, 2025 | Parser-2 | |
6 | Sep 30, 2025 | Semantic | Quiz-1 |
7 | Oct 7, 2025 | Intermediate Representation | |
9 | Oct 14, 2025 | Function-1 | Quiz-2 |
8 | Oct 21, 2025 | Function-2 (Video) | |
10 | Oct 28, 2025 | Object Oriented Design | |
11 | Nov 4, 2025 | Election Day | |
12 | Nov 11, 2025 | Invited Talk-1 | Quiz-3 |
13 | Nov 18, 2025 | Code Generation-1 | |
14 | Nov 25, 2025 | Code Generation-2 | |
15 | Dec 2, 2025 | Conclusions | Quiz-4 |