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

CPSC 370 — Functional and Logic Programming — Fall 2016

This page summarises information about CPSC 370.

Prerequisites
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.

2016-11-12
Course evaluation date changed because of Senate.
2016-11-06
Minor corrections in the due homework.
2016-10-24
The final examination date has been posted. It is Tuesday, 13 December at 6pm in Room 5-122.
2016-10-03
There are two classes today (Mon, Oct 3), one on Wednesday (Oct 5) and none on Friday (Oct 7).
Next Monday (Oct 10) is Thanksgiving.
The following Wednesday (Oct 12) is the first midterm.
Accommodations

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:
WhatWhenValue
First ClassWed, Sep 07
Thanksgiving Mon, Oct 10
Midterm I Wed, Oct 12 20%
Last Drop Day Thu, Oct 27
Midterm IIMon, Nov 07 20%
Mid Semester BreakThu, Nov 10
Remembrance DayFri, Nov 11
Course EvaluationFri, Nov 25
Last ClassFri, Dec 02
Homework from time to time 25%
Final Tue, Dec 13
6pm–9pm
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
Times can be found on David Casperson’s Schedule also linked on the right.
Handouts
Handout Dates
2016-09-07 Course Syllabus
References
There is no required text.
Blackboard
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.
Haskell.
  • 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.
Scheme
  • Space and time complexity for functional programs and data structures.
Prolog.
  • An introduction to logic programming.
  • Facts. Rules. Goals. Variables. Conjunctions. Horn Clauses.
  • The Unification algorithm.
  • Accumulator arguments.
  • Difference lists.
  • Cuts. Negation.
  • Arithmetic.
  • Debugging.
Links
Notes
  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 2016 go forward
2017-11 other links

CPSC 320 [Other years]
CPSC 370 [Other years]
References
Homework
Dates
Policies
Resources
David’s Schedule

UNBC Undergraduate Calendar