Schedule (Autumn 2017)

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
2017-08-28 No Lecture (Classes Haven't Started) Course Overview and Introduction to Compilers Don't forget to do the first weekly homework.
2017-09-04 Lexical Analysis (Regular Expressions) Syntax Analysis Project 0: Demo Project (Project assigned in lecture on 2017-09-05, due 2017-09-07, not worth any points)
Project 1: Lexical Analysis (Project due 2017-09-14 Thursday)
2017-09-11 Introduction to Parsing and Yacc YACC Internals
2017-09-18 Grammar Design and LOLCode (No Slides) Abstract Syntax Trees (No Slides) Project 2: Syntax Analysis (Project due 2017-09-26)
2017-09-25 Generating an AST in Yacc (No Slides) Flow Control and Scope Project 3: Intermediate Code Generation (Project due 2017-10-11 22:00, with only 3 allowed late days)
2017-10-02 Project 2 solution (on Piazza) and More Flow Control Semantic Analysis: Types and Type Checking
2017-10-09 Arrays More Arrays Project 4: Language Enhancements (due 2017-10-19 22:00)
2017-10-16 Project 3 solution and More Array Examples Automata, Simple Language Design Principles Project 5: Arrays (due 2017-10-31 22:00)
2017-10-23 Project 5 Overview, Automata Review, Conversion to Tube Assembly Code Arrays in Memory, Memory Access, Memory Management
2017-10-30 Implementation Details: Internal IC, Back End, Arrays Review for Exam (Exam Information Here) Project 6: Ugly (Assembly) Code Output (Project due 2017-11-14 22:00)
2017-11-06 Exam Functions
2017-11-13 Recursion and Call Stack More Recursion Project 7: Functions (Early: 2017-11-21 22:00; Full: 2017-11-30 22:00 (two day late period))
2017-11-20 Optimization: Introduction, Basic Blocks, Local Optimizations Thanksgiving (No Class)
2017-11-27 Optimization: Register Allocation Optimization Implementations Project 8: Optimizations (Due 2017-12-12 22:00 (two day late period))
2017-12-04 Garbage Collection Object Oriented Languages 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 (2017-12-14 22:00). There will be no late period for Project Honors.