Overview

Welcome to CSC488/2107: Compilers and Interpreters. In this course we will explore the design and implementation of compilers for modern programming languages, from lexical analysis and parsing, to semantic analysis, intermediate representations, code generation and optimization. Through the assignments, the course project will have students building a complete working compiler for a small target language.

Contact Information

Instructor:
Peter McCormick
Email:
pdm -at- cs.toronto.edu
Office Hours:
Thursday 3-5pm in BA2283
Lectures:
Thursday 1-3pm in GB248
Tutorials:
Tuesday 2-3pm in GB248

Grading Scheme and Assignment Schedule

Item Topics Weight Due Date Note
Assignment 0 Team formation 0% Thursday, Jan 17 at 1pm
Assignment 1 Language examples 2% Saturday, Jan 26 at 11:59pm
Assignment 2 Parsing 6% Saturday, Feb 16 by 11:59pm
Midterm 20% Thursday, Feb 28 at 1pm 50 minutes, open book with notes
Assignment 3 AST and semantic analysis 12% Saturday, Mar 16 at 11:59pm
Assignment 4 Code generation 1 (optional) 8% Friday, Apr 5 at 11:59pm
Assignment 5 Code generation 2 12% Friday, Apr 5 at 11:59pm No grace days can be used for this assignment
Final Exam All course material 40% Apr 6-30 2 hours, open book with notes

To pass the course you must receive at least 40% on the final exam. The highest mark you will receive if your grade on the final exam is less than 40% is 47%.

Assignments will be completed in teams of 4 or 5 students.

Any section of an assignment which fails to run on teach.cs.toronto.edu will receive a grade of 0. If you can explain clearly in a remarking request how to fix the problem, your program will be remarked with a 20% penalty. Errors in submission such as missing files, incorrectly named files, putting files in the wrong place may be graded with a 20% penalty.

Policies

Remarking requests that result from incorrect submissions will receive a 20% penalty.