CIS352 — Fall 2024

Principles of Programming Languages

Date Type Unit Lecture / Video
8/27 Logistics Course Introduction and Logistics
8/27 Lecture L0 Introduction to Racket and Dr. Racket (video) (Slides)
8/28 Lecture L1 Forms and Callsites and Definitions and the Environment (Slides)
9/3 Lecture L2 (Kris gone, led by Neda) -- Autograder Exercise 0
9/5 Lecture L3 (on Zoom) -- Textual Reduction and Case Splitting and Lists Intro (Slides)
9/5 Project P1 Tic-Tac-Toe -- Released (Due on 9/19)
L0 – L3 Reading R0 SICP sections 1 through 1.1.5 (stop before 1.1.6)
9/10 Lecture L4 Recursion over Lists
9/10 Reading R1 SICP sections 1.1.6 and 1.2 up to 1.2.3
9/12 Lecture L5 Lambdas (Higher-Order Functions)(Slides)
9/17 Lecture L6 Cons Diagrams and Boxes, Automatic Memory Management/GC (Slides)
9/19 Project P1 PROJECT 1 DEADLINE
9/19 Lecture L7 Mapping Over Lists and Trees (Slides)
L5 – L7 Reading R2 SICP section 1.3 and 2.1
9/24 Project P2 Transitive Closure -- Released (Due 2/29)
9/24 Lecture L8 Quasiquoting and Pattern Matching (Slides)
9/26 Lecture L9 Tail Calls and Tail Recursion (Slides)
R3 Reading R3 SICP sections 2.2 and 2.3
10/1 Lecture L10 Practicing Tail Recursion (no slides) and Folding over Lists (Slides)
10/3 Lecture L11 Interpreting IfArith (Code) and Natural Deduction for IfArith (Slides)
10/8 Lecture L12 Midterm 1--Review
10/8 Project P2 PROJECT 2 DEADLINE
10/10 Exam M1 MIDTERM 1 (in class, 20%)
10/15 Fall Break (Tu)
10/17 Lecture L13 Lambda Calculus Introduction (Slides)
10/22 Project P3 Scheme Interpreter -- Released
10/22 Lecture L15 Closure-Creating Interpreters: the Runtime Lambda
10/24 Lecture L16 Lambda Calculus: Reductions and Substitution (Slides)
10/29 Lecture L17 Reduction Strategies: Call by Value and Call by Name (Slides)
10/31 Lecture L18 Church Encoding Intro: the Church Numerals (Slides)
11/5 Lecture L19 Church Encoding (Slides)
11/5 Project P3 PROJECT 3 DEADLINE
11/7 Lecture L20 Fixed Points; the Y and U combinators
11/7 Project P4 Church Encoder -- Released
11/12 Lecture L21 Type Systems Part 1: Simply-Typed λ-Calculus (Slides)
11/14 Lecture L22 Type Systems Part 2: Type System Practice Problems
11/19 Lecture L23 Type Systems Part 3: Soundness and Features (Slides)
11/21 Lecture L24 Type Inference and Interactive Theorem Proving (Lean)
11/26 Thanksgiving Break (Tu)
11/28 Thanksgiving Break (Th)
12/3 Lecture L25 Dynamic Dispatch, Garbage Collection, and Rust (Slides)
12/5 Lecture L25 Midterm 2 -- Review
12/5 Project P4 PROJECT 4 DEADLINE
12/10 Exam M2 Midterm 2 (in class, 20%)