Equational Programming 2017-2018


Equational Programming (course code 401011) is a course in the minor Deep Programming about the foundations of functional programming.
The theoretical part of the course is concerned with lambda calculus and equational specifications, and possibly also the basics of term rewriting.
The practical part consists of exercises in the functional programming language Haskell.

Prerequisites: the course Logic and Modelling.
Possible follow-up courses: Term Rewriting Systems (master course) and Logical Verification (master course).


The course is in 2017-2018 taught in period 2, that is, in weeks 44--50.
We have lectures on Mondays and Thursdays, and exercise classes on Tuesdays and Fridays.
On Tuesday afternoons we have a Haskell lab.
Please see the course schedule.

Practical part: functional programming in Haskell

There are three set of obligatory programming assignments.
The grades for the programming assignments contibute to the final grade for the course.
The information concerning the practical part of Equational Programming is available via this page.

Theoretical part: lambda-calculus and equational specifications

There are four sets of homework exercises. The information concerning the theoretical part of Equational Programming is available via this page.


At the exam, the typing rules of simply typed lambda-calculus and the derivation rules for equational logic (Definition 3.2) will be given.
The construction of a term model won't be asked.

Final grade

For both parts the grade should be at least 5.5 in order to pass the course.


Mail f.van.raamsdonk @ vu.nl.
Last update December 2017.