0. Slay the Dragon
1. Read and write grammars for programming language constructs
2. Perform lexical analysis and use lexical analyzer generators
3. Perform top-down parsing, bottom-up parsing and use parser generators
4. Perform semantic analysis including static checking, intermediate representations and attribute grammars
5. Create symbol tables
6. Perform run-time analysis
7. Perform code generation
8. Perform optimizations
9. Implement the phases of a compiler for a small recursive language
4 Project Parts:
Midterm Exam: 30 points
Final Exam; 25 points
Week 1 (9/2-9/5)
Module 1: Lexical Analysis
Week 2 (9/8-9/12)
Module 2: Grammars and Top-Down Parsing
Week 3 (9/15-9/19)
Module 3: Bottom-Up Parsing
Week 7 (10/13-10/16)
Modules 8 & 9 (just an intro): Data Flow Analysis and
Optimization
Week 0 (8/28-8/29)
Module 1: Overview
Tuesday, 9/9: Homework 1 Due (upload it by midnight)
Thursday, 9/11: Scanners Due
(ditto)
Tuesday, 9/16: Homework 2 Due (upload it by midnight)
Week 4 (9/22-9/26) Module 4: Semantic Analysis
Thursday, 9/18: Parsers Due (ditto)
Tuesday, 9/23: Homework 3 Due (upload it by midnight)
Week 5 (9/29-10/3)
Module 5: Symbol Tables and Run-time
Issues
Friday, 9/26: Test #1
Tuesday, 9/30: Homework 4 Due (upload it by midnight)
Week 6 (10/6-10/10)
Module 6: Code Generation & Module 7: Control Flow
Analysis
Thursday, 10/2: AST's Due (ditto)
Tuesday, 10/7: Homework 5 Due (upload it by midnight)
Monday, 10/13: Code Generators Due (upload it by midnight)
Tuesday, 10/14: Homework 6 Due (upload it by midnight)
Thursday, 10/16: Test
Homeworks: You may work in groups for the weekly homeworks, clearly identifying who is in that group. Copying between groups is strictly forbidden. If you inadvertently have an answer from any other source (you shouldn't), clearly identify it.
Project: These may be done in pairs or singly. All work is to be your own although it is appropriate to consult various lex and yacc and javacc references. It is unlikely that any 2 group projects will look the same!
If any part of a submitted assignment is not your own or your group's own work, the source or collaborator must be clearly identified. Failure to identify non-original work is considered academic dishonesty.
Collaboration or other outside assistance on examinations is not allowed. Exams are closed book.
Please see WPI's Honesty Policy for information on what happens if you are accused of cheating.