York University- Department of Computer Science and Engineering

SC/CSE 3401 3.00 – Functional and Logic Programming


Course Director: Vida Movahedi

Lectures: Summer 2010, Wednesdays 19:00-22:00, CLH 110

Office Hours: Mondays, 12:00- 14:00, CSEB 2002


Announcements and Schedule


Course Description: from 2009/2010 Supplemental Calendar

This course covers functional and logic programming. Together with the students' background on procedural and object-oriented programming, the course allows them to compare the development of programs in these different types of languages.

"Functional programs work with values, not states. Their tools are expressions, not commands. How can assignments, arrays and loops be dispensed with? Does not the outside world have states? These questions pose real challenges. The functional programmer can exploit a wide range of techniques to solve problems." (Paulson, 1996)

"Based on predicate logic, it [logic programming] allows computing problems to be expressed in a completely `declarative' way, without giving instructions for how the problem is to be solved. An execution mechanism, like the one embodied in implementations of Prolog, can then be used to search efficiently and systematically for a solution of the problem." (Spivey, 1996)

Topics on functional programming may include: recursive, polymorphic and higher-order functions; recursive types and type inference. Topics on logic programming may include backtracking, resolution and unification.

Prerequisites: General prerequisites, MATH1090 3.0


Important Dates:

First Class

May 5, 2010


June 16, 2010


June 23, 2010

Drop date

July 5, 2010

Last class

July 28, 2010

Exam period

August 3- 13, 2010


Grading scheme:

Assignments & Lab

4 assignments, 1 Lab, 30% total

Midterm exam


Final exam




·         Common LISPcraft, Robert Wilensky, W.W. Norton & Co. , 1986

·         Programming in Prolog, W.F. Clocksin, C.S. Melish, Springer-Verlag, 5’ed, 2004

Online books:

·         Ulf Nilsson and Jan Maluszynski, Logic, Programming and Prolog (2ed) 

·         Peter Seibel, Practical Common Lisp, Apress


·         To get a passing final grade, you need to pass both parts of this course: Logic Programming AND Functional Programming.


·         Each student will have to produce an individual assignment (marked “0” otherwise).

·         Missed tests with good reason (normally medical, and well documented) will have their weight transferred to the final exam. There are no "make up" tests. Tests missed for no reason are deemed to have been written and are marked "0" (F).

·         Follow these links to familiarise yourselves with Senate's expectations:

Important course information for students

Academic Honesty

Academic Accommodation for Students with Disabilities,

Religious Accommodation

Repeating Passed or Failed Courses for Academic Credit