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

CPSC 370 — Functional and Logic Programming — Fall 2018

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.

2018-11-30
Homework due dates adjusted; Question 9 corrected.
2018-11-05
Homework due dates adjusted.
Notes on monads posted.
2018-10-23
Final examination date posted.
2018-10-09
Links updated. Sets and Currying worksheet link added.
2018-07-13
No news is good news
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 11:30-12:20 in 5-159.
Grading Scheme1 and Dates:
WhatWhenValue
First ClassWed, Sep 05
Thanksgiving Mon, Oct 08
Midterm I Fri, Oct 12 20%
Last Drop Day Thu, Oct 25
Midterm IIFri, Nov 16 20%
Remembrance DayMon, Nov 12
Course EvaluationMon, Nov 26
Last ClassFri, Nov 30
Homework from time to time 25%
Final
Mon, Dec 10
(5-155)
18:00–21:00
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
????-??-?? Course Syllabus
????-??-?? Casperson’s Schedule
2018-09-17 Sets and Currying
2018-09-17 Notes on mathematical monads and Haskell
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 2018 go forward
2022-12 other links

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

UNBC Undergraduate Calendar