CIS352 — Spring 2022

Principles of Programming Languages

Date Type Unit Video
1/25 Logistics Course Introduction and Logistics
1/25 Lecture L0 Introduction to Racket and Dr. Racket
1/27 Lecture L1 Racket Forms and Callsites
1/27 Lecture L2 Definitions and the Environment
1/25 – Reading R0 SICP sections 1 through 1.1.5 (stop before 1.1.6)
2/1 Lecture L3 Textual Reduction
2/3 Lecture L4 Case Splitting and Lists Intro
2/3 Lecture L5 Recursion over Lists
2/3 Logistics Using the Autograder
2/3 Project P1 Tic-Tac-Toe
2/1 – Reading R1 SICP sections 1.1.6 and 1.2 up to 1.2.3
2/8 Lecture L6 Lambdas
2/10 Lecture L7 Cons Diagrams and Boxes
2/10 Lecture L8 Mapping Over Lists
2/8 – Reading R2 SICP section 1.3 and 2.1
2/15 Lecture L9 Quasiquoting and Pattern Matching
2/15 Lecture L10 Tail Calls and Tail Recursion
2/17 Quiz Q1 In-Person Quiz 1
2/15 – Reading R3 SICP sections 2.2 and 2.3
2/22 Lecture L11 Practicing Tail Recursion
2/22 Lecture L12 Folding over Lists
2/26 Project P2 PageRank
3/1 Lecture L13 Interpreting IfArith
3/1 Lecture L14 Natural Deduction for IfArith
3/3 Lecture L15 Small-Step Semantics of IfArith
3/8 Lecture L16 Lambda Calculus Introduction
3/8 Lecture L17 Lambda Calculus: Reductions and Substitution
3/10 Quiz Q2 In-Person Quiz 2
3/22 Lecture L18 Reduction Strategies
3/22 Lecture L19 Closure-Creating Interpreters
3/29 Lecture L20 Church Numerals
3/31 Lecture L21 Fixed Points
3/31 Project P3 Definitional Interpreter for Scheme (L19)
4/5 Lecture L22 Continuations
4/7 Quiz Q3 In-Person Quiz 3
4/12 Lecture L23 Review Day
4/14 Lecture L24 Simply-Typed Lambda Calculus
4/19 Lecture L24 Types Contd.
4/19 Project P4 Church Encoding
4/21 Quiz Q3 In-Person Quiz 4
4/26 Lecture L25 Exam Review / Practice
4/28 Lecture L26 Objects
5/3 Lecture L27 Course Wrapup
5/9 Exam F 5:15-7:15Final (normal room, 120min, comprehensive)