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

  1. Provide a comprehensive introduction to fundamental compiler concepts.
  1. Introduce students to state-of-the-art research directions and industry practices in compiler design.
  1. Facilitate hands-on experience by reproducing and analyzing results from classical and influential compiler papers.

Textbooks

  1. Compilers: Principles, Techniques, and Tools: Aho, Alfred, Ullman, Jeffrey, Sethi, Ravi, Lam, Monica
  1. Engineering: A Compiler: Cooper, Keith D., Torczon, Linda (optional)

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

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 DateTopicTimeline
1Aug 26, 2025Introduction
2Sep 2, 2025Theory
3Sep 9, 2025No Class
4Sep 16, 2025Parser-1
5Sep 23, 2025Parser-2
6Sep 30, 2025SemanticQuiz-1
7Oct 7, 2025Intermediate Representation
9Oct 14, 2025Function-1Quiz-2
8Oct 21, 2025Function-2 (Video)
10Oct 28, 2025Object Oriented Design
11Nov 4, 2025Election Day
12Nov 11, 2025Invited Talk-1Quiz-3
13Nov 18, 2025Code Generation-1
14Nov 25, 2025Code Generation-2
15Dec 2, 2025ConclusionsQuiz-4