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 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Tue. Jan. 21 | Introduction | PLP 1.0–1.5 | T0:
administration;
A0: Unix tools | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Thu. Jan. 23 | Structure of a compiler | PLP 1.6–1.7 | T0 due; A1/T1: comparing languages; Q1 and T1 due Sunday evening | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Syntax | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Tue. Jan. 28 | Review of scanning and of CFGs | PLP 2.0–2.2; CS 2.4.0–2.4.1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Thu. Jan. 30 | Top-down and bottom-up parsing; recursive descent | PLP 2.3.0–2.3.2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Tue. Feb. 4 | Table-driven LL(1) parsing; error recovery | PLP 2.3.3, 2.5; CS 2.3.5 (pp. 1–6) | Q2 due | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Names | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Thu. Feb. 6 | Binding time, scope rules | PLP 3.0–3.4 | A1 due Sunday evening | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Tue. Feb. 11 | Binding rules, separate compilation | PLP 3.5–3.9; CS 3.8 |
A2/T2: table-driven parsing and error recovery; Q3 due | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Semantics | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Thu. Feb. 13 | Syntax trees, action routines | PLP 4.0–4.2 | T2 due | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Tue. Feb. 18 | Formal semantics | PLP 4.3–4.5 (skim), 4.7 | Q4 due | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Control flow | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Thu. Feb. 20 | Expressions, sequencing, and selection | PLP 6.0–6.4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Tue. Feb. 25 | Iteration and recursion | PLP 6.5–6.8 | Q5 due | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Functional programming | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Thu. Feb. 27 | Intro to OCaml | PLP 11.0–11.2, 7.4–7.5, 8.6, 11.4 | A2 due Sunday evening | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Tue. Mar. 4 | Evaluation order, higher-order functions | PLP 11.5–11.6, 11.8–11.9 | Q6 due | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Thu. Mar. 6 | Midterm Exam (in class) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(Mar. 10–14 Spring Break) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Type Systems | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Tue. Mar. 18 | Type systems, type checking | PLP 7.0–7.2 | A3/T3: interpretation | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Thu. Mar. 20 | Polymorphism/Generics | PLP 7.3, 7.6; CS 7.3.5 | T3 due; Q7 due | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subroutines | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Tue. Mar. 25 | Stack management; parameter passing | PLP 9.0–9.3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Thu. Mar. 27 | Exceptions, events, & asynchronous programming | PLP 9.4, 9.6–9.8 | Q8 due | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Concurrency | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Tue. Apr. 1 | Threads | PLP 13.0–13.2.3, 9.5, 13.2.4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Thu. Apr. 3 | Synchronization | PLP 13.3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Tue. Apr. 8 | Language mechanisms | PLP 13.4, 13.6 | Q9 due; A3 due Wednesday evening | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Composite Types
Thu. Apr. 10
| Records and arrays
| PLP 8.0–8.4
|
A4/T4: concurrency; | T4 due Sunday evening
Tue. Apr. 15
| Pointers, references, and dynamic storage management
| PLP 8.5, 8.8
| Q10 due
|
Objects
and Scripting
|
Thu. Apr. 17
| Scoping; constructors & destructors; virtual methods
| PLP 10.0–10.5, 10.8
|
|
Tue. Apr. 22
| Pattern matching; scripting objects
| PLP 14.0–14.1, 14.4–14.5
| Q11 due
|
Code generation
and run-time systems
|
Thu. Apr. 24
| Code generation, assembly
| PLEASE be sure to fill out your on-line course evaluation. (You should have received an email with instructions.) PLP 15.0–15.3, 15.5
|
|
|
Tue. Apr. 29
| Linking; the JVM
| PLP 15.6, 16.0–16.1.1
| Q12 due
|
Thu. May 1
| Last day of class: questions,
final exam prep.
|
| A4 due Friday evening
|
TBA
| Final exam, in the official time slot
|
|
| |
Last Change: 12 February 2025 /