York University- Department of Computer Science and Engineering

SC/CSE 3401 3.00 – Functional and Logic Programming


Course Director: Vida Movahedi


Back to Course Page

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

Jan. 4, 2012

Reading week

Feb. 18-24, 2012

Test 1

Feb. 27, 2012

Drop date

March 9, 2012

Last class

April 2, 2012

Exam period

April 4- 20, 2012


Grading scheme:

Assignments & Lab

4 assignments, 40% total

Midterm exam (Test 1)


Final exam (Test 2)




·         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