Last modified: 2022-07-30
Courses taught by
David Casperson
CPSC 320

CPSC 370
Functional and Logic Programming


Functional and Logic Programming is a third-year course that introduces students to languages outside of the imperative and/or OOP idioms.

When I have taught this course, I have typically introduced one or two functional languages and Prolog as the logic programming language. The functional languages usually include Scheme (Racket), and a statically-typed language; originally Standard ML of New Jersey, more recently Haskell concepts that I cover in this course include:

  • tail-call optimisation
  • accumulator arguments
  • Currying
  • static versus dynamic typing
  • Prolog unification (and the occurs check)
  • persistent versus ephemeral data structures
  • pure versus impure functional programming
  • environments and closures
  • cuts

Language(s) of Instructions

Language of instruction
2019Haskell, Prolog
2015–2018Haskell, Prolog, Scheme
2010–2013Standard ML, Prolog, Scheme
2005–2006Standard ML, Prolog, Scheme