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-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|
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 (2017-12-14 22:00). There will be no late period for Project Honors.