The following is my best guess as to the schedule for this fall.
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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wed. Aug. 30 | Introduction | PLP 1.0–1.5 | T0:
administration;
A0: Unix tools | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(Mon. Sep. 4 Labor Day) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wed. Sep. 6 | Structure of a compiler | PLP 1.6–1.7 | T0 due; Q1 due; A1: comparing languages; T1 due Friday evening | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Syntax | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mon. Sep. 11 | Review of scanning and of CFGs | PLP 2.0–2.2; CS 2.4.0–2.4.1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wed. Sep. 13 | Top-down and bottom-up parsing; recursive descent | PLP 2.3.0–2.3.2; CS 2.3.5 (pp. 1–6) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mon. Sep. 18 | Error recovery, table-driven LL(1) parsing | PLP 2.3.3; CS 2.3.5 (except pp. 10–12) | Q2 due | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Semantics | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wed. Sep. 20 | Static analysis, action routines | PLP 4.0–4.5 | A1 due last night; A2: syntax error recovery T2 due Friday evening | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mon. Sep. 25 | Decorating a syntax tree | PLP 4.6–4.7 | Q3 due | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Functional programming | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wed. Sep. 27 | Intro to OCaml | PLP 11.0–11.2, 7.2.4, 8.6, 11.4 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mon. Oct. 2 | Evaluation order, higher-order functions | PLP 11.5–11.6, 11.8–11.9 | Q4 due | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Names | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wed. Oct. 4 | Binding time, scope rules | PLP 3.0–3.4 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mon. Oct. 9 | Binding rules, separate compilation (Prof. Scott out of town) | PLP 3.5–3.9; CS 3.8 | A2 due last night; Q5 due; A3: interpretation (in OCaml) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Control flow | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wed. Oct. 11 | Expressions, sequencing, and selection (Prof. Scott out of town) | PLP 6.0–6.4 | T3 due | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(Mon. Oct. 16 Fall Break) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wed. Oct. 18 | Iteration and recursion | PLP 6.5–6.8 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Scripting languages | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mon. Oct. 23 | Overview, Perl | PLP 14.0–14.1, 14.2.4 (Perl), 14.4.2, 14.4.3 | Q6 due | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wed. Oct. 25 | Midterm review | A3 due | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mon. Oct. 30 | Midterm Exam (in class) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Type Systems | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wed. Nov. 1 | Type systems, type checking | PLP 7.0–7.2 | A4: Disassembler | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mon. Nov. 6 | Polymorphism/Generics
US citizens: Don't forget to vote tomorrow | PLP 7.3–7.5; CS 7.3.2 | T4 due Friday evening; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Composite Types
Wed. Nov. 8
| Records and arrays
| PLP 8.0–8.4
| Q7 due
|
Mon. Nov. 13
| Pointers, references, and dynamic storage management
| PLP 8.5
| Q8 due
|
Concurrency
|
Wed. Nov. 15
| Threads
| PLP 13.0–13.2.3, 9.5, 13.2.4
|
|
Mon. Nov. 20
| Synchronization
| PLP 13.3
|
|
Wed. Nov. 22
| Language mechanisms
| PLP 13.4
| Q9 due
| A4 due at noon
| (Thur. Nov. 23 Thanksgiving)
|
Subroutines
|
Mon. Nov. 27
| Stack management, parameter passing
| PLP 9.0–9.3
| A5: concurrency (in Java)
|
Wed. Nov. 29
| Exceptions, events
| PLP 9.4.3, 9.6
| T5 due
|
Objects
|
Mon. Dec. 4
| Asynchronous
programming; intro to objects
| PLP 10.1–10.3
|
|
Code generation
and run-time systems
|
Wed. Dec. 6
| Constructors & destructors; Virtual methods
| PLEASE be sure to fill out your on-line course evaluation. (You should have received an email directing you to rochester.aefis.net/.) Surveys close on Dec. 15. PLP 10.4–10.6.1; 14.4.4
| Q10 due
|
Mon. Dec. 11
| Code generation, assembly
| PLP 15.0–15.3, 15.5
|
|
Wed. Dec. 13
| Last day of class.
Linking; the JVM; | Final exam prep. PLP 15.6, 16.1.1
| Q11 due; | A5 due Friday night
Tue. Dec. 19
| Final exam, 12:30–3:30pm
|
|
| |
Last Change: 10 December 2023 /