Data Structures and Functional Programming

Functional Programming |

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

08/24/17 | L2: Functions [slides] [notes] [lab] [lab solution] |

08/29/17 | L3: Lists [slides] [notes] [lab] [lab solution] [local copy of standard library documentation] [OUnit documentation] |

08/31/17 | L4: Data types [slides] [CS orgs] [notes] [lab] [lab solution] |

09/04/17 | No class: Labor Day |

09/05/17 | L5: Variants [slides] [notes] [lab] [lab solution] |

09/07/17 | L6: Higher-order programming [slides] [notes] [lab] [lab solution] [Google paper on MapReduce] |

Modular Programming |

09/12/17 | L7: Modules [slides] [notes] [code] [lab] [lab solution] |

09/14/17 | L8: Functors [slides] [notes] [code] [lab] [lab solution] |

09/19/17 | L9: Abstraction and specification [slides] [notes] [lab] [lab solution] |

09/21/17 | L10: Abstraction functions and representation invariants [slides] [notes] [lab] [lab solution] |

09/26/17 | L11: Testing [slides] [notes] [lab] [lab solution] [optional lab on randomized testing] |

Data Structures |

09/28/17 | L12: Streams and laziness [slides] [notes] [lab] [lab solution] |

10/03/17 | L13: Balanced trees [slides] [code] [lab] [lab solution] [notes from 2014fa on red-black trees] [notes from an external source on 2-3 trees] |

10/05/17 | L14: Mutable data types [slides] [notes] [lab] [lab solution] |

10/10/17 | No class: Fall Break |

10/12/17 | Prelim: 5:30–7:00 and 7:30–9:00pm, in Baker Lab 200
(overflow to 219 and 335 as needed) |

10/17/17 | L15: Hash tables [slides] [code] [notes] [lab] [lab solution] |

Interpreters |

10/19/17 | L16: Interpreters [slides] [code] [lab] [lab solution] |

10/24/17 | L17: Substitution model [slides] [substitution model semantics of core OCaml] [code] [lab] [lab solution] |

10/26/17 | L18: Environment model [slides] [environment model semantics of core OCaml] [code] [lab] [lab solution] |

Formal Methods |

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

11/02/17 | L20: Logic in Coq [slides] [code] [notes - html] [notes - Coq] [lab] [lab solution] |

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

11/09/17 | L22: Induction in Coq [slides] [code] [notes - html] [notes - Coq] [lab] [lab solution] |

11/14/17 | L23: Verification in Coq [slides] [code] [lab] [lab solution] [3110 Coq Tactics Cheatsheet] |

Advanced Topics |

11/16/17 | L24: Futures [slides] [old async notes part 1] [old async notes part 2] [old ivar notes] [lab] [lab solution] |

11/21/17 | L25: Monads [slides] [code] [lab] [lab solution - OCaml] [lab solution - Coq] |

11/23/17 | No class: Thanksgiving Break |

11/28/17 | L26: Objects [slides] [code] |

THE END |

11/30/17 | L27: Victory lap [slides] |

12/06/17 | Final Exam: 9:00–11:30 am, Statler Hall Auditorium (STL 185) |

12/07/17 | Final Project due: 4:30 pm, demos held over the next few days |

**A0**[writeup] [release code]**A1**[writeup] [release code] [scavenger hunt]**A2**[writeup] [release code]**A3**[writeup] [release code]**A4**[writeup] [release code]**A5**[writeup] [release code]

**Final Project**:- Charter
*due 10/23/17* - Design
*due 11/15/17* - Design review meetings
*held 11/16/17 through 11/21/17* - Implementation
*due 12/07/17* - Demos
*held 12/07/17 through 12/11/17* - 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.