Last modified: 2022-07-30
This is a course page of
David Casperson
You are here: homeSemestersWinter 2022CPSC 370
Associate Professor
Computer Science
University of Northern British Columbia

Quick Links: Home Winter 2022 Schedule Pending Homework Homework Due

CPSC 370 — Functional and Logic Programming — Winter 2022

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.

2022-04-08
All homework now due.
2022-03-26
More homework supplied
2022-03-24
Final exam information added.
2022-03-04
Midterm 2 postponed until W 2022-03-16
2022-01-02
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 13:30-14:20 in 5-171.
Grading Scheme1:
WhatValue
Midterm I20%
Midterm II20%
Homework25%
Final35%
Course Dates:
WhatWhen
First Class 2022-01-05 Wednesday
Good Friday 2022-04-15 Friday
Easter Monday 2022-04-18 Monday
Midterm I 2022-02-09 Wednesday
Last Drop Day 2022-02-24 Thursday
Midterm II2022-03-16 Wednesday
Last Class2022-04-07
Homework from time to time
Final
2022-04-19 Tue 18:00–21:00 in 5-175
References
There is no required text, but reading Learn You a Haskell for Great Good is strongly recommended. See the Referenes link for where to find this book, and other useful information.
Programming Assigments
There will be approximately weekly programming assignments during the semester. Programming languages include Prolog and Haskell.

See the homework link on the menu-bar for information on what homework has been assigned.

See the Programming Homework Submissions section under the Policies link on the menu-bar for information on how to submit homework, and late policies et cetera.

Handouts
Handout Dates
2022-03-06 Course Syllabus
2022-01-07 Haskell Syntax Cheat-Sheet
2022-01-07 Functions self check
(not yet) Sets and Currying
(updated) Notes on mathematical monads and Haskell
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 Winter 2022 go forward
2022-12 other links

Winter 2022
David’s Schedule

CPSC related resources
Java related information
UML-related information
CPSC 101 [All years]
CPSC 370 [Other years]
References
Homework
Dates
Policies
Resources