• ECTS

    5 credits

  • Training structure

    Faculty of Science

Description

This course aims to introduce the functional programming paradigm. First, we will discuss lambda calculus, which is the computational model on which functional languages are based. Then, we will move on to teaching a real functional programming language, namely OCaml.

The presentation of OCaml will mainly follow the following outline:
1. Basic types, definitions.
2. Function declarations.
3. Basic data structures (tuples, lists).
4. Advanced data structures (sum types, records).
5. Exceptions.
6. Higher-order functions, iterators on lists.

If time permits, we will also look at OCaml's module system, one of the main motivations for which is to group related definitions together, but which also allows for reusability through the system of parameterized modules (functors).

Read more

Objectives

The objective of this course is to explore a functional programming language. Beyond the language itself, we will also look at certain properties of the fundamentals of programming languages, such as the distinction between syntax and semantics, the importance of giving the language formal semantics, and the need for strong typing (i.e., correct with respect to semantics). This course will serve as a basis for other courses, which may make extensive use of functional languages, such as courses on propositional logic, first-order logic, or verification.

Read more

Teaching hours

  • Functional Programming - TutorialTutorials33 hours
  • Functional Programming - CMLecture12 hours