CMPU-331 Compilers (Spring 2019)


This schedule is intended as a general guide to the flow of topics through the semester.

You should have completed the appropriate readings before the corresponding class(es). You are responsible for keeping up with the readings and for ensuring that you have adequate notes of material covered in class, some of which may not be in the textbook: this includes lectures, assignments, hand-outs, additional reading, and so forth.

If you miss a class, please make arrangements with classmates to catch up on the notes you missed.

Week Beginning Topic Reading Slides
1 21st January Introduction. What is a compiler? Brief review of material. Ch. 1, 2.1-2.5. Full Handout
2 28th January Lexical Analysis. Ch. 2.6, 3.1-3.5, 3.8. Full Handout
3 4th February Languages, syntax and parsing. Ch. 4.1-4.3. Full Handout
4 11th February Top-down parsing. Ch. 4.4. Full Handout
5 18th February Symbol tables.
Syntax-directed translation.
Ch. 2.7, 7.1-7.3.
Ch. 5.
Full Handout
Full Handout
6 25th February Bottom-up parsing. Ch. 4.5-4.6. Full Handout
7 4th March Intermediate code generation. Ch. 2.8, 6.1-6.3. Full Handout
Saturday, 9th March to Sunday, 24th March.
Happy vacation!
8 25th March Relational operations and control flow.
Arithmetic expressions.
Ch. 6.6-6.7.
Ch. 6.4-6.5, 7.1-7.4.
Full Handout
Full Handout
9 1st April Runtime environments.
(The Vassar Interpreter.)
Full Handout
Full Handout
10 8th April Procedure and function declaration and calls. Ch. 7.1-7.3.
11 15th April More powerful bottom-up parsing. Ch. 4.7.
12 22nd April Software design & development I.
13 29th April Software design & development II.
14 6th April Optimisation. Ch. 9.1-9.4,
8.4-8.5, 8.7-8.8.