The following is my best guess as to the schedule for this semester.
I will do my best to keep it up to date if things change.
I encourage you to check back here on a regular basis.
PLP refers to the textbook.
CS refers to the companion site.
Click on the unit name to see my lecture notes.
Unit | Topics | Reading (to be completed before class) | Assignments (handed out or [where indicated] due) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Introduction | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mon. Aug. 25 | Introduction | PLP 1.0–1.5 | T0:
administration;
A0: Unix tools | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wed. Aug. 27 | Structure of a compiler | PLP 1.6–1.7 | T0 due; A1/T1: comparing languages; Q1 and T1 due Friday evening | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(Mon. Sep. 1 Labor Day) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Syntax | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wed. Sep. 3 | Review of scanning and of CFGs | PLP 2.0–2.2; CS 2.4.0–2.4.1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mon. Sep. 8 | Top-down and bottom-up parsing; recursive descent | PLP 2.3.0–2.3.2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wed. Sep. 10 | Table-driven LL(1) parsing; error recovery | PLP 2.3.3, 2.5; CS 2.3.5 (pp. 1–6) | Q2 due | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Names | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mon. Sep. 15 | Binding time, scope rules | PLP 3.0–3.4 | A1 due Tuesday evening | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wed. Sep. 17 | Binding rules, separate compilation | PLP 3.5–3.9; CS 3.8 |
A2/T2: table-driven parsing and error recovery; Q3 due; T2 due Friday evening | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Semantics | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mon. Sep. 22 | Syntax trees, action routines | PLP 4.0–4.2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wed. Sep. 24 | Formal semantics | PLP 4.3–4.5 (skim), 4.7 | Q4 due | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Functional programming | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mon. Sep. 29 | Intro to OCaml | PLP 11.0–11.2, 7.4–7.5, 8.6, 11.4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wed. Oct. 1 | Evaluation order, higher-order functions | PLP 11.5–11.6, 11.8–11.9 | Q5 due; A2 due Sunday evening | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Control flow | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mon. Oct. 6 | Expressions, sequencing, and selection | PLP 6.0–6.4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wed. Oct. 8 | Midterm Exam (in class) |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(Mon. Oct. 13 Fall Break) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wed. Oct. 15 | Iteration and recursion | PLP 6.5–6.8 |
A3/T3: interpretation; Q6 due; T3 due Friday evening | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Type Systems | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mon. Oct. 20 | Type systems, type checking | PLP 7.0–7.2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wed. Oct. 22 | Polymorphism/Generics | PLP 7.3, 7.6; CS 7.3.5 | Q7 due | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subroutines | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mon. Oct. 27 | Stack management; parameter passing | PLP 9.0–9.3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wed. Oct. 29 | Exceptions, events, & asynchronous programming | PLP 9.4, 9.6–9.8 | Q8 due | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Concurrency | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mon. Nov. 3 | Threads | PLP 13.0–13.2.3, 9.5, 13.2.4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wed. Nov. 5 | Synchronization | PLP 13.3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mon. Nov. 10 | Language mechanisms | PLP 13.4, 13.6 | Q9 due; A3 due Tuesday evening | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Composite Types
Wed. Nov. 12
| Records and arrays
| PLP 8.0–8.4
|
A4/T4: concurrency; | T4 due Sunday evening
Mon. Nov. 17
| Pointers, references, and dynamic storage management
| PLP 8.5, 8.8
| Q10 due
|
Objects
and Scripting
|
Wed. Nov. 19
| Scoping; constructors & destructors; virtual methods
| PLP 10.0–10.5, 10.8
|
|
Mon. Nov. 24
| Pattern matching; scripting objects
| PLP 14.0–14.1, 14.4–14.5
| Q11 due
|
| (Wed. Nov. 26 Thanksgiving Break)
|
Code generation
and run-time systems
|
Mon. Dec. 1
| Code generation, assembly
| PLP 15.0–15.3, 15.5
|
|
|
Wed. Dec. 3
| Linking; the JVM
| PLP 15.6, 16.0–16.1.1
| Q12 due
|
Mon. Dec. 8
| Last day of class: questions,
final exam prep.
|
| A4 due Wednesday evening
|
Sun. Dec. 14
| Final exam, 12:30–3:30 pm | (the official time slot, in our usual room)
|
| |
Last Change: 06 August 2025 /