IB015/01: Thu 12:00–13:50 B130, A. Matoušek, M. Zahradníček
IB015/02: Tue 18:00–19:50 B130, A. Matoušek, M. Zahradníček
IB015/03: Thu 10:00–11:50 B130, O. Slámečka, T. Szaniszlo
IB015/04: Wed 14:00–15:50 B130, J. Major, T. Szaniszlo
IB015/05: Wed 16:00–17:50 B130, M. Bezek, J. Mrázek
IB015/06: Thu 18:00–19:50 B130, M. Jonáš, J. Mrázek
IB015/07: Thu 16:00–17:50 B130, M. Bezek, S. Melkovič
IB015/08: Thu 14:00–15:50 B130, D. Bielik
There are no special prerequisities apart from the basic math skills
(on the secondary-school level), and certain aptitude for abstract
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
Fields of study the course is directly associated with
there are 17 fields of study the course is directly associated with, display
On successful completion of the course, students will understand functional and logic programming paradigms. Programming languages enforcing declarative way of description of an algorithm bring on programming habits that the students will be able to use in practice later on when implementing large applications using even imperative languages.
After graduation students will:
- understand fundaments of functional programming,
- be able to decompose computational problems to individual functions and apply this ability for design and implementation of programs even in imperative programming languages,
- have basic knowledge of Haskell programming language
- be able to design and implement recursive functions,
- be able to work with recursively defined data structures.
Functional computational paradigm and Haskell
Functions in programming;
Lists, Types and Recursion
Functions of higher rank, Lambda functions
Accumulators, Type definitions, Input/Output
Reduction strategy, Infinite lists
Relation of recursion and induction, Recursive data types
Time complexity of computation, Type classes, Modules
Functional solutions od some problems
Logical computational paradigm and Prolog
Non-imperative programming in Prologu
Lists, Arithmetics, Tail rekursion in Prologu
Cuts, Input-Output, All solutions
An Introduction to Constraint Solving Programming
THOMPSON, Simon. Haskell :the craft of functional programming. Harlow: Addison-Wesley, 1996. xx, 500 s. ISBN 0-201-40357-9. info
LIPOVAČA, Miran. Learn You a Haskell for Great Good!: A Beginner's Guide. First Edition. San Francisco, CA, USA: No Starch Press, 2011. 400 pp. ISBN 978-1-59327-283-8. URLinfo
BLACKBURN, Patrick and Johan BOS. Learn Prolog Now! London: College Publications, 2016. Texts in Computing, volume 7. ISBN 1-904987-17-6. URLinfo
The course is organized as a series of lectures and homeworks, plus a set of voluntary exercises, where the students get practice with solving various problems.
The evaluation consists of a final written test that have two parts, obligatory and voluntary. To complete successfully with "E", the student have to pass the obligatory part of the final test and collect some minimal amount of points from the homeworks.
The final grade can be further improved by additional points from the homeworks and selected exercises during practicals.