From the course catalog:
A combined course on functional programming and formal proof. Students write programs over a variety of data structures, proving their programs correct with respect to precise logical specifications. Programming topics (and proof topics) range over: recursion (induction); combinatorics; algebraic data types, from lists to trees to abstract syntax trees (structural induction); parsers and interpreters (soundness properties); regular expressions (set theory and language theory).
Prerequisites: CSCI051 PO or equivalent (e.g., 4 or 5 on AP CS exam). Please see the syllabus for more information.
Textbook
We’ll be using an experimental new volume of Software Foundations, which we're calling for now Discrete Math in Coq. Name suggestions are welcome!
Office hours and mentor sessions
Day | Time | Location | |
---|---|---|---|
Prof. Michael Greenberg | Tuesday | 4–5pm (right after class) | Millikan 2113 (our classroom) |
Prof. Michael Greenberg | Wednesday | 2–5pm | Edmunds 225 |
Mentor session | Saturday | 1–3pm | Edmunds Lab |
Mentor session | Sunday | 1–3pm | Edmunds Lab |
Mentor session | Sunday | 7–9pm | Edmunds Lab |
Mentor session | Monday | 7–9pm | Edmunds Lab |
Mentor session | Tuesday | 7–9pm | Edmunds Lab |
I'll try to keep the list of which TAs are working when on Piazza up to date.
Lectures
Date | Lecture | Notes | |
---|---|---|---|
1 | Jan. 16 | Basics | |
2 | Jan. 18 | Basics | Truth tables practice sheet (solutions) |
3 | Jan. 23 | Basics/Induction | Basics due Wednesday at 5pm (submit) |
4 | Jan. 25 | Induction | |
5 | Jan. 30 | Induction | |
6 | Feb. 1 | Induction | Induction practice sheet (solutions) |
7 | Feb. 6 | Lists | Induction due Wednesday at 5pm (submit) |
8 | Feb. 8 | Lists | |
9 | Feb. 13 | Poly | Lists due Wednesday at 5pm |
10 | Feb. 15 | Poly | |
11 | Feb. 20 | Tactics | Poly due Wednesday at 5pm |
12 | Feb. 22 | Tactics | |
13 | Feb. 27 | Review | Tactics due Wednesday at 5pm |
14 | Mar. 1 | Midterm | |
15 | Mar. 6 | Logic | |
16 | Mar. 8 | Logic | |
Mar. 13 | Spring break | ||
Mar. 15 | Spring break | ||
17 | Mar. 20 | Logic | Logic due Wednesday at 5pm; how to prove it sheet |
18 | Mar. 22 | IndProp | |
19 | Mar. 27 | IndProp | |
20 | Mar. 29 | Sort | |
21 | Apr. 3 | Sort | IndProp due Wednesday at 5pm |
22 | Apr. 5 | Combo | |
23 | Apr. 10 | Combo | Sort due Wednesday at 5pm |
24 | Apr. 12 | Sets | |
25 | Apr. 17 | Set-theoretic functions and cardinality | Combo due Wednesday at 5pm |
26 | Apr. 19 | Countability | |
27 | Apr. 24 | Graphs | Sets due Wednesday at 5pm |
28 | Apr. 26 | Trees | |
29 | May 1 | Review | Graphs due Wednesday at 5pm |
May 10 | Final exam is 2–5pm in our classroom (Millikan 2113) |