Instructor: Albert Lai, trebla@cs.utoronto.ca
Exam period office hours
Thursday April 9 21:00-22:00 EDT (extensible)
Friday April 10 14:00-15:30 EDT (extensible)
Course information: link to course information page. (Marking scheme, course policy, academic integrity policy and advice.)
More websites to check: Quercus for announcements, forum, solutions. MarkUs for submitting and returning assignments.
Required reading is listed in the lecture table below.
Reference reading: These are manuals and rule books—you won't be reading them from cover to cover, but you will look them up for usage, details, rules, and resolving “arguments with friends”:
Software: MathLab has GHC 8.6.3 (Haskell interpreter and compiler) and cabal-install 2.4.x (extra package installer). If you would like to have them on your computer too, it seems simplest to:
I encourage you to save the provided files on your computer to guard against web server downtime due to maintenance or power blackout (actually happened once in 2019 winter).
Assignment 1 | Feb 10 Monday midnight |
Assignment 2 | Feb 28 Friday midnight |
Term test | March 2 Monday 5PM, IC130
1 hour 15 minutes 1 aid sheet, letter size, 2 sides, no other restriction Scope: Weeks 1-5 plus week-6 lab |
Assignment 3 | Mar 25 Wednesday midnight |
Assignment 4 | Apr 3 Friday midnight |
I encourage you to save the notes files on your computer to guard against web server downtime due to maintenance or power blackout (actually happened once in 2019 winter).
Week | Topic & notes | Reading | Tutorial-lab |
---|---|---|---|
1. Jan 9 or 10 | Overview,
Haskell basics, the code |
Article
Why Functional Programming Matters by John Hughes
or lecture Why Functional Programming Matters by John Hughes and Mary Sheeran (These are not easy. It's OK to be a bit lost for now.) For Week 2 Lab: Reading Simple Haskell Haskell Wikibook : Getting set up – Type basics | (none) |
2. Jan 16 or 17 | Haskell types part 1,
the code |
As much as you need:
Reading Simple Haskell Haskell Wikibook C9 Lectures: Functional Programming Fundamentals (Youtube videos) Happy Learn Haskell Yet Another Haskell Tutorial Learn You a Haskell for Great Good! A Gentle Introduction to Haskell Exercises: AFP Assignments 99 Haskell problems Styte guide: Style guide | Haskell fix-it exercise |
3. Jan 23 or 24 | Algebraic data types (in last week's file),
Lazy evaluation | Haskell list exercise | |
4. Jan 30 or 31 | foldr and foldl,
Haskell types part 2, | data type and lazy eval | |
5. Feb 6 or 7 | Functor, Applicative, Monad | Typeclassopedia
sections 3-5
The Haskell Wikibook also has good sections | foldr, type class |
6. Feb 13 or 14 | Guest lecture | Clojure crash course | Applicative |
7. Feb 27 or 28 | State monad; dependency injection (monad cont.);
Syntax | (as in week 5, and)
Wikipedia article: context-free grammar | (none) |
8. Mar 5 or 6 | Parsing | Article: Monadic parsing in Haskell (but obsolete code, doesn't load today) | State monad |
9. Mar 12 or 13 | Parsing cont.;
Semantics I | parsing | |
10. Mar 19 or 20 | Semantics I cont.; | short-circuiting | |
11. Mar 26 or 27 | Semantics II | mutual recursion | |
12. Apr 2 or 3 | Semantics II cont. | mutual recursion |