General Course Information
Course Description
When you write programs in Java or C you tell the computer the exact sequence of steps required to compute the output from the input. What if, instead, you could only describe what the input and the output should look like, and the computer itself would figure out how to do the actual computation ? This is what declarative programming is all about.
In this course you will get acquainted with two styles of declarative programming: functional programming and logic programming. In the first part of the course you will get a taste of logic programming by learning some of the programming language called Prolog. To prepare for this part please review your MATH 1090 notes on propositional and first-order logic (see also Prerequisites section below). In the second part of the course you will get introduced to functional programming by learning some of the programming language called OCaml.
Prerequisites
General prerequisites, plus MATH 1090 "Intro to Logic for Computer Science".
MATH 1090 is particularly important for the logic programming part of this course -- so, before the first lecture, please review the definitions and notation of propositional and first-order predicate logic.
Lectures Time and Place
Lectures will take place on Tuesdays and Thursdays, 5:30 - 7:00 pm, in CLH H
Instructor and Office Hours
Your instructor for this course is Anton Belov,
email , office CSEB 2052b.
Office hours will take place Tuesdays and Thursdays after the class (7:00 pm - 8:00 pm) in CSEB 2052b. If you can't make the office hours, send me an email to make an appointment, I will try to accommodate you. You can also send questions via email (please start the subject line with "[3401]").
Teaching Assistant and TA Office Hours
To be determined.
Course Materials
There is no single textbook for this course. Most of the material covered in this course is discussed in many in-print and on-line resources -- see Resources section of this website for a comprehensive listing. Resources section also provides information on the software we will use in this course.
Some of the lecture notes, and the source code of the examples covered in the class will be posted in the Lecture Materials section of this website.
Marking Scheme (updated)
10% | logic programming: paper-and-pencil assignment. |
20% | logic programming: project. |
20% | logic programming: test (during midterms). |
15% | functional programming: assignment. |
35% | functional programming: take-home exam (during exams). |
The mark for the logic quiz from September 9th is 3% of the final grade, applied at your discretion, that is, if your final grade is less than your logic quiz grade, I will use your logic quiz grade as 3% of the final (unless you don't want me to ;-)).