Data Structures and Functional Programming

Functional Programming |

01/25/18 | L1: Introduction to 3110 [slides] [notes] [OCaml installation] [local copy of OCaml manual] [lab] [lab solution] [syllabus] [tips for success] [asking technical questions] |

01/30/18 | L2: Functions [slides] [notes] [lab] [lab solution] |

02/01/18 | L3: Lists [slides] [notes] [lab] [lab solution] [local copy of standard library documentation] [OUnit documentation] |

02/06/18 | L4: Data types (Guest Lecture: Andrew Myers) [slides] [notes] [lab] [lab solution] |

02/08/18 | L5: More Variants [slides] [notes] [lab] [lab solution] |

02/13/18 | L6: Higher-order programming [slides] [notes] [lab] [lab solution] [Google paper on MapReduce] |

Modular Programming |

02/15/18 | L7: Modules (Guest Lecture: Steffen Smolka) [slides] [notes] [code] [lab] [lab solution] |

02/20/18 | No class: February Break |

02/22/18 | L8: Functors [slides] [notes] [code] [lab] [lab solution] |

02/27/18 | L9: Abstraction and specification (Guest lecture: Dietrich Geisler) [slides] [notes] [lab] [lab solution] |

03/01/18 | L10: Abstraction functions and representation invariants (Guest lecture: Greg Morrisett) [slides] [notes] [lab] [lab solution] |

03/06/18 | L11: Testing [slides] [notes] [lab] [lab solution] [optional lab on randomized testing] |

Data Structures |

03/08/18 | L12: Streams and laziness [slides] [notes] [lab] [lab solution] |

03/13/18 | Prelim I |

03/13/18 | L13: Balanced trees [slides] [code] [lab] [lab solution] [notes from 2014fa on red-black trees] |

03/15/18 | L14: Mutable data types [slides] [notes] [lab] [lab solution] |

03/20/18 | L15: Hashtables [slides] [notes] [lab] [lab solution] |

Interpreters |

03/22/18 | L16: Interpreters [slides] [code] [lab] [lab solution] |

03/27/18 | L17: Substitution model [slides] [substitution model semantics of core OCaml] [code] [lab] [lab solution] |

03/29/18 | L18: Environment model [slides] [environment model semantics of core OCaml] [code] [lab] [lab solution] |

Spring Break |

04/03/18 | No class: Spring Break |

04/05/18 | No class: Spring Break |

Formal Methods |

04/10/18 | L19: Functional programming in Coq [slides] [Coq installation] [code] [notes - html] [notes - Coq] [lab] [lab solution] [Coq reference manual] [Coq standard library] |

04/12/18 | L20: Logic in Coq [slides] [code] [notes - html] [notes - Coq] [lab] [lab solution] |

04/17/18 | L21: Proofs are programs [slides] [OCaml code] [Coq code] [notes] [lab] [lab solution] |

04/19/18 | L22: Induction in Coq [slides] [code] [notes - html] [notes - Coq] [lab] [lab solution] |

04/24/18 | Prelim II |

04/24/18 | L23: Verification in Coq [slides] [code] [lab] [lab solution] [3110 Coq Tactics Cheatsheet] |

Advanced Topics |

04/26/18 | L24: Futures [slides] [old async notes part 1] [old async notes part 2] [old ivar notes] [lab] [lab solution] |

05/01/18 | L25: Monads [slides] [code] [lab] [lab solution - OCaml] [lab solution - Coq] |

Software Ethics |

05/03/18 | L26: Ethical Issues in CS [slides] |

THE END |

05/08/18 | L27: Victory Lap (Guest Lecture: Alan and Dietrich) [slides] |

05/15/18 | Final Project due: 4:30 pm, demos held over the next few days |

05/17/18 | Final Exam |

**Final Project**:- Charter
*due 03/15/18* - Design
*due 03/29/18* - Design review meetings
*held 04/09/18 through 04/13/18* - Prototype
*due 05/01/18* - Prototype review meetings
*held 05/02/18 through 05/08/18* - Implementation
*due 05/15/18* - Demos
*held 05/14/18 through 05/18/18* - previous award winners

- Charter

The dates above are best estimates, not a commitment. You are cautioned that they may change without warning for assignments that have not yet been released.