456-0310/01 – Functional and Logic Programming (FLP)
Gurantor department | Department of Computer Science | Credits | 6 |
Subject guarantor | prof. RNDr. Marie Duží, CSc. | Subject version guarantor | prof. RNDr. Marie Duží, CSc. |
Study level | undergraduate or graduate | Requirement | Optional |
Year | 1 | Semester | summer |
| | Study language | Czech |
Year of introduction | 2003/2004 | Year of cancellation | 2009/2010 |
Intended for the faculties | FEI | Intended for study types | Follow-up Master |
Subject aims expressed by acquired skills and competences
The course should provide both theoretical and practial knowledge of declarative programming languages. The students will deal with programming techniques based on recursive data structures and general recursive specification. Both logic programming and functional programming is dealt with.
Logic programming in Prolog and functional programming in Haskell.
Teaching methods
Lectures
Seminars
Individual consultations
Tutorials
Project work
Summary
The course is divided into two independent parts. The part devoted to the functional programming will concern mainly to methods based on the lambda calculus. The second part is oriented to logic programming and programming techniques using the Prolog language.
Compulsory literature:
Programming language Haskell: http://www.haskell.org or http://learnyouahaskell.com/
Programming language Prolog: http://www.swi.psy.uva.nl/projects/SWI-Prolog/
Recommended literature:
Programming language Haskell: http://book.realworldhaskell.org/read/
Programming language Prolog: http://www.csupomona.edu/~jrfisher/www/prolog_tutorial/contents.html
Additional study materials
Way of continuous check of knowledge in the course of semester
Podmínky udělení zápočtu:
Vypracování dvou samostatných projektů, každý maximálně 15 bodů. Zápočtový test max. 15 bodů. Minimální počet bodů pro získání zápočtu = 25
E-learning
Other requirements
Prerequisities
Subject has no prerequisities.
Co-requisities
Subject has no co-requisities.
Subject syllabus:
Lectures:
Declarative programming languages, functional and logic programming fundamentals.
Lambda calculus, lambda conversion, fixed-point operator, recursive functions.
Functional data representation; logical values, tuples, collection, numbers.
Data types of the Haskell language, the definition of user-defined data types, abstraction.
Definition of functions, unification patterns, lazy evaluation.
List data structures, using recursion definition, infinite lists.
Proving in functional languages, structural induction.
Imperative features of functional programs, monads, computation-state representation, input-output, exceptions.
Application of functional programming - denotation semantics.
Aplication of functional programming - analysis of a text.
Principles of logic programming; substitution, resolution, unification.
Prolog data types; lists, tuples. User-defined data types, trees.
Basic programming techniques of logic programming. Search and ordering.
Meta-programming, work with clauses.
Programming with restrictions, language like CLP.
Projects:
Projekt No 1: Functional specification of the solution of a given problem, and its implementation in the Haskell language.
Projekt No 2: Specification of the solution of a given problem using the clausal form of predicate logic, and its implementation in Prolog.
Projekt 2: Specifikace řešení zadaného problému ve formě klauzulí predikátové logiky a jeho implementace v jazyce Prolog.
Conditions for subject completion
Occurrence in study plans
Occurrence in special blocks
Assessment of instruction