CSCC24 2020 Winter

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:

Assignments & Term Test

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

Lectures, Reading, Tutorial-Labs

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