Schedule
(always tentative!!)
Date   Topic Reading (after lecture) Homework
Jan 10 Welcome; Haskell basics
Guest lecturer: Fernando Pereira
SOE chapters 1 and 2 (just skim pp. 30-32) , Handout 1 HW1 out; due 1/16 at 10PM (Haskell basics)
  12 IO actions; simple graphics
Guest lecturer: Fernando Pereira
SOE chapters 3 and 4, Handout 2  
  14 Programming with functions
Guest lecturer: Brian Aydemir
SOE chapter 5, Handout 3 HW2 out; due 1/25 at noon (higher-order programming)
  17 MLK day: no class    
  19 Review Handout 4 (ppt)  
  21 Infinite lists; recursive data types SOE chapters 6 and 7; Handout 5 (ppt)  
  24

Case study: regions

SOE chapter 8  
  26 Case study: functional red-black trees Handout 6 (ppt) HW3 out; due 2/1 at noon (higher-order programming; functional data structures; generating HTML from XML)
Here are the files to use as a starting point.
  28

More on higher-order programming Case study: drawing regions

SOE chapters 9 and 10; Handout 7  (ppt); Handout 8  (6up, ppt)

 
  31 Qualified types SOE chaper 12; Handout 9 (6up, ppt)  
Feb 2 Discussion of HW3 solutions    
  4 Case study: Animation SOE chapter 13; Handout 10 (6up, ppt) HW4 out (type classes; animation)
Here are the files to use as a starting point.
  7

Lazy stream programming

SOE chapter 14; Handout 11 (6up, ppt)  
  9 Higher-order types (monads, etc.) SOE chapter 18; Handout 12 (6up, ppt)  
  11 (continued)    
  14 Case study: Parsing combinators
Handout 13  HW5 out (parsing combinators; XML parsing)
Here is the file to use as a starting point.
  16 impromptu chat about monads    
  18 Case study: XML processing combinators Wallace and Runciman paper on HaXML (sections 1 and 2); Handout 14  HW6 out (XML processing combinators)
Here are the files to use as a starting point.
  21 Modularity in Haskell

Handout 15 
Section 2.1 and 2.2 of The Pragmatic Programmer
Chapter 5 of the Haskell 98 report

 
  23 (continued)    
  25 Discussion of HW6   HW7 out (CGI scripting with WASH)
Here are the files to use as a starting point, including the WASH sources.
  28 Case study: The WASH/CGI core Thiemann paper on WASH, sections 1 to 5
Handout 16 
 
Mar 2 (continued) Handout 17  
  4 no class   HW: project proposals
post-break 14 Persistent state in WASH WASH paper, sections 6 and 7  
  16 lecture by Paul Hudak    
  18 WASH internals WASH paper, section 8 HW8 out (CGI scripting with persistent state)
Here is the file World.hs.
  21 (continued); coding strategies Pragmatic Programmer, chapters 2 (remainder) and 5  
  23 Case study: QuickCheck QuickCheck paper
Handout 18
 
  25 (continued)

 

HW: prototypes and/or tracer bullets for projects, due 4/1
  28 HUnit; IO, exceptions, basic concurrency Pragmatic Programmer, sections 33, 34, 43;
SOE chapter 16;
HUnit User Guide;
Handouts 19 and 21
 
  30 Continuations Handout 20  
Apr 1 Code walkthroughs of prototypes   HW: finish ("feature complete") projects, due 4/15
  4 guest lecturer: Dimitris Vytiniotis    
  6 DV    
  8 DV    
  11 Lambda-calculus Handout 22  
  13 (continued)    
  15 Project demos / walkthroughs   HW: finish projects again (polishing and documentation)
  18 (continued)    
  20 (continued)    
  22 Functional programming in Java Handout 23 Projects due
(last day of class; no final exam)