Last modified: 2020-06-30
This is a course page of
David Casperson
You are here: homeSemestersFall 2019CPSC 370
Associate Professor
Computer Science
University of Northern British Columbia

CPSC 370 — Functional and Logic Programming — Fall 2019

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.

2019-12-13
Grades sent to the Dean. Homework solutions posted to the Blackboard site.
2019-12-03
This page updated after the UNBC FA resumes teaching and Senate decides how to continue the semester.
2019-10-22
Final Exam date posted.
2019-10-18
More homework problems are posted.
2019-09-06
Lectures 1 and 2 posted to blackboard.
2019-08-22
No gnus are good gnus.
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.

Room and Hours
M W F 08:30–09:20 in 8-161.
Revised Grading Scheme1 and Dates:
WhatWhenValue
First ClassWed, Sep 04
Thanksgiving Mon, Oct 14
Midterm I Wed, Oct 09 20%
Last Drop Day Mon, Dec 9
Midterm IInot happening 20%
Remembrance DayMon, Nov 11
Course Evaluationnot happening
Last ClassFri, Dec 13
Homework from time to time 25%
Final not happening35%
Midterm II and Final marks will be calulated as dscribed in class.
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
2019-09-04 Course Syllabus
2019-09-18 Bookkeeper Code
References
There is no required text.
Blackboard
There is a blackboard site for this course at learn.unbc.ca
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
  • 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 2019 go forward
2022-12 other links

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

Semester Dates…