• ECTS

    5 credits

  • Training Structure

    College of Sciences

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 OCaml presentation will mainly follow this 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, list iterators.

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

Read more

Objectives

The goal of this course is to explore a functional programming language. Beyond the language itself, we will also examine certain properties from the field of programming language theory, such as the distinction between syntax and semantics, the importance of providing a formal semantics for the language, and the necessity of having a strongly typed language (i.e., one that is semantically correct). This course will serve as a foundation for other course units, which may make primary use of functional languages, such as those covering propositional logic, first-order logic, or verification.

Read more

Class Hours

  • Functional Programming - TutorialTutorials33 hours
  • Functional Programming - LectureLecture12 hours