Lectures
Most lecture will involve code, not slides. We will post any slides and also code that significantly adds to the textbook. Otherwise: read the textbook! When we cover a section, read the section carefully and work the exercises, even when we don’t explicitly discuss material from a section in class.
Note: To “skim” means to go through once: “eyes meet the page” (but be sure to work through the “Do Now” exercises). To “read” means to carefully inspect with a pen (or physical/digital equivalent) in hand; jot down, look up, and answer questions; work exercises; and generally interrogate the book.
Date Subject Materials Reading for Next Lecture 1 Wed Sep 4th Intro Admin Notes (PDF) (Scribble/Racket source), Slides (PDF) (Source), Racket File (Pre-class) (After-class) Skim Preface, Read Prelude (Chapter 1) 2 Fri Sep 6th Intro (Cont’d) and Parsing Intro Racket File (After-class), Parsing Racket File (Pre-class) (After-class) Skim Chapter 2 3 Mon Sep 9th First Language : Concrete Syntax, Abstract Syntax, Parsing and an Interpreter Racket File (Pre-class) (After-class) Read Chapter 2, Skim Chapter 3 4 Wed Sep 11th Identifiers Racket File (First discussion on ++/–/**) (Pre-class) (After-class) Read Chapter 3, Skim Chapter 4 5 Fri Sep 13th Identifiers (WAE), continued Racket File (Pre-class) (After-class) Read Chapter 4 6 Mon Sep 16th First-Order Functions Racket File (Pre-class) (After-class) Read Chapter 5 7 Wed Sep 18th Environments, Static and Dynamic Scopes Racket File (Pre-class) (After-class) Read Chapter 6 8 Fri Sep 20th First Class Functions We will first Finish last lecture’s notes and then continue with a new File (Pre-class) (After-class) No new readings, but I recommend you re-read chapter 6! 9 Mon Sep 23rd Finishing First Class Functions with Substitution We will continue on the same file from previous class (Pre-class) (After-class) Read Chapter 12 (very short) and Skim Chapter 13 (We are skipping ahead, we’ll go back later) 10 Wed Sep 25th Finishing First Class Functions with Environments, and introducing Mutable state (Pre-class, Environments and State via Logging) (After-class) Read Chapter 13 11 Fri Sep 27th Mutable state (unfinished) (Pre-class, Mutable State with mutable boxes) (After-class) Skim Chapter 14 12 Mon Sep 30th Mutable state, continued (Pre-class, exactly where we ended last class) (After-class) Read Chapter 14 – End of material for Midterm 1 – 13 Wed Oct 2nd Call-by-reference semantics Racket File (Pre-class) (After-class) Read Chapter 7 and Download and Install the Haskell Platform before the lecture if you want to try the exercises! 14 Fri Oct 4th Using call-by-need languages Racket File (Pre-class same as last after-class) (After-class) (Haskell file) Read Chapter 8 15 Mon Oct 7th Implementing call-by-need Racket File (Pre-class) (After-class) (Next class is midterm) – Wed Oct 9th Midterm 1 Read Chapter 9 16 Fri Oct 11th Recursion via boxes Racket File (Pre-class) (After-class) Read Chapter 10 – Mon Oct 14th – Thanksgiving Day, no lecture – 17 Wed Oct 16th Recursion via boxes, continued Racket File (Pre-class) (After-class) Read Section 4 of Chapter 22 (22.4) (If you are up for it, you can read the rest, but we won’t discuss it) 18 Fri Oct 18th The Y combinator (not the startup accelerator) Racket File (Pre-class) (After-class, corrected Also, The file where we developed the y-combinator in racket and The Lazy language version that does not loop forever) Extra explanations of the Y-combinator (In Racket) (In ocaml, a Haskell-like language (but eager)) Read Chapter 35 and Section 1 of Chapter 36 (36.1) 19 Mon Oct 21st Program rewriting (how to use macros) Racket file (Pre-class) (After-class) Read Chapter 36 20 Wed Oct 23rd Program rewriting, continued Racket File (Pre-class) (After-class), (defmac macro definition) Read Chapter 1 of OOPLAI 21 Fri Oct 25th Object-Oriented languages Racket File (Pre-class) (After-class) (You should have the defmac.rkt file in the same folder!) Read Chapter 2 of OOPLAI 22 Mon Oct 28th Object-Oriented languages part II (encoding objects via macros, self) Racket File (Pre-class) (After-class) Read Chapter 4 of OOPLAI – End of material for Midterm 2 – 23 Wed Oct 30th Message Forwarding and Delegation Racket File (Pre-class) (After-class) Read Chapter 5 of OOPLAI 24 Fri Nov 1st Classes Racket File (Pre-class) (After-class) (See next lecture’s pre-class file: We are not publishing it separately as it is not a complete file on its own.) Read Chapter 6 of OOPLAI 25 Mon Nov 4th Classes (cont) Racket File (Pre-class) (After-class) – Wed Nov 6th Midterm 2 Read Chapter 6 of OOPLAI 26 Fri Nov 8th Inheritance Racket File (Pre-class) (After-class) (Back to PLAI!) Skim Chapters 16, 17, and 18 (will only ever skim). Mon Nov 11th – Remembrance Day, no lecture – 27 Wed Nov 13th Continuations : Implementing Exceptions Racket File (Pre-class) (After-class) Read Chapter 19 of PLAI 28 Fri Nov 15th Continuations in our interpreter: Continuation-Passing Style Part I Racket File (Pre-class) (After-class NOTE: This file does not have a complete CPS transformation, so running its code will produce errors!) Read Chapter 20 of PLAI 29 Mon Nov 18th Continuation-Passing Style Part II and implementing bindcc Racket File (Pre-class, same as previous lecture’s After-class file). (After-class) Read Chapter 24 (short) and Chapter 25 of PLAI 30 Wed Nov 20th Types : Introduction Racket File (Pre-class) (After-class file is not complete: Look at next lecture’s pre-class files) (Non-mandatory slides about notation) (Hand-written slides with typing rules) 31 Fri Nov 22nd A simply-typed language with recursion Racket File (Pre-class) (After-class) 32 Mon Nov 25th Generics and type inference (guest lecture by Joey) Rust File (Pre-class) 33 Wed Nov 27th Last lecture 34 Fri Nov 29th Poster session: Online portion mandatory! Please read @443 in Piazza