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) |