Skip to content

Organization

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.

The course consists of weekly lectures and labs which will be published as we go along the course.

Course outline

  • Lisp/Scheme/Racket
    • simple syntax (directly matches -calculus)
    • dynamically typed
    • code-as-data (easy to write interpreters, ...)
    • allows mutable data
  • -calculus
  • Haskell
    • pure functional language
    • statically typed
    • rich type system
    • strictly separates the pure core from the mutable shell

Homework

You will have to solve four homework assignments (for 50 points in total):

  • 2 assignments in Racket
  • 2 assignments in Haskell More on the details of the homework here.

Exam

The final programming exam has 30 points. Final, optional oral exam for 20 points. More on the details of the exam here.

Grading

The grading is the standard grading scale:

ABCDEF
91-10081-9071-8061-7051-600-50

Teachers

NameConsulting hoursE-mailRoomRole
Rostislav Horčíkappointment by emailxhorcik@fel.cvut.czKN:E-322Lecturer
Niklas Heimappointment by emailheimnikl@fel.cvut.czKN:E-406Lecturer & Instructor
Tomáš Votroubekappointment by emailvotroto1@fel.cvut.czInstructor
Matěj Zorekappointment by emailzorekmat@fel.cvut.czInstructor
Jiří Němečekappointment by emailnemecj38@fel.cvut.czInstructor

Other resources