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:
-
What | When | Value |
First Class | Wed, Sep 07 | |
Thanksgiving | Mon, Oct 10 | |
Midterm I | Wed, Oct 12 | 20% |
Last Drop Day | Thu, Oct 27 | |
Midterm II | Mon, Nov 07 | 20% |
Mid Semester Break | Thu, Nov 10 |
Remembrance Day | Fri, Nov 11 | |
Course Evaluation | Fri, Nov 25
| |
Last Class | Fri, 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
-
- 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
-
-
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.