Schedule (Autumn 2018)

Dates subject to change, but if a change is made, an announcement will be made in class or via Piazza.

Links to slides, projects and exam materials will be made available as relevant dates approach.

Homework will be always be distributed on Thursday nights and due the following Thursday at 10pm. Weeks without homework are marked on the schedule.

Projects are always due at 10pm at the listed due date. 10% will be deducted from your project's grade for each unexcused day late.

Date (Week) Tuesday Lecture Thursday Lecture Project Due Dates and Notes
2018-08-28 No Lecture (Classes Haven't Started) Course Overview and Introduction to Compilers Don't forget to do the first weekly homework.
2018-09-04 Lexical Analysis (Regular Expressions) Syntax Analysis Project 0: Demo Project (Project assigned in lecture on 2018-09-04, due 2018-09-08, not worth any points)
Project 1: Lexical Analysis (Project due 2018-09-15)
2018-09-11 Parsers and Grammar Design Parser Internals
2018-09-18 More Grammar Design(No Slides) Abstract Syntax Trees (No Slides) Project 2: Syntax Analysis (Project due 2018-09-27)
2018-09-25 Generating an AST in RPLY (No Slides) Flow Control and Scope Project 3: Intermediate Code Generation (Project due 2018-10-09)
2018-10-02 Project 2 solution (on Piazza) and More Flow Control Semantic Analysis: Types and Type Checking
2018-10-09 Arrays More Arrays Project 4: Language Enhancements (due 2018-10-22; no late days)
2018-10-16 Project 3 solution and More Array Examples Automata, Simple Language Design Principles Project 5: Arrays (due 2017-11-01)
2018-10-23 Project 5 Overview, Automata Review, Conversion to Tube Assembly Code Arrays in Memory, Memory Access, Memory Management
2018-10-30 Implementation Details: Internal IC, Back End, Arrays Review for Exam Project 6: Assembly Code Output (Project due 2018-11-15); Due to the exam next week, there is no new homework assigned this week.
2018-11-06 No Lecture: Evening Exam Functions
2018-11-13 Recursion and Call Stack More Recursion Project 7: Functions (Early: 2018-11-22; Full: 2018-11-27)
2018-11-20 Optimization: Introduction, Basic Blocks, Local Optimizations Thanksgiving (No Class)
2018-11-27 Optimization: Register Allocation Optimization Implementations Project 8: Optimizations (Due 2018-12-13)
2018-12-04 Garbage Collection Object Oriented Languages
2018-12-11 No Final Exam No Final Exam

Project Honors

For those students wanting the opprotunity for additional challenges (and for honors credit), there is an entirely optional additional project.

This project is not worth any points (nor extra credit points). To receive honors credit, you must fully complete the project (10 of 10). There is no partial credit.

Very little instruction (in person or via Piazza) will be given on this project. It is your responsibility to seek help from other students if you encounter difficulties. As such, please do not seek help on Piazza or office hours unless you have already reached out to other students in the class (and hence we should arrange a large meeting).

The project specification is linked here.

The project will be due at the end of the late period for Project 8 (2018-12-15). There will be no late period for Project Honors.