Week 1: Course Introduction and Autograder
-
Week 1
-
1/14Lecture: Introduction to Racket and Dr. Racket
-
1/16Basic Racket continued, using the Autograder
Week 2: Racket Forms and Lists
-
1/21Racket Forms, Callsites, and Definitions
-
1/23Conditional Statements and Linked Lists
-
1/23Project P1: Tic-Tac-Toe -- Released (Due on 2/11)
-
- Optional Reading: SICP sections 1 up to 1.1.5
Week 3: Recursion and Lambdas
-
1/28Recursion over Lists
-
1/30Lambdas (Higher-Order Functions)
Week 4: Tree-Shaped (Algebraic) Data
-
Week 4
-
2/4
-
2/4Tree-Shaped Data and Pattern Matching Intro
-
2/6Recursion over Algebra Data
Week 5: Tail Calls and Foldl/r
-
2/11Control Flow: Tail Calls and Tail Recursion
-
2/11Project P1 Deadline
-
2/13Accumulating with Foldl/r
Week 6: Foldl/r and Building Our First Interpreter
-
2/18Project P2: Transitive Closure -- Released (Due 3/4)
-
2/18Representing Graphs in Racket, Transitive Closure
-
2/20Building an Interpreter for `IfArith`
Week 7: Midterm Review and Midterm 1
-
2/25Midterm 1--Review
-
2/27Midterm 1 (in class, 20%)
Week 8: Natural Deduction and Lambda Calculus Intro
-
03/04Natural Deduction and Proof Trees
-
03/04Project P2 Deadline
-
03/06Lambda Calculus Introduction
Spring Break
-
3/11Spring Break (No Class)
-
3/13Spring Break (No Class)
Week 9: Lambda Calculus Details
-
3/18Lambda Calculus: Reduction Rules
-
3/18Project P3: Scheme Interpreter -- Released (Due 4/1)
-
3/20Reduction Strategies: Call by Value and Call by Name
Week 10: Church Encoding and Recursion
-
3/25Church Numerals and Church Encoding
-
3/27Recursion via letrec and the Y/U Combinator
Week 11: Midterm Review and Midterm 2
-
4/1Midterm 2--Review
-
4/1Project P3 Deadline
-
4/3Midterm 2 (in class, 20%)
Week 12: Simply-Typed λ-Calculus
-
4/8Simply-Typed λ-Calculus
-
4/8Project 4 -- Released (Due 4/28)
-
4/10Intuitionistic Propositional Logic and the Curry-Howard Isomorphism
Week 13: Type Inference and Logic Programming
-
4/15Type Inference via Constraint Solving
-
4/18Logic Programming, Datalog
Week 14: Low-Level Programming in Rust
-
4/22Rust Introduction
-
4/24More Advanced Rust, Course Wrapup
Week 15: End of Class / Finals
-
4/28Project P4 Deadline
-
TBDFinal Exam (in class, 20%)