FUP – Functional Programming

We have moved all the course materials to a new webpage which includes lecture slides, lecture notes, labs, and exams in one place. It will let you conveniently search through all the course materials for FUP. You can find it here.


This course introduces students to the techniques of functional programming, the advantages and disadvantages of this programming paradigm, and its use in practice. This approach is declarative in the sense that the programmer symbolically describes the problem to be solved rather than specifying the exact sequence of operations required to solve it. It allows focusing on the essence of the solved problem and implementing even more complex algorithms compactly. Functional programming has notable advantages for parallelization and automated verification of algorithms, and the most useful functional programming concepts are increasingly often introduced to standard programming languages. Because of the focus of functional programming on symbols rather than numbers, functional programming has been heavily used in artificial intelligence fields, such as agent systems or symbolic machine learning.


Weekly lectures and labs.

Homework assignments 50 points

  • 2 assignments in Racket
  • 2 assignments in Haskell

At least 1 point from each assignment is necessary to pass, and at least 25 points altogether.

Final programming exam for 30 points. At least 16 points is necessary to pass. The programming exam consists of 2 Racket assignments and 2 Haskell assignments, which you have to finish in 3 hours. One Racket and one Haskell assignment are actually the same but implemented in both programming languages.

Final theoretical oral exam for 20 points. It is not obligatory if you have enough points to get at least the E grade.

The grading is the standard one, i.e.,



In order to come to the exam, the student should have fulfilled the conditions for passing the labs. It means having at least 1 point from each homework assignment and at least 25 points in total.

Please make sure You know your lab password. You can change it here.

The exam will consist of solving two of the tasks that are published here - without access to their solutions. We suggest not looking at the text of the assignments before you have time to attempt to solve it. You should be able to solve each of them in roughly 90 minutes to get a perfect score in the exam.


Consulting hours E-mail Room Role
Rostislav Horčík appointment by email xhorcik@fel.cvut.cz KN:E-322 Lecturer
Niklas Heim appointment by email niklas.heim@aic.fel.cvut.cz Lecturer & Instructor
Tomáš Votroubek appointment by email votroto1@fel.cvut.cz Instructor
Matěj Zorek appointment by email zorekmat@fel.cvut.cz Instructor
Jiří Němeček appointment by email nemecj38@fel.cvut.cz Instructor
courses/fup/start.txt · Last modified: 2024/02/20 19:52 by heimnikl