Course Meetings

Lectures meet 4:00pm–5:20pm on Tuesdays and Thursdays. The location can be found on Quest.

Course Overview

The course is an introduction to the construction of modern compilers. A major part of the coursework is implementing a compiler for a simple object-oriented programming language. Students will be acquainted with theoretical and practical techniques applicable to implementing programming languages. The course material should appeal to anyone who is interested in the design and implementation of programming languages. Anyone who does a substantial amount of programming should find it valuable and enjoyable.


Students are tasked with writing a compiler that can translate a fairly large subset of Java to an assembly language. The project will be done in groups. The standard size of a group is three or four. The project will be broken up into several assignments with fixed due dates. The assignments must be submitted to Marmoset. Marks for your code will be reported to you by Marmoset, and your marked written reports will be returned to you by email. Additional, secret tests will be run by Marmoset on the last submission of your last assignment.

Students enrolled in CS 644 will additionally conduct a literature survey on a topic related to compilers.

Breakdown of Marks

CS 444
Compiler project
Assignment 0 0%
Assignment 1 10%
Assignment 2 10%
Assignment 3 10%
Assignment 4 10%
Assignment 5 15%
Assignment 6 10%
Subtotal 65%
Quiz (part of Assignment 6) 15%
Reports (part of Assignments 1–6) 10%
Secret tests 10%
Total 100%
CS 644
Coursework of CS 444 85%
Literature survey 15%
Total 100%

Marking Policy

Late Submissions

Reports submitted after the assignment deadline will not be marked and will receive a mark of zero. If you cannot finish the assignment by the deadline, submit what you have by the deadline, and explain any unfinished parts in your report.

For code submissions, the following late policy applies:

0.5 × best-on-time + 0.5 × best-overall

where “best-on-time” is the best submission within the assignment deadline, and “best-overall” is the best submission up until the deadline of the last assignment. Examples:

Submitting an additional solution for an assignment can never reduce your mark.

Group Work

When working in a group, disagreements sometimes arise. One of the objectives of this course is for you to resolve such disagreements with sufficient, constructive, and frank communication within the group. Therefore, when disagreements arise, discuss them within the group before asking the instructor to intervene. If the group fails to reach a resolution, the group as a whole should arrange a meeting with the instructor. The instructor's role is primarily to mediate the discussion within the group, rather than to intervene in the disagreement. Problems are easier to resolve if handled early. When a problem arises, try to resolve it as soon as possible. Do not leave it until the end of the course.

At the end of the course, the following policies will be used to distribute marks among the group members:

Course Staff

Photo of Yizhou Zhang Yizhou Zhang
[show email] Office hour:
by appointment
Photo of Jianlin Li Jianlin Li
[show email]
Photo of Cong Ma Cong Ma
[show email]

Please use Piazza to ask questions about course content or assignments.

Other Notices