Last modified: 2023-01-26
This is a course page of
David Casperson
You are here: homeSemestersFall 2015CPSC 370
Associate Professor
Computer Science
University of Northern British Columbia

CPSC 370 — Functional and Logic Programming — Fall 2015

This page summarises information about CPSC 370.

A grade of C- or better in cpsc 141 and cpsc 281; or permission of instructor.
Important Information

Important information may be posted here from time to time.


Students in this course who, because of a disability, may have a need for special academic accommodations should discuss this with the instructor, or contact the Access Resource Centre located in the Teaching & Learning Building in Room 10-1048.

Grading Scheme1 and Dates:
First ClassWed, Sep 09
Thanksgiving Mon, Oct 12
Midterm I Wed, Oct 14 20%
Last Drop Day Thu, Oct 17
Midterm IIMon, Nov 09 20%
Remembrance DayWed, Nov 11
Course EvaluationWed, Nov 25
Last ClassFri, Dec 04
Homework from time to time 25%
Final Wed, Dec 09 35%

The final will be 3 hours long on Wednesday December 9 at 18:00 in Room 5-155.

Programming Assigments
There will be approximately weekly programming assignments during the semester. Programming languages include Scheme, Prolog and Haskell.

See the homework link on the menu-bar.

Times can be found on David Casperson’s Schedule also linked on the right.
Handout Dates
2015-06-15 (None to date)
There is no required text.
Approximate Course Content
  • An introduction to functional programming. Static and dynamic typing. Strict and non-strict evaluation. Pure versus impure functional programming.
  • Some common functional programning languages.
  • Functions and partial functions.
  • Cartesian products. Disjoint unions. Currying.
  • Builtin types and literals. Tuples. Lists.
  • Declarations. Function declarations and function values.
  • Datatypes.
  • Exploiting laziness. Downsides to laziness.
  • Recursion, tail recursion, and accumulator arguments.
  • Monadic programming.
  • Space and time complexity for functional programs and data structures.
  • An introduction to logic programming.
  • Facts. Rules. Goals. Variables. Conjunctions. Horn Clauses.
  • The Unification algorithm.
  • Accumulator arguments.
  • Difference lists.
  • Cuts. Negation.
  • Arithmetic.
  • Debugging.
  1. I reserve the right to change the weight of any portion of this marking scheme. If changes are made, your grade will be calculated using the original weighting and the new weighting, and you will be given the higher of the two.
Home page Semesters Site Map
go back Fall 2015 go forward
2023-09 other links

CPSC 370 [Other years]
Prolog resources
David’s Schedule

UNBC Undergraduate Calendar