CSCC24 2023 Summer

Instructor: Albert Lai, albertyc.lai@utoronto.ca

Course information: link to course information page. (Marking scheme, course policy, academic integrity policy and advice.)

Office hours:
Tuesday and Friday 14:00-15:30 extensible, CS Help Centre
There are extra office hours for assignments, midterm test, final exam.

More required websites to check:
Quercus: announcements, solutions.
Ed Discussion: course forum. (Quercus has the link.)
MarkUs: submitting and returning assignments.
Crowdmark or Gradescope: returning tests.

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: Please visit the CSCC24 software page.

Labs, Assignments, Term Test, Final Exam

Item Due date & notes
Assignment 1 Wednesday June 7 11:59PM
Assignment 2 Sunday July 2 11:59PM
Midterm Test Friday July 14 3PM IC220
1 hour 30 minutes
1 aid sheet
Scope: Weeks 1-6 plus Week 7 Lab
Assignment 3 Saturday July 22 11:59PM
Assignment 4 Wednesday August 9 11:59PM

Labs:

Tutorial notes by TAs: link

lab week 12 week 11 week 10 week 9 week 8 week 7 week 6 week 5 week 4 week 3 week 2
due Aug 4 Jul 28 Jul 21 Jul 14 Jul 7 Jun 30 Jun 16 Jun 9 Jun 2 May 26 May 19

Lectures, Reading

Date Lecture Code Reading
May 11 Overview 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 sections from Getting Set Up to Type Basics
Haskell basics code
May 19 Haskell basics Reading Simple Haskell
Haskell Wikibook
C9 Lectures: Functional Programming Fundamentals (Youtube videos)

In case you want more:
Happy Learn Haskell
Yet Another Haskell Tutorial
Learn You a Haskell for Great Good!
A Gentle Introduction to Haskell

Styte guide: Style guide

Exercises:
AFP Assignments
99 Haskell problems

Haskell types part 1 code
May 25 Haskell types part 1
Lazy evaluation code
Jun 1 Lazy evaluation
Haskell types part 2 code
Jun 8 Folds code
Partial-Order Theory of Recursion
Jun 15 Syntax Wikipedia article: context-free grammar
Parsing definitions
examples
Jun 29 Parsing
Jul 6 Type inference
Jul 13 Type inference
Parametricity
Jul 20 Semantics I code
Jul 27 Semantics I
Semantics II code
Aug 3 Functors, Applicatives (not on exam) code Typeclassopedia sections 3-5
Monads (not on exam) code