Subject description - B4B36FUP

Summary of Study | Summary of Branches | All Subject Groups | All Subjects | List of Roles | Explanatory Notes               Instructions
B4B36FUP Functional Programming
Roles:PO, PZ Extent of teaching:2P+2C
Department:13136 Language of teaching:CS
Guarantors:Pěchouček M. Completion:Z,ZK
Lecturers:Horčík R., Lisý V. Credits:6
Tutors:Horčík R., Lisý V., Prágr M. Semester:L


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.

Course outlines:

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

Exercises outline:


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.



Subject is included into these academic programs:

Program Branch Role Recommended semester
BPOI3_2018 Software PZ 4
BPOI3_2016 Software PO 4
BPOI1_2018 Artificial Intelligence and Computer Science PZ 4
BPOI1_2016 Computer and Information Science PO 4
BPOI_BO_2016 Common courses PO 4

Page updated 9.4.2021 19:52:33, semester: Z/2020-1, L/2021-2, L/2020-1, Z,L/2022-3, Z/2021-2, Send comments about the content to the Administrators of the Academic Programs Proposal and Realization: I. Halaška (K336), J. Novák (K336)