• ECTS

    5 credits

  • Component

    Faculty of Science

Description

This course aims at introducing the functional programming paradigm. First, we will talk about lambda-calculus, which is the computational model on which functional languages are based. Then, we will teach a real functional programming language, namely OCaml.

The presentation of OCaml will mainly follow the following plan:
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 the module system of OCaml, one of the main motivations of which is to group related definitions, but which also allows to introduce reusability through the system of parameterized modules (functors).

Read more

Objectives

The objective of this course is to see a functional programming language. Beyond the language itself, we will also be interested in some properties of the foundation of programming languages such as the distinction between syntax and semantics, the importance of giving a formal semantics to the language, or the necessity to have a strong type (i.e. correct with respect to semantics). This course will serve as a basis for other courses, which may use functional languages in a privileged way, such as the courses on propositional logic, first order logic or verification.

Read more