Functional Programming
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 Fri - The course is a part of the following study plans:
-
- Open Informatics - Computer Science 2016 (compulsory course of the specialization)
- Open Informatics - Software 2016 (compulsory course of the specialization)
- Open Informatics (compulsory course of the specialization)
- Open Informatics - Artificial Intelligence and Computer Science 2018 (compulsory course of the branch)
- Open Informatics - Software 2018 (compulsory course of the branch)
- prg.ai/minor-tech (elective course)