Logo ČVUT
CZECH TECHNICAL UNIVERSITY IN PRAGUE
STUDY PLANS
2024/2025

Functional Programming

Login to KOS for course enrollment Display time-table
Code Completion Credits Range Language
B4B36FUP Z,ZK 6 2P+2C Czech
Relations:
It is not possible to register for the course B4B36FUP if the student is concurrently registered for or has already completed the course BE4B36FUP (mutually exclusive courses).
It is not possible to register for the course B4B36FUP if the student is concurrently registered for or has previously completed the course BE4B36FUP (mutually exclusive courses).
The requirement for course B4B36FUP can be fulfilled by substitution with the course BE4B36FUP.
Course guarantor:
Michal Pěchouček
Lecturer:
Rostislav Horčík
Tutor:
Rostislav Horčík, Jiří Němeček, Tomáš Votroubek, Matěj Zorek
Supervisor:
Department of Computer Science
Synopsis:

This course introduces students into 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 in artificial intelligence fields, such as agent

systems or symbolic machine learning.

This course is also part of the inter-university programme prg.ai Minor. It pools the best of AI education in Prague to provide students with a deeper and broader insight into the field of artificial intelligence. More information is available at https://prg.ai/minor.

Requirements:
Syllabus of lectures:

1. Introduction to declarative programming languages. Comparison to

classical imperative languages. Main principles and practical

applications of functional programming.

2. LISP: basic constructions of the language, atoms, lists, recursion

3. LISP: basic language idioms, atoms, lists, recursion

3. LISP: built-in functions, data structures, lambda abstraction

4. LISP: built-in high-order functions

5. LISP: infinite data structures, closures

6. Introduction to Lambda calculus, relation to functional programming

7. Equivalence of functional programming to Turing machine

8. Types in functional languages, their role and consequences to the

expressive power of the languages, typed Lambda calculus

9. Haskell: types, patterns, built-in functions, lambda abstraction

10. Haskell: lazy evaluation, partial function application

11. Haskell: monads

12. Automated optimizations in functional programming, formal

verification of functional programs

13. Functional programming and parallel computation

14. Functional constructs in popular programming languages and tools

Syllabus of tutorials:
Study Objective:
Study materials:

Hudak, Paul, and Joseph H. Fasel. „A gentle introduction to Haskell.“ ACM Sigplan Notices 27.5 (1992): 1-52.

Harvey, Brian, and Matthew Wright. Simply Scheme: introducing computer science. Mit Press, 1999.

Note:
Further information:
https://cw.fel.cvut.cz/wiki/courses/fup/start
Time-table for winter semester 2024/2025:
Time-table is not available yet
Time-table for summer semester 2024/2025:
06:00–08:0008:00–10:0010:00–12:0012:00–14:0014:00–16:0016:00–18:0018:00–20:0020:00–22:0022:00–24:00
Mon
Tue
Wed
Thu
roomKN:E-301
Horčík R.
12:45–14:15
(lecture parallel1)
Karlovo nám.
roomKN:E-328
Zorek M.
Votroubek T.

14:30–16:00
(lecture parallel1
parallel nr.101)

Karlovo nám.
roomKN:E-328
Němeček J.
16:15–17:45
(lecture parallel1
parallel nr.102)

Karlovo nám.
Fri
The course is a part of the following study plans:
Data valid to 2024-12-11
For updated information see http://bilakniha.cvut.cz/en/predmet4703006.html