Course Meetings

Lectures meet 10:00am–11:20am on Tuesdays and Thursdays Eastern Time in E2 1736.

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.

Course Staff

Photo of Yizhou Zhang Yizhou Zhang
[show email] Office hour:
Monday 1pm–2pm via Zoom
Photo of Jianlin Li Jianlin Li
[show email] Office hour:
Tuesday 11:30am–12:30pm via Zoom

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


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. 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 do extra work on the design of the language and the construction of the compiler.

The final exam will cover material from the lectures. It will be scheduled by the Registrar's Office. It will be given as a take-home exam to be finished on the day of the scheduled exam. Exam answers should be submitted to Crowdmark. Students should work on the final exam individually. Discussing the contents of the exam with anyone beyond the course staff on the day of the exam is considered misconduct and can result in significant penalties per the University's Policy 71.

Breakdown of Marks

CS 444

The weight of each report is ~15–25% of the assignment(s) covered.

Assignment 0 0%
Assignment 1 10%
Assignment 2 10%
Assignment 3 10%
Assignment 4 10%
Assignment 5 13%
Assignment 6 10%
Subtotal 63%
Secret tests 10%
Final exam 25%
Participation 2%
Total 100%
CS 644
Assignments and secret tests 63%
Compiler extensions 10%
Final exam 25%
Participation 2%
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:

Other Notices