Poslední úprava: doc. RNDr. Pavel Töpfer, CSc. (05.02.2018)
Předmět je věnován principům logického a funkcionálního programování, které jsou vyloženy prostřednictvím
programovacích jazyků Prolog a Haskell. Funkcionální aspekty multiparadigmatických jazyků jsou ilustrovány na
příkladu jazyka Python.
Poslední úprava: T_KSVI (18.04.2012)
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).
Podmínky zakončení předmětu -
Poslední úprava: doc. RNDr. Tomáš Dvořák, CSc. (20.02.2020)
Předmět je zakončen zápočtem a zkouškou. K získání zápočtu je vyžadováno
vypracování zápočtového programu včetně uživatelské a vývojové dokumentace na téma, zadané cvičícím,
získání stanoveného počtu bodů z řešení problémů, zadávaných ve formě domácích úloh či testů na cvičeních.
Zkouška je složena z části písemné a ústní. Písemná část
probíhá na PC v počítačové laboratoři
je složena z úloh z logického i funkcionálního programování
témata úloh odpovídají sylabu předmětu i látce, probrané na cvičení.
Nesplnění písemné části znamená, že celá zkouška je hodnocena známkou nevyhověl(a).
Požadavky ústní části zkoušky odpovídají sylabu předmětu v rozsahu, v němž byl prezentován na přednášce.
Poslední úprava: doc. RNDr. Tomáš Dvořák, CSc. (24.03.2018)
The course is concluded with a credit and a final exam. The credit is awarded upon successfully completing the following requirements:
submitting a programming project including the user and developer documentation on a topic assigned by the instructor
obtaining the required score from homework assignments or tests assigned in tutorials
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.
Literatura -
Poslední úprava: doc. RNDr. Tomáš Dvořák, CSc. (12.02.2022)
Richard Bird, Jeremy Gibbons, Algorithm Design with Haskell, Cambridge University Press, 2020
Ivan Bratko, Prolog Programming for Artificial Intelligence, 4th ed., Pearson, 2012
William F. Clocksin, Christopher S. Mellish, Programming in Prolog: Using the ISO Standard, 5th ed., Springer, 2003
Michael Genesereth, Vinay K. Chaudhri, Introduction to Logic Programming, Morgan & Claypool Publishers, 2020
Graham Hutton, Programming in Haskell, 2nd ed., Cambridge University Press, 2016
Hector J. Levesque, Thinking as Computation: A First Course, The MIT Press, 2017
Miran Lipovaca, Learn You a Haskell for Great Good!: A Beginner's Guide, No Starch Press, 2011
Poslední úprava: doc. RNDr. Tomáš Dvořák, CSc. (12.02.2022)
Richard Bird, Jeremy Gibbons, Algorithm Design with Haskell, Cambridge University Press, 2020
Ivan Bratko, Prolog Programming for Artificial Intelligence, 4th ed., Pearson, 2012
William F. Clocksin, Christopher S. Mellish, Programming in Prolog: Using the ISO Standard, 5th ed., Springer, 2003
Michael Genesereth, Vinay K. Chaudhri, Introduction to Logic Programming, Morgan & Claypool Publishers, 2020
Graham Hutton, Programming in Haskell, 2nd ed., Cambridge University Press, 2016
Hector J. Levesque, Thinking as Computation: A First Course, The MIT Press, 2017
Miran Lipovaca, Learn You a Haskell for Great Good!: A Beginner's Guide, No Starch Press, 2011
Sylabus -
Poslední úprava: doc. RNDr. Pavel Töpfer, CSc. (12.02.2018)
Logické programování v jazyce Prolog.
Tvar programu a jeho interpretace, unifikace, backtracking.
Deklarativní a procedurální sémantika programu.
Práce se seznamy a s rekurzivními datovými strukturami.
Standardní predikáty a jejich použití. Aritmetika. Definice operátorů.
Řez a negace. Efektivita programů v Prologu, neúplně definované datové struktury.
Aplikace logického programování v umělé inteligenci.
Funkcionální programování, základy lambda kalkulu.
Tvar programu v jazyce Haskell. Dvojrozměrná syntax, líné vyhodnocení.
Definice funkce, rekurze, porovnávání se vzorem. Stručné seznamy.
Definice typů a datových struktur, polymorfismus, typové třídy a instance.
Funkce vyšších řádů. Nekonečné datové struktury. Monády, vstup a výstup.
Funkcionální aspekty multiparadigmatických jazyků,
funkcionální rysy jazyka Python.
Poslední úprava: doc. RNDr. Tomáš Dvořák, CSc. (09.09.2011)
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).