outline |
---|
deep |
This course introduces students to the techniques of functional programming, exploring their advantages, and practical applications. Functional programming takes a declarative approach, where the programmer describes the problem symbolically rather than through explicit step-by-step instructions. This paradigm focuses on the essence of problems, and enables compact implementations of complex algorithms. Functional programming has notable advantages for parallelization and automated verification of algorithms. Useful functional programming concepts are increasingly often introduced to standard programming languages. Due to its symbolic nature, functional programming has been heavily used in artificial intelligence, particularly in agent systems and symbolic machine learning.
The course consists of weekly lectures and labs.
This course explores:
- Racket which features a simple syntax that aligns with λ-calculus, is dynamically typed, supports mutable data, and can treat code as data, which makes it easy to write interpreters;
-
$\lambda$ -calculus as the theoretical foundation of functional programming; - and Haskell a pure functional language with static typing, a rich type system, and a design that strictly separates its pure core from its mutable shell.
You will receive points for solving Homework Assignments and the final Practical and Oral Exams.
Part | Points |
---|---|
Homework Assignments | 50 |
Practical Exam | 30 |
(optional) Oral Exam | 20 |
Our grading scale is as follows:
F | E | D | C | B | A |
---|---|---|---|---|---|
0-49 | 50-59 | 60-69 | 70-79 | 80-89 | 90-100 |
Name | Room | Role | |
---|---|---|---|
Rostislav Horčík | xhorcik@fel.cvut.cz | KN:E-322 | Lecturer |
Tomáš Votroubek | votroto1@fel.cvut.cz | Lecturer & Instructor | |
Jiří Němeček | nemecj38@fel.cvut.cz | Instructor | |
Matěj Zorek | zorekmat@fel.cvut.cz | Instructor | |
Shenyuan Ma | ma.shenyuan@fel.cvut.cz | Instructor |
Consulting hours are not explicitly scheduled; please contact us via email to make an appointment.
If you struggle with an exercise or an assignment, feel free to contact your tutor via email. For questions which could help others, we recommend posting in the course discussion forum, where we will prioritize responses. There are also online communities where you can get in touch with your peers:
- The Faculty Discord is primarily in Czech. You can select which course's channels you want to see in
#volba-předmětů
(check#fup
) after authenticating with a faculty account. - The Functional Programming Discord is primarily in English, and includes channels not only for Racket (
#racket
) and Haskell (#haskell-beginners
,#haskell-beginners-more
,#haskell
,#haskell-tooling
), but also for all kinds of FP and math topics.
If you prefer to self-study, have a look at our list of extra resources.