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-12)|
|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-20)|
|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)|
|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-12-01)|
|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||No Final Exam|
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 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.