2023-2024 / INFO0054-1

Functional programming


24h Th, 24h Pr, 20h Proj.

Number of credits

 Bachelor of Science (BSc) in Engineering5 crédits 
 Bachelor of Science (BSc) in Computer Science5 crédits 
 Master of Science (MSc) in Data Science5 crédits 
 Master of Science (MSc) in Data Science and Engineering5 crédits 
 Bachelor in mathematics6 crédits 
 Master in mathematics (120 ECTS)6 crédits 
 Master in mathematics (60 ECTS)6 crédits 


Christophe Debruyne

Language(s) of instruction

French language

Organisation and examination

Teaching in the first semester, review in January


Schedule online

Units courses prerequisite and corequisite

Prerequisite or corequisite units are presented within each program

Learning unit contents

General introduction to functional programming. Topics include (in alphabetical order):

  • Algebraic Data Types: Numbers, Tuples, Lists, ...
  • Equational Reasoning
  • Functional approaches to state, error handling, ...
  • Functors
  • Higher-order functions
  • Higher-order programming
  • Monads
  • Monoids
  • Recursion vs. iteration
  • Structural recursion
  • Type classes
Programming exercises: designing and implementing programs and using classical problems and algorithms.

The language Scala is used.

Learning outcomes of the learning unit

  • Writing good functional programs with adequate documentation.
  • Using the functional programming paradigm to solve various problems.
  • Determining when the functional approach is more convenient than imperatives.
This course contributes to the learning outcomes I.1, I.2, II.1, II.2, III.1, III.2, V.2, VI.2, VII.2 of the BSc in engineering.

Prerequisite knowledge and skills

Basic knowledge in programming and mathematics. Object-oriented programming.

Planned learning activities and teaching methods

Weekly theoretical lectures and exercise sessions. In groups of three, students will also realize a  programming project accompanied by a written report.

Mode of delivery (face to face, distance learning, hybrid learning)

Face-to-face course

Additional information:

Face-to-face course

Additional information:

The course is taught in French. The book and course material (including slides) are in English. The tests and exams will be made available in French as well. The course slides will contain a list of translations of the most important concepts.

The English material will facilitate international MSc students in their independent study. These students will also be provided with English versions of tests and exams.

Recommended or required readings

This course is based on: Michael Pilquist, Rúnar Bjarnason, and Paul Chiusano, Functional Programming in Scala, 2nd Edition, Manning Publications. 

Various (Web) articles are furthermore made available on eCampus.

Exam(s) in session

Any session

- In-person

written exam ( open-ended questions )

Out-of-session test(s)

Additional information:

Exam(s) in session

Any session

- In-person

written exam ( open-ended questions )

Written work / report

Out-of-session test(s)

Additional information:

Two tests, a project, and a written exam.

  • The first test counts toward 10% of the grade
  • The second test counts toward 10% of the grade
  • The project counts toward 30% of the grade
  • The written exam counts toward 50% of the grade
Second session:

  • The tests and the written exam are replaced by one written exam counting toward 70% of the total. Students whose weighted average for the tests and the exam is less than 10/20 must retake the exam.
  • Students who did not obtain at least 10/20 for their project may resubmit a revised version in August.
The project is a compulsory activity. A student who has not submitted a project will automatically obtain an absence grade (A) for the entire course.

Work placement(s)

Organisational remarks and main changes to the course

All organizational aspects will be communicated through eCampus.


  • Professor: Christophe Debruyne

Association of one or more MOOCs