CSCC24 2026 Summer

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

Course information: link. (Marking scheme, course policy.)

Office hours:
Thursday 17:15-18:15, Friday 14:00-15:30 extensible, CS Help Centre IA 3180
There are extra office hours for assignments, term tests, final exam.

Required reading is listed in the lecture table below.

Reference reading: There are user manuals, library docs, and reference manuals for the compilers and languages we use. You won't be reading them from cover to cover, but you can look up particular items when necessary. Please find the links on the software page.

Software: Please visit the CSCC24 software page.

Labs, Assignments, Term Test, Final Exam

lab l02
due May 15

Item Due date & notes
Assignment 1 coming soon
Midterm Test1 aid sheet
Final exam 2 aid sheets

Lectures, Reading

Date Lecture Code Reading
May 7 Overview Article Why Functional Programming Matters by John Hughes
or lecture Why Functional Programming Matters by John Hughes and Mary Sheeran
(They 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 14 Haskell types part 1 code Reading Simple Haskell
Haskell Wikibook: Haskell Basics, Elementary Haskell, Intermediate Haskell (minus Functor), Monoids, Foldable
C9 Lectures: Functional Programming Fundamentals (Youtube videos) chapters 1–7,10

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

Lazy evaluation code
Haskell types part 2 code
Folds code
Partial-order theory of recursion;
Curry
code Curry Tutorial sections 1–4
Curry
Syntax Wikipedia article: context-free grammar
Parsing definitions;
examples
Parsing
Type inference
Parametricity Exercises
Dhall and rank-n polymorphism How to translate recursive code to Dhall

If we have more time:

Semantics I: bindings and functions code
Semantics II: state code
Semantics III: exceptions code
Functors, Applicatives code Typeclassopedia sections Functor, Applicative,
Monads code Typeclassopedia section Monad