Homework is generally due at 4pm PT on Sundays.

Due date | Files |
---|---|

08-30 | `Day01_intro.v` and `Day02_types.v` due at 4pm PT |

09-06 | `Day03_recursion.v` and `Day04_structures.v` due at 4pm PT |

09-13 | `Day05_lists.v` and `Day06_sorting.v` due at 4pm PT |

09-20 | `Day07_trees.v` and `Day08_sets.v` due at 4pm PT |

09-27 | `Day09_levenshtein.v` and `Day10_expressions.v` due at 4pm PT |

10-04 | `Day11_propositions.v` and `Day12_cases.v` due at 4pm PT |

10-11 | `Day13_induction.v` and `Day14_exists.v` due at 4pm PT |

10-18 | `Day15_induction2.v` and `Day16_indprop.v` due at 4pm PT |

10-25 | `Day17_sorting.v` and `Day18_levenshtein.v` due at 4pm PT |

11-01 | `Day19_latex.tex` and `Day20_translating.tex` due at 4pm PT |

11-08 | `Day21_sorting.tex` and `Day22_combo.tex` due at 4pm PT |

11-15 | `Day23_binomial.tex` and `Day24_sets.tex` due at 4pm PT |

11-22 | `Day25_relations.tex` and `Day26_countability.tex` due at 4pm PT |

11-29 | `Day27_graphs.tex` due at 4pm PT |

Feel free to look at various chapters ahead of time, but know that we may change things before posting the homework here!

Worksheets are not for credit; they are excellent practice, though, and they resemble the kinds of problems we like to set on exams.

- Truth tables (posted 2020-08-21; solutions posted 2020-08-26)
- Induction (posted 2020-10-05; solutions posted 2020-10-09)
- Choice (posted 2020-11-04; solutions posted 2020-11-11)
- Sets (posted 2020-11-11; solutions posted 2020-11-12)
- Relations (posted 2020-11-16; solutions posted 2020-11-18)
- Countability (posted 2020-11-18; solutions posted 2020-11-20)

Guides are meant to give you an overview of proof techniques.

- How to prove it (posted 2020-10-05)

All times are in Pacific Time. Look in `#general`

on Zulip for Zoom info.

Sunday | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday |
---|---|---|---|---|---|---|

Ethan 9-11am | ||||||

Jan 7-9pm | Grace & Millie 4-6pm | Prof. Greenberg 4-5pm |

Please see the syllabus for general course information. The course has three parts: programming, formal proof, and paper proof.

Day | Date | File | Plan |
---|---|---|---|

01 | 08-24 | Day01_intro | Coq, Emacs, how to read the book; boolean operations, truth tables, and DNA bases |

02 | 08-26 | Day02_types | numbers and recursive functions |

03 | 08-31 | Day03_recursion | more recursive functions |

04 | 09-02 | Day04_structures | pairs, options, lists, and trees |

05 | 09-07 | Day05_lists | list processing |

06 | 09-09 | Day06_sorting | insertion sort |

07 | 09-14 | Day07_trees | binary search trees |

08 | 09-16 | Day08_sets | list and tree representations of sets |

09 | 09-21 | Day09_levenshtein | the Levenshtein algorithm for edit distance |

10 | 09-23 | Day10_expressions | expressions and interpreters |

At this point, we'll have our first midterm on gradescope, about programming.

Day | Date | File | Plan |
---|---|---|---|

11 | 09-28 | Day11_propositions | basic formal proof; Coq tactics; equality and logical propositions |

12 | 09-30 | Day12_cases | proofs by case analysis |

13 | 10-05 | Day13_induction | induction |

14 | 10-07 | Day14_exists | existential quantification |

15 | 10-12 | Day15_induction2 | induction on other structures |

16 | 10-14 | Day16_indprop | inductive propositions |

17 | 10-19 | Day17_sorting | permutations and sorting |

18 | 10-21 | Day18_levenshtein | proving the Levenshtein algorithm correct and optimal |

At this point, we'll have our second midterm on gradescope, about formal proof.

Day | Date | File | Plan |
---|---|---|---|

19 | 10-26 | Day19_latex | mathematical typesetting in LaTeX |

20 | 10-28 | Day20_translating | translating formal proofs to paper |

21 | 11-02 | Day21_sorting | sort, informally |

22 | 11-04 | Day22_combinatorics | counting; sum rule, product rule, division rule, permutation, choose |

23 | 11-09 | Day23_binomial | the binomial theorem; Pascal's Identity |

24 | 11-11 | Day24_sets | set theory |

25 | 11-16 | Day25_relations | relations and functions |

26 | 11-18 | Day26_countability | cardinality and (un)countability |

27 | 11-23 | Day27_graphs | graphs and paths and trees |

And now: the 72-hour take-home final. The final will be released at 12:01am on Tuesday, December 1st. Submission will be open until 11:59pm on Thursday, December 3rd. You may use the book and any other resource from this class---notes, homeworks, Zulip, etc.---along with Wikipedia. Other sources of help are not permitted.

We're using Coq 8.12.0, Emacs 27.1 (macOS, Windows), and Proof General 4.4 (installed automatically by our init.el). To configure your emacs, you might want to download init.el.

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!