All homework assignments should emerge creatively from the Style guidelines. Homework is due each Monday by the start of class.
HW submission site / HW submission instructions
Week 1 (14 January): Introduction to Haskell ( html, lhs )
- Homework 1: due Monday, 21 January.
Week 2 (21 January): Algebraic Data Types ( html, lhs )
- Homework 2: due Monday, 28 January. [ error.log, sample.log, Log.hs ]
Week 3 (28 January): Recursion patterns, polymorphism, and the Prelude ( html, lhs )
- Homework 3: due Monday, 4 February.
Week 4 (4 February): Higher-order programming and type inference ( html, lhs )
- Homework 4: due Monday, 11 February.
Week 5 (11 February): More polymorphism and type classes ( html, lhs )
- Homework 5: due Monday, 18 February. [ ExprT.hs, Parser.hs, StackVM.hs ]
Week 6 (18 February): Lazy evaluation ( html, lhs )
- Homework 6: due Monday, 25 February.
Week 7 (25 February): Folds and monoids ( html, lhs )
- Homework 7: due Monday, 11 March. [ Editor.hs, Buffer.hs, Sized.hs, StringBuffer.hs, StringBufEditor.hs, carol.txt ]
Week 8 (11 March): IO ( html, lhs )
- Homework 8: due Monday, 18 March. [ Employee.hs, company.txt ]
Week 9 (18 March): Functors ( html, lhs )
- Homework 9: due never (no HW this week).
Week 10 (25 March): Applicative functors (part 1) ( html, lhs )
- Homework 10: due Monday, 1 April. [ AParser.hs ]
Week 11 (1 April): Applicative functors (part 2) ( html, lhs )
- Homework 11: due Monday, 8 April. [ AParser.hs, SExpr.hs ]
Week 12 (8 April): Monads ( html, lhs )
- Homework 12: due Monday, 15 April. [ Risk.hs ]