Calendar

This calendar provides the lecture topics for the course, along with links to corresponding lecture notes, problem sets, and quizzes. The pH Book reading assignments refer to the required textbook for the course:

Nikhil, Rishiyur S., and Arvind. Implicit Parallel Programming in pH. 1st ed. Boston, MA: Morgan-Kaufmann, 2001. ISBN: 1558606440.

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    

Course Info

Learning Resource Types

grading Exams
notes Lecture Notes
group_work Projects
assignment Programming Assignments