Last modified: 2021-06-11
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).

Topics
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:
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.
General
  • Discussion of assignment topic is encouraged but all assignments must be done independently.
  • Discussion participation is mandatory.
References
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 https://www.haskell.org/ documentation link. Of particular interest:

The Haskell 2010 Language Report.
(or as a .pdf, or it can be downloaded as a git repository.)
Books
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.
Tutorials
Elsewhere

Not directly mentioned on the Haskell.org 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.

2019-01-06
Web-page updated.
2018-12-30
Web-page created.
Grading Scheme
Report 20%
Participation50%
Homework30%
Policies
Course policies can be found here.
Handouts
2019-01-04 Printed Outline
Links
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.

Instructor
Dr David Casperson (contact information).
Text
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
2022-12 other links

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

University Calendar

Other Links