Skip to content

Latest commit

 

History

History
48 lines (34 loc) · 3.64 KB

File metadata and controls

48 lines (34 loc) · 3.64 KB
outline deep

Lecture Notes

The following lecture notes cover most of the course material.

Racket

# Title Content Files
1. Introduction Discusses the key ideas behind functional programming. It further introduces the programming language Racket. Slides. Log.
2. Lists & Trees Focuses on Racket lists and trees. Further, it introduces the unit testing library Rackunit. Slides. Log.
3. Higher Order Functions Deals with higher-order functions like map, filter, foldl, function closures and Racket structures. Slides. Log.
4. Lazy Evaluation Introduces pattern matching, and explains how to implement lazy evaluation and streams in Racket. Slides. Log.
5. Macros & Interpreters Briefly introduces syntactic macros, and shows how to implement interpreters. Slides. Log. Brainf*ck.rkt.

Lambda Calculus

# Title Content Files
6. Lambda Calculus Describes the basics of lambda calculus to show you were most of the initial ideas for functional programming came from. Slides. Lambda-calculus.rkt.

Haskell

# Title Content Files
7. Introduction to Haskell Introduces Haskell as a compiled, statically-typed, and lazy language. Slides. Log.
8. Haskell Types Discusses the strongly-typed, static, and inferred type system of Haskell including: parametric polymorphism, ad-hoc polymorphism (typeclasses), and algebraic datatypes. Slides. Log.
9. Type Classes We discuss some more examples of type classes, most importantly Functors. Slides. Log.
10. Haskell's IO & Monads Introduces Haskell's IO and the typeclass Monad. Slides. Log.
11. Monadic Parsing Uses Functor and Monad instances from the previous lecture to demonstrate the elegance of monadic parsing. Slides. Log. Parser.hs.
12. State Monad Make repetitive, stateful boilerplate disappear via the State monad. Slides. Log. State.hs. StateIO.hs.
13. Monoids and Foldables Dissecting foldr into Monoids and Foldables. Slides. Log. Dataset.

Bonus

# Title Content Files
1. Immutable datastructures For the interested reader there is another lecture on immutable datastructures like random access lists.
2. Parallel Haskell Introduces 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.