Toggle navigation
Programming Languages
Main
Resources
Schedule
Syllabus
Schedule (Tentative)
Week
Topic
Assignment
Week 1: 9/10
Administrivia
What is PL?
Sept. 10 slides
Homework 1
Week 2: 9/14 & 9/17
Introduction to Racket
Sept. 14 slides
in-class strings file
in-class numbers file
in-class control flow file
in-class lists file
in-class functions file
in-class common mistakes file
Recursion
Sept. 17 slides
in-class function file
in-class let file
in-class tail-recursion file
GCD practice problem
function exercises
Homework 2
Week 3: 9/21 & 9/24
Formal semantics
Sept. 21 slides
in-class lambda file
in-class string-reverse file
in-class semantics file
Scope
Sept. 24 slides
in-class scope file
Homework 3
Week 4: 9/28 & 10/1
Formal semantics
Sept. 28 slides
Higher-order functions
Oct. 1 slides
in-class map file
in-class filter file
in-class HOF file
Homework 4
Week 5: 10/5 & 10/8
Higher-order functions
Oct. 5 slides
in-class game file
in-class fold file
in-class warm-up file
Oct. 8 slides
in-class HOF exercises
Homework 5
Starter code
Week 6: 10/15
Programs as data
Oct. 15 slides
in-class I/O file
in-class I/O functions file
in-class match file
in-class quote file
in-class struct file
in-class symbols file
(Homework 5 continues)
Week 7: 10/19 & 10/22
Types
Oct. 19 slides
in-class more match file
Type-checking
Oct. 22 slides
No homework
Week 8: 10/26 & 10/29
Type-checking
Oct. 26 slides
in-class typechecker file
Homework 6
Starter code
Week 9: 11/2 & 11/5
Interpreter project: variables
Nov. 2 slides
in-class eval file
in-class testing file
in-class def file
Interpreter Part 1
Part 1 Summary
Starter code
Starter tests
Week 10: 11/9 & 11/12
Interpreter project: primitive procedures
Interpreter pt. 2
Part 2 Summary
Week 11: 11/16 & 11/19
Interpreter project: lambda
Interpreter pt. 3
Part 3 Summary
Week 12: 11/23
Interpreter project: meta-circularity
Metacircularity guide
Metacircularity support code
Week 13: 11/30 & 12/3
Lazy evaluation
Nov. 30 slides
in-class if file
in-class eager file
in-class lazy file
Streams
Dec. 3 slides
in-class lazy streams file
in-class base Racket streams file
Language project
Report due 12/22
Presentation due 12/14
Week 14: 12/7 & 12/10
Guest lecture: Alexa VanHattum + Rachit Nigam
Paper for guest lecture
Verification languages
Dec. 7 slides
in-class Dafny programs
Probabilistic programming languages
Dec. 10 slides: PPLs
Dec. 10 slides: RSA
in-class Figaro program
Week 15: 12/14
Language project presentations