CIS352 — Spring 2021

Principles of Programming Languages

Date Type Unit Video
2/9 Logistics Course Introduction and Logistics
2/9 Lecture L0 Introduction to Racket and Dr. Racket
2/11 Lecture L1 Racket Forms and Callsites
2/11 Lecture L2 Definitions and the Environment
2/9 – Reading R0 SICP sections 1 through 1.1.5 (stop before 1.1.6)
2/16 Lecture L3 Textual Reduction
2/16 Lecture L4 Case Splitting and Lists Intro
2/18 Lecture L5 Recursion over Lists
2/18 Logistics Using the Autograder
2/18 Project P0 Tic-Tac-Toe
2/16 – Reading R1 SICP sections 1.1.6 and 1.2 up to 1.2.3
2/23 Lecture L6 Lambdas
2/25 Lecture L7 Cons Diagrams and Boxes
2/25 Lecture L8 Mapping Over Lists
2/23 – Reading R2 SICP section 1.3 and 2.1
3/2 Lecture L9 Pattern Matching
3/4 Lecture L10 Tail Calls and Tail Recursion
3/2 – Reading R3 SICP sections 2.2 and 2.3
3/8 Quiz Q0 Online Synchronous Quiz 0 (80min)
3/9 Lecture L11 Practicing Tail Recursion
3/9 Lecture L12 Folding over Lists
3/11 Project P1 PageRank
3/16 Lecture L13 Interpreting IfArith
3/18 Lecture L14 Natural Deduction for IfArith
3/23 SU Wellness Day (No Class)
3/25 Lecture L15 Small-Step Semantics of IfArith
3/30 Lecture L16 Lambda Calculus Introduction
3/30 Lecture L17 Lambda Calculus: Reductions and Substitution
4/1 Lecture L18 Reduction Strategies
4/6 Lecture L19 Church Numerals
4/8 Lecture P2 Church Encoding
4/12 Quiz Q1 Online Synchronous Quiz 1 (100min)
4/13 Lecture Review / catch up day on lambda calculus
4/15 Lecture Church encoding quiz review problems
4/20 Lecture L21 Fixed Points
4/22 Lecture L22 U and Y combinator review
4/27 Lecture L22 Continuations
4/29 Lecture L23 Control Constructs via Continuations
4/29 Project P3 Definitional Interpreter for Scheme
4/25 Project P4 PL Feature Blog Post
5/4 Lecture L24 Simply-Typed Lambda Calculus
5/6 Lecture L25 Type Soundness for STLC
5/10 Quiz Q2 Online Synchronous Quiz (details TBA)
5/11 Lecture L26 Macros and Hygiene
5/13 Lecture L27 Course Wrapup
TBA Exam F Final (120min, comprehensive, submit up to 6 answers)