|
|
|
||
An introduction to the principles of logical and functional programming, explained in terms of programming
languages Prolog and Haskell. The course also provides a basic knowledge of LISP (Scheme).
Last update: T_KSVI (18.04.2012)
|
|
||
The course is concluded with a credit and a final exam. The credit is awarded upon successfully completing the following requirements:
The final exam consists of a written and an oral part. The grade is based on results of both parts. Problems assigned in the written part correspond to the syllabus and the material covered in tutorials. Questions posed in the oral part explore the topics included in the syllabus to the extent that these topics are covered in lectures. Last update: Dvořák Tomáš, doc. RNDr., CSc. (24.03.2018)
|
|
||
Richard Bird, Jeremy Gibbons, Algorithm Design with Haskell, Cambridge University Press, 2020
Patrick Blackburn, Johan Bos, Kristina Striegnitz, Learn Prolog Now!, College Publications, 2006
Ivan Bratko, Prolog Programming for Artificial Intelligence, 4th ed., Pearson, 2012
Graham Hutton, Programming in Haskell, 2nd ed., Cambridge University Press, 2016
Miran Lipovača, Learn You a Haskell for Great Good!: A Beginner's Guide, No Starch Press, 2011
Rebecca Skinner, Effective Haskell: Solving Real-World Problems with Strongly Typed Functional Programming, Pragmatic Bookshelf, 2023
David S. Warren et al., Prolog: The Next 50 Years, Lecture Notes in Artificial Intelligence 13900, Springer, 2023 Last update: Dvořák Tomáš, doc. RNDr., CSc. (17.02.2024)
|
|
||
1. Syntax of Prolog programs and their interpretation, unification, backtracking. Declarative and operational semantics of program.
2. Lists and recursive data structures. Built-in predicates and their uses.
3. Arithmetic in Prolog. Input and output. Definition of operators.
4. Cut and negation.
5. Efficiency of Prolog programs, incomplete data structures.
6. Functional programming, basics of LISP (Scheme).
7. Haskell: basic syntax, 2D layout, lazy evaluation.
8. Function definition, recursion, pattern matching. List comprehensions.
9. User-defined types and data structures, polymorphism, type classes.
10. Higher-order functions. Infinite data structures.
11. Input and output, monads. Last update: Dvořák Tomáš, doc. RNDr., CSc. (09.09.2011)
|