Meeting #DateTopicReadings and Assignments
1 1/3/2018

Course Introduction

None (first day)
2 1/5/2018

Autograder Crash Course + History of PL/Compilers

3 1/8/2018

Overview of Cool

Cool Reference Manual

4 1/10/2018

Lexical Analysis

PA1c Due

Dragon Book Ch 3

PL Pragmatics Ch 2.1 - 2.2

5 1/15/2018

MLK Day -- no class

6 1/17/2018

Lexical Analysis Foundations and Lexical Analyzer Generators (aka lex/Flex)

PA1 (Rosetta Toposort) Due

Kevin Leach at PI meeting

Flex Manual

Aho (Dragon Book) 3.6-3.7

Scott (PL Pragmatics) 2.2, 2.4.1

7 1/22/2018

Parsing Basics (Grammars)

Dragon book Ch 4.1, 4.2

PL Pragmatics Ch 2.3

8 1/24/2018

LL Parsing

PA2 (Lexer) Due

Dragon book Ch 4.3, 4.4

PL Pragmatics Ch 2.3.1-2.3.4

9 1/29/2018

More Parsing (LR)

PL Pragmatics Ch 4.8

10 1/31/2018

Parser Generators (aka Yacc/Bison)

Yacc or Bison Manual
11 2/5/2018 Midterm 1
12 2/7/2018

Types and Scoping

PA3 (Parser) Due

PL Pragmatics Ch. 3.2.1, 3.2.1-3.2.3, 3.6

Dragon book Ch. 1.6.1, 1.6.2, 1.6.5, 1.6.6, 1.6.7

2/9/2018

Exam Review + PA4

13 2/12/2018 Type Checking (Video)

PL Pragmatics 4.2, 4.3, 4.6

Dragon book Ch. 6.5

14 2/14/2018 Type Checking (2) (Video)

PL Pragmatics Ch. 8.1 - 8.3

Dragon Book Ch. 7.2 - 7.3

15 2/19/2018

Program and Runtime Organization (Video)

PL Pragmatics 9.2

Dragon Book Ch. 6, 6.1, 6.2, 6.3

16 2/21/2018

Intermediate Representation (Video)

PA4 (Semantic Analyzer) due

Dragon book Ch. 6.4, 6.6

17 2/26/2018 No class, break
18 2/28/2018 No class, break
19 3/5/2018

More Intermediate Representation (Video)

20 3/7/2018

PA5 Overview, Code Generation (Video)

PL Pragmatics Ch. 5.2, 5.4, 5.6, 9.4, 9.5

21 3/12/2018

Control Flow Graphs, Dataflow Analysis (Video)

PL Pragmatics 14.1.1, 14.2, 14.3.1

Dragon Book Ch. 9.2.1 - 9.2.3, 9.2.5

22 3/14/2018

Dataflow Analysis (Video)

Dragon Book Ch. 9.3
23 3/19/2018

Midterm 2

24 3/21/2018

Memory Management, Garbage Collection (Video)

Dragon Book Ch. 7.4, 7.5

F2 3/23/2018

Friday with Ram

Optimization Potpourri (Video)

25 3/26/2018

Memory Hierarchy, Register Allocation, and Linking and Loading (Video)

PL Pragmatics Ch. 14.6, 14.7

26 3/28/2018

Linking and Libraries, Register Allocation review (Video)

PL Pragmatics Ch. 15.3.2
27 4/2/2018

Optimizations (Video)

PA5 (Compiler) Due

Wikipedia's Basic Block article
Wikipedia's Data-flow analysis article
28 4/4/2018

Optimizations (2) (Video)

Wikipedia's Basic Block article
Wikipedia's Data-flow analysis article
29 4/9/2018

Exception Handling with Westley Weimer (Video)

PL Pragmatics Ch. 8.5

30 4/11/2018

Optimizations, Security and Compilers

Reflections on Trusting Trust
31 4/16/2018

Slack day: Security and Compilers

N/A 4/24/2018

Final Exam, 4-6pm, CHRYS220

PA6 (optimizer) Due at 6pm