Functional Programming 1

For additional information, please visit the site for Exchange students
or contact

Teaching methods

  • 32 hours computer course
  • 16 hours lecture
  • 8 hours problem session
  • 28 hours individual study period

Extra information teaching methods

The lectures present the theoretical background of new topics. In the assignments, the student actively engages in solving problems using functional programming. In a seminar assignments are discussed. We use the state-of-the-art functional programming languages Clean and Haskell.

It is obligatory to participate in the assignments. Feedback on part of these assignments is provided by students. This is not by means of a result value.


Basic imperative programming and object-oriented programming (the regular preliminary programming courses of the computer science curriculum) or equivalent material.


After following this course, you can:
  • Solve problems in a functional way
  • Choose and develop suitable data structures for given problems
  • Use and deploy modern programming language concepts such as higher-order functions, polymorphism, overloading, recursive data structures
  • Reason about functional programs
  • Give formal correctness proofs of simple functional programs.


Functional programming is a style of programming that is based on the mathematical concept of "functions". By using (higher-order) pure functions, algebraic types, and a strong but flexible typing system, an expressive programming language is available to you to express advanced programs concisely and clearly. The well-studied mathematical foundations (lambda-calculus and term-rewriting) allow you to reason about functional programs using relatively simple mathematical techniques such as uniform substitution and induction. 

Functional languages play a prominent role in computer science research regarding development of novel programming language concepts. Due to their expressive power they are increasingly used for developing complex software systems.


expressions; functions; type systems; polymorphism; recursion; rewriting; basic types; algebraic data types; overloading; tuples; records; lists; list comprehensions; lambda abstraction; higher-order functions; evaluation strategies; recursive data structures; correctness proofs.


Verplicht practicum. Schriftelijk eindtentamen is gesloten boek.


Extra information

This course will be taught in English.

Course ID
3 ec
second quarter
Show schedule
SWS / PersoonlijkRooster


Included in