Skip to content

Lectures

As we proceed through the lectures, I will try to write down lecture notes so that you have most of the course material in a single place. However, I am unsure if I will manage to be on time with them due to other obligations.

Racket

#TitleContentFiles
1.IntroductionDiscusses the key ideas behind functional programming. It further introduces the programming language Racket.Slides. Log.
2.Lists & TreesFocuses on Racket lists and trees. Further, it introduces the unit testing library Rackunit.Slides. Log.
3.Higher Order FunctionsDeals with higher-order functions like map, filter, foldl, function closures and Racket structures.Slides. Log.
4.Lazy EvaluationIntroduces pattern matching, and explains how to implement lazy evaluation and streams in Racket.Slides. Log.
5.Macros & InterpretersBriefly introduces syntactic macros, and shows how to implement interpreters (the latter is remains to be written).Slides. Log. Brainf*ck.rkt.
6.Lambda CalculusDescribes the basics of lambda calculus to show you were most of the initial ideas for functional programming came from.Slides. Lambda-calculus.rkt.
BonusImmutable datastructuresFor the interested reader there is another lecture on immutable datastructures like random access lists.

Haskell

#TitleContentFiles
7.Introduction to HaskellIntroduces Haskell as a compiled, statically-typed, and lazy language.Slides. Log.
8.Haskell TypesDiscusses the strongly-typed, static, and inferred type system of Haskell including: parametric polymorphism, ad-hoc polymorphism (typeclasses), and algebraic datatypes.Slides. Log.
9.Type ClassesWe discuss some more examples of type classes, most importantly Functors.Slides. Log.
10.Haskell's IO & MonadsIntroduces Haskell's IO and the typeclass Monad.Slides. Log.
11.Monadic ParsingUses Functor and Monad instances from the previous lecture to demonstrate the elegance of monadic parsing.Slides. Log. Parser.hs.
12.State MonadMake repetitive, stateful boilerplate disappear via the State monad.Slides. Log. State.hs. StateIO.hs.
13.Lecture 13Dissecting foldr into Monoids and Foldables.Slides. Log. Dataset.
BonusParallel HaskellIntroduces Haskell's spark system and demonstrates how to use Strategy types for simple parallelization of existing Haskell programs.pfold.hs. parmaze.hs.

Old recorded lectures

Old recorded lectures from 2021 can be found here.