CIS352 — Spring 2024

Principles of Programming Languages

Date Type Unit Video
1/16 Logistics Course Introduction and Logistics
1/16 Lecture L0 Introduction to Racket and Dr. Racket (video) (Slides)
1/18 Lecture L1 Forms and Callsites and Definitions and the Environment (Slides)
1/23 Lecture L2 (Kris gone) -- Autograder Exercise 0
1/25 Lecture L3 (Kris gone) -- Textual Reduction and Case Splitting and Lists Intro (Slides)
1/25 Project P1 Tic-Tac-Toe -- Released (Due on 2/8)
L0 – L3 Reading R0 SICP sections 1 through 1.1.5 (stop before 1.1.6)
1/30 Lecture L4 Recursion over Lists
1/30 Reading R1 SICP sections 1.1.6 and 1.2 up to 1.2.3
2/1 Lecture L5 Lambdas (Higher-Order Functions)(Slides)
2/6 Lecture L6 Cons Diagrams and Boxes, Automatic Memory Management/GC (Slides)
2/8 Lecture L7 Mapping Over Lists and Trees (Slides)
L5 – L7 Reading R2 SICP section 1.3 and 2.1
2/13 Project P2 Transitive Closure -- Released (Due 2/29)
2/13 Lecture L8 Quasiquoting and Pattern Matching (Slides)
2/15 Lecture L9 Tail Calls and Tail Recursion (Slides)
L9 Reading R3 SICP sections 2.2 and 2.3
2/20 Lecture L10 Practicing Tail Recursion (no slides) and Folding over Lists (Slides)
2/22 Lecture L11 Interpreting IfArith (Code) and Natural Deduction for IfArith (Slides)
2/27 Lecture L12 Closure-Creating Interpreters: the Runtime Lambda
2/27 Project P2 PROJECT 2 DEADLINE
2/29 Lecture L13 Lambda Calculus Introduction (Slides)
2/29 Project P3 Scheme Interpreter -- Released
3/5 Lecture L14 Midterm 1 -- Review
3/7 Exam M1 Midterm 1 (in class, 20%)
3/12 Spring Break (Tu)
3/14 Spring Break (Th)
3/19 Lecture L15 Lambda Calculus: Reductions and Substitution (Slides)
3/21 Lecture L16 Reduction Strategies: Call by Value and Call by Name (Slides)
3/26 Lecture L17 Church Encoding and the Church Numerals
3/26 Project P3 PROJECT 3 DEADLINE
3/28 Lecture L18 Church Encoding (Slides)
4/2 Project P4 Church Encoder -- Released
4/2 Lecture L19 Project 4 discussion, Fixed Points and the Y/U combinator
4/4 Lecture L20 Continuations, Exceptions, and Effects
4/9 Lecture L21 Compilers I: Compiling LetIf to C
4/9 Project P5 Group Project -- LetIf Compiler
4/11 Lecture L22 Compilers II: Compiling LetIf to Assembly
4/16 Lecture L23 Calling Conventions, Indirect Calls, and Virtual Methods
4/16 Project P4 PROJECT 4 DEADLINE
4/18 Lecture L24 Register Allocation, Program Analysis and Optimization
4/23 Lecture L25 Midterm 2 Review
4/25 Exam M2 Midterm 2 (in class, 20%)
4/29 Project P4 PROJECT 5 DEADLINE