Last modified: 2017-09-16
This is a course page of
David Casperson
You are here: homeSemestersFall 2017CPSC 370
Associate Professor
Computer Science
University of Northern British Columbia

CPSC 370 — Functional and Logic Programming — Fall 2017

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.

No news is good news

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 06
Thanksgiving Mon, Oct 09
Midterm I Wed, Oct 12 20%
Last Drop Day Thu, Oct 26
Midterm IIWen, Nov 16 20%
Mid Semester BreakThu, Nov 10
Remembrance DayMon, Nov 13
Course EvaluationFri, Nov 24
Last ClassFri, Dec 01
Homework from time to time 25%
Final Not yet known 35%
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
2017-09-09 Course Syllabus
2017-09-15 Casperson’s Schedule
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 2017 go forward
2017-09 other links

CPSC 370 [Other years]
David’s Schedule

UNBC Undergraduate Calendar