CIS352 — Fall 2023

Principles of Programming Languages

Date Type Unit Video
8/29 Logistics Course Introduction and Logistics
8/29 Lecture L0 Introduction to Racket and Dr. Racket (video) (Slides)
8/31 Lecture L1 Forms and Callsites and Definitions and the Environment (Slides)
9/5 Lecture L2 (Kris gone at ICFP '23) -- Racket Practice Exercises
9/7 Lecture L3 Textual Reduction and Case Splitting and Lists Intro (Slides)
L0 – L3 Reading R0 SICP sections 1 through 1.1.5 (stop before 1.1.6)
9/8 Project P1 Tic-Tac-Toe -- Released (Due on 9/21)
9/12 Lecture L4 Recursion over Lists
9/12 Reading R1 SICP sections 1.1.6 and 1.2 up to 1.2.3
9/14 Lecture L5 Lambdas (Slides)
9/19 Lecture L6 Cons Diagrams and Boxes (Slides)
9/21 Lecture L7 Mapping Over Lists (Slides)
9/21 Project P1 PROJECT 1 DEADLINE
L5 – L7 Reading R2 SICP section 1.3 and 2.1
9/26 Lecture L8 Quasiquoting and Pattern Matching (Slides)
9/28 Lecture L9 Tail Calls and Tail Recursion (Slides)
9/28 Project P2 Transitive Closure -- Released
L9 Reading R3 SICP sections 2.2 and 2.3
10/3 Lecture L10 Practicing Tail Recursion (no slides) and Folding over Lists (Slides)
10/5 Lecture L11 Interpreting IfArith (Code) and Natural Deduction for IfArith (Slides)
10/10 Fall Break
10/12 Lecture L12 Closure-Creating Interpreters
10/12 Project P2 PROJECT 2 DEADLINE
10/17 Lecture L13 Lambda Calculus Introduction (Slides)
10/17 Project P3 Scheme Interpreter -- Released
10/19 Lecture L14 Lambda Calculus: Reductions and Substitution (Slides)
10/24 Lecture L15 (Virtual) Review for Midterm 1
10/26 Exam M1 Midterm 1 (in class, 20%)
10/31 Lecture L16 Reduction Strategies: Call by Value and Call by Name (Slides)
11/2 Lecture L17 (on Zoom--Kris at IEEE Cluster '23) Church Numerals
11/2 Project P3 PROJECT 3 DEADLINE
11/7 Lecture L18 Church Encoding (Slides)
11/7 Project P4 Church Encoder -- Released
11/9 Lecture L19 Fixed Points, Y/U combinators and Continuations (Slides)
11/14 Lecture L20 Continuations, Exceptions, and Control Operators (Slides)
11/16 Lecture L21 Simply-Typed Lambda Calculus (Slides)
11/21 Thanksgiving Break (Tu)
11/23 Thanksgiving Break (Th)
11/28 Lecture L22 STLC Review, polymorphism, and type inference
11/28 Project P4 PROJECT 4 DEADLINE
11/30 Lecture L23 Rust's type system and the borrow checker
12/5 Lecture L24 Course wrapup, review for midterm 2
12/7 Exam M2 Midterm 2 (in class, 20%)