Last modified: 2023-01-26
This is a course page of
David Casperson
Associate Professor
Computer Science
University of Northern British Columbia

CPSC 499 — Advanced Functional Programmming — Winter 2019

course outline (printable pdf version).

from (not necessarily in the order listed)
exploring strictness, advanced pattern-matching syntax, purely functional data structures, standard type classes (box, Monoid, Foldable, Traversable, Functor, Applicative, monads, and monadic transformers), polymorphic recursion, fixed-point operators at both the value and type level,….
Attendance in this course is the student's responsibility and is not monitored by the instructor. Students are entirely responsible for being aware of material discussed in lecture, even if they are unavoidably prevented from attending.
Marking Scheme Changes:
I reserve the right to change weightings given in the marking scheme on the course outline. Students are guaranteed that their letter grade will not decrease as the result of such a change.
  • Discussion of assignment topic is encouraged but all assignments must be done independently.
  • Discussion participation is mandatory.
Definitive definitions
Language and library definitions can be found at
The Haskell 2010 Language Report.
(or as a .pdf, or it can be downloaded as a git repository.)
The entire Haskell Hierarchy Library
including source code is online.

There is a lot of good reference material directly at documentation link. Of particular interest:

The Haskell 2010 Language Report.
(or as a .pdf, or it can be downloaded as a git repository.)
Learn You a Haskell for Great Good!
This is a funky text with lots of good information presented in a fun way.
Real World Haskell
A good book for practical programming. If you want to be able to do in Haskell what you can do in Java, this is a good book to look at.

Not directly mentioned on the web-site is

  • Purely Functional Data Structures by Chris Okasaki.

This book is an excellent guide to how amortized complexity calculations can be handled in a lazy context, and provides a wealth of practical, CPSC 281 like, material.

Important Information

Important information will be posted here from time to time.

Web-page updated.
Web-page created.
Grading Scheme
Report 20%
Course policies can be found here.
2019-01-04 Printed Outline
Course Dates
HomeworkOccasional. Assigned in meetings
Reportsee here.
Winter Break 2019-02-19 to 2019-02-19.
Course Evaluation 2019-03-29 Friday
Last Class 2019-04-05 Friday
Final There is no final.
Good Friday 2019-04-19
Easter Monday 2019-04-22

Other dates can be found on the University web-site here.

Dr David Casperson (contact information).
none. See the references section.
Rooms and Hours
This is a reading course. Meeting times are normally Friday, 10am in 8-361.
Home page Semesters Site Map
go back Winter 2019 go forward
2023-09 other links

CPSC 101 Java info [All years]
CPSC 110 Python [All years]
CPSC 499
David’s Schedule
Lab Schedule
CPSC 101
CPSC 110 Labs Tuts

University Calendar

Other Links