Last modified: 2021-02-15
Courses taught by
David Casperson
CPSC 499

CPSC 499-3
Special Topics II

Although this is a generic topics course that may be put to a variety of purposes, I have essentially taught only four distinct topics in the eight times that I have offered it.

As Symbolic Computation

I have taught this course as an Introduction to Symbolic Computation, and more specifically as Computational Ring Theory in Winter 1998, Winter 2002, and in Winter 2009.

This course covers some basic ring theory, such as definitions of rings, fields, integral domains, unique factorization domains, Euclidean domains and the like.

It then covers representations of integers and polynomials, grade-school algorithms, fast multiplication, methods of representing finite fields and the like.

It then moves towards the factorization of polynomials over the integers.

As Functional Data Structures

I have taught this course as a course on Functional Data Structures, in Fall 2002, Winter 2004, and Winter 2006.

This course loosely follows Purely Functional Data Structures by Chris Okasaki, although it usually starts with no assumption that the students know a functional programming language.

The fundamental theme of this course is that even with persistent data structures laziness can help achieve amortized time.

As Semantic Modelling

This course was taught as a course on semantic modelling only once, in Winter 2000 (although much of the same material was reprieved in a module of CPSC 706 in Fall 2003.)

The point of this course was to show that functional languages can be used to test models of denotational semantics directly and quickly.

As Advanced Functional Programming

This course was taught as Advanced Functional Programming in Winter 2019.

This course explored intermediate Haskell programming, in particular, use of the type classes Applicative, Foldable, Monoid, Monad, Traversalbe, and Functor; the notion of fixed points, and polymorphic recursion.

It explored the implementation of the Data.Sequence data type in depth.


  • I didn't start constructing Semester web-pages until Fall 2003.
  • 2004 (a strange web page)
  • 2006
  • 2009
  • 2019