No Team Programming: The course project has 6 parts, aiming to produce a single final program. In case you have trouble with one part, you should hand in your best effort for partial credit. Then for later parts you may use someone else's earlier program for the previous parts, with no penalty (but the borrowed code must be identified, as mentioned above).
| Week | Dates | Topic | Assignment / Exam | Due date | Text |
| 1 | Jan 19
(Jan 17: MLK day) |
Intro, course organization.
Programming language(PL) overview. Syntax versus semantics. Run-time versus compile-time. |
|||
| 2 | Jan 24, 26 | Compiler overview.
Translation versus interpretation. |
0. Quadruple Interpreter/
Translator |
Feb 2 | 1, 2.1 |
| 3 | Jan 31, Feb 2 | The lexical level of a language.
Lexical analysis (scanning or tokenizing). Finite-state machines (FSM, automata). |
FSM Homework | Feb 9 | 3.1 |
| 4 | Feb 7, 9 | FSMs and lexical analysis, con't.
Hand-made versus automated scanners. |
I. Initial Scanner | Feb 21 | 2.6, 3.2, 3.3, 3.6 |
| 5 | Feb 14, 16 | Formal description of PLs.
Grammars (context-free grammars). |
2.2 4.1, 4.2 |
||
| 6 | Feb 21, 23 | Grammars con't. Flow diagrams.
Parsing and ambiguity. |
Grammar Homework First Exam |
Mar 1 Feb 23 |
4.3 |
| 7 | Feb 28, Mar 1 | Specifics on parsing.
Top-down (recursive descent) parsing. |
II. Initial Parser | Mar 22 | 2.4, 4.4 |
| 8 | Mar 6, 8 | Intro to syntax-directed translation.
Translating arithmetic expressions (AEs). |
III. Translate AEs to
Quadruples |
Mar 29 | 2.3 5.1, 5.2 |
| Spring Break, Mar 13-17 | |||||
| 9 | Mar 20, 22 | Symbol tables in PL translation.
Semantics in compliers |
Semantics Homework | Apr 3 | 2.7, 7.6 |
| 10 | Mar 27, 29 | Translation of flow-of-control.
Goto, if-then, while. |
IV. Translate Control
Structures |
Apr 19 | 8.4, 8.6 |
| 11 | Apr 3, 5 | Activation records for functions.
Other storage management. |
Activ. Record Homework |
Apr 26 |
7.2, 7.3 |
| 12 | Apr 10, 12 | Translation of functions.
Parameters and local storage. |
V. Translate Functions
and Parameters ???? |
[????] | 8.7 |
| 13 | Apr 17, 19 | Work on final details of project. |
VI. Final project:
Target MIPS ???? |
[????] | |
| 14 | Apr 24, 26
(Apr 28: B of F) |
Other issues: bottom-up parsers.
Compiler tools. |
4.5 | ||
| 15 | May 1, 3
(May 4, 5: Study) |
Leeway. | |||
| May 12 | Final Exam | ||||
Details about Exams:
Exams appear in green in the table above.
Details about Assignments:
The main work for the semester is a continuing project, working on a small compiler for a simple (very small) subset of C/C++ (and almost Java). Assignments related to this project are given above in red boldface. Other written assignments appear in blue.
Textbook:
Compilers: Principles, Techniques, and Tools
By Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman, Addison-Wesley, 1986.