| LEC # | Topics | Readings | Due |
|---|---|---|---|
| Part I: Programming in pH and the ג-calculus | |||
| 1 | Expressing Parallel Computation | pH Book, Chapter 1 | |
| 2 | Implicitly Parallel Multithreaded Programming | pH Book, Chapter 2 Hudak, A Gentle Intro to Haskell | |
| 3 | The Lambda Calculus | pH Book, Appendix A | |
| 4 | The Lambda Calculus with Constants and Let Bindings, Part I | pH Book, Chapter 4 | |
| 5 | The Lambda Calculus with Constants and Let Bindings, Part II | pH Book, Chapter 4 | |
| 6 | Hindley Milner Type System | Cardelli, Simple Polymorphic Typechecking | PS 1 Due |
| 7 | Polymorphism and Overloading | pH Book, Chapter 3 | |
| 8 | Algebraic Types: Tuples and Lists | pH Book, Chapter 5 | |
| 9 | Pattern Matching and List Comprehensions | pH Book, Chapter 6 | |
| 10 | Arrays and Abstract Types | pH Book, Chapter 7 | |
| 11 | I-Structures and Open Lists | pH Book, Chapter 9 | PS 2 Due |
| Midterm Quiz | |||
| Part II: I/O, Side-effects and Nondeterminism | |||
| 12 | M-Structures, Part I | pH Book, Chapter 10 | |
| 13 | M-Structures, Part II | pH Book, Appendix B | |
| 14 | The Lambda-S Calculus with Side Effects | TBD | PS 3 Due |
| 15 | Monads and Monadic I/O, Part I | pH Book, Chapter 8 Wadler, How to Declare an Imperative | |
| 16 | Monads and Monadic I/O, Part II | ||
| Part III: BlueSpec | |||
| 17 | Bluespec 1: A Language for Hardware Design, Simulation and Synthesis | PS 4 Due | |
| 18 | Bluespec 2: Compilation Model & Intro to Programming | ||
| 19 | Bluespec 3: The IP Lookup Problem | ||
| 20 | Bluespec 4: Modules and Type Classes | ||
| 21 | Bluespec 5 | ||
| Miscellaneous Topics | |||
| Bluespec Discussion (no notes) | |||
| 22 | Term Rewriting Systems, Part I | ||
| 23 | Term Rewriting Systems, Part II | ||
| Project Presentations | |||
| Project Write-Ups Due | |||










