# Lecture Notes

The notes linked below are required reading, but they are not a substitute for attending lecture and recitation. The lectures and recitation sections are tightly coupled: Lectures will assume knowledge from previous sections, and vice-versa. These notes should be read sequentially (Monday's section, Tuesday's lecture, Wednesday's section, Thursday's lecture, etc.).

Lecture topics and assignment due dates are subject to change.

DATE | EVENT | TOPIC | LINKS |
---|---|---|---|

01/26 | Lecture 1 | Introduction to Functional Programming with Types | [Notes] |

01/31 | Lecture 2 | OCaml Syntax and Semantics | [Notes] [Resource 1] [Resource 2] |

02/02 | Lecture 3 | Evaluation Continued and the OCaml Type System | [Notes] |

02/07 | Lecture 4 | More OCaml Types | [Notes] [Resource] |

02/08 | PS1 due Tuesday the 14th at 11:59 PM | [PS1] [Release code] | |

02/09 | Lecture 5 | Still More OCaml Types | [Notes] |

02/14 | Lecture 6 | Building on Problem Set 1 | [Notes] |

02/16 | Lecture 7 | Specifications Using Types | [Notes] |

02/23 | Lecture 8 | Specifications Continued | [Notes] |

02/24 | PS2 due Tuesday the 2nd at 11:59 PM | [PS2] [Release code] | |

02/28 | Lecture 9 | Inductive Proofs of Specifications | [Notes] |

03/02 | Lecture 10 | A Module for Rational Numbers | [Notes] |

03/02 | PS3 due Thursday the 16th at 11:59 PM | [PS3] [Release code] | |

03/07 | Lecture 11 | Constructive Real Numbers | [Notes] [Reading on Real Numbers] [Bishop & Bridges, Constructive Analysis] |

03/02 | Course Resources | [Resources] | |

03/09 | Lecture 12 | Constructive Real Numbers Continued | [Notes] [Extended Reading From Bishop] |

03/21 | Lecture 13 | Constructive Real Numbers as an Introduction to Geometry | [Notes] |

03/23 | Lecture 14 | Computational Geometry and Convex Hulls | [Notes] |

03/28 | Lecture 15 | Constructive Synthetic Geometry | [Notes] [CS Article in the Atlantic: How Aristotle Invented the Computer] |

03/30 | Lecture 16 | Synthetic Geometry and Logic in Computer Science | [Notes] |

04/11 | Lecture 17 | Guest Lecture on Constructive Synthetic Geometry | [Presentation] |

04/13 | Lecture 18 | Binary Search Trees | [Notes] |

04/18 | Lecture 19 | Binary Search Trees Continued | [Notes] |

04/20 | Lecture 20 | Streams, Choice Sequences, and Continuity | [Notes] [Reading on Brouwer's proof of the bar theorem] [Reading on the domains of definition of functions] |

04/25 | Lecture 21 | Distributed Computing with Functional Processes | [Notes] |

04/27 | Lecture 22 | Distributed Computing with Functional Processes continued | [Notes] [Formal Specification, Verification, and Implementation of Fault-Tolerant Systems] |

05/02 | Lecture 23 | Fixed Point Operators | [Notes] |

05/04 | Lecture 24 | Computability Theory in OCaml | [Notes] |

05/09 | Lecture 25 | Course Review and Final Exam Coverage | [Notes] |