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
![]() |
Yizhou Zhang Instructor |
[show email] | Office hour: Monday 1pm–2pm Zoom |
![]() |
Jianlin Li TA |
[show email] | Office hour: Tuesday 11:30am–12:30pm Zoom |
Please use Piazza to ask questions about course content or assignments.
Coursework and Evaluation
Students are tasked with writing a compiler that compiles programs written in Joos 1W, a fairly large subset of Java, to i386 assembly. 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.
The above assignments (including accompanying reports) total 63% of your final mark, if you are in
Students enrolled in CS 644 are required to 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.
CS 444 | ||
Assignments
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 on 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:
- Group gets 90% marks on a submission before the assignment deadline and there is no submission after the deadline.
Mark: (0.5 × 90%) + (0.5 × 90%) = 90% - Group gets 80% marks on a submission before the assignment deadline and 100% marks on a re-submission after the deadline.
Mark: (0.5 × 80%) + (0.5 × 100%) = 90% - Group gets 90% marks on a submission after the assignment deadline and there is no submission before the deadline.
Mark: (0.5 × 0%) + (0.5 × 90%) = 45%
Submitting an additional solution for an assignment can never reduce your mark.
Marking Policy on 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:
- Normally, each member of the group will be given an equal mark. You should therefore strive to ensure that each group member makes an approximately equal contribution to the project.
- The group may propose a different distribution of the marks, provided all group members consent to the distribution. Such a proposal must be made to the instructor within three days after the due date of the last assignment. The marks will be distributed in such a way that the mean of the marks equals the original group mark and no individual project mark exceeds 100%.
- If agreement cannot be reached, a member of the group must contact the instructor within three days of the due date of the last assignment. The instructor will ask each group member to submit a written statement detailing the contributions of each group member, the nature of the conflict, and the steps that were taken by the group to resolve the conflict. Failure to submit the statement within three days of being asked to do so will result in a mark of zero for that group member. Based on the statements, the instructor will make a final decision about the mark distribution. Note that the instructor will generally not deviate from the equal distribution of marks unless convinced that the group took sufficient and timely steps to resolve the conflict internally.