Functional and Logic Programming
- The course cannot be taken simultaneously with:
- Functional and Logic Programming (A4B33FLP)
- The course is a substitute for:
- Functional and Logic Programming (A4B33FLP)
- Jiří Vyskočil, Filip Železný (guarantor)
- Jiří Vyskočil, Filip Železný (guarantor), Radomír Černoch, Ivan Havel, Jan Jakubův, Viliam Lisý, Gustav Šourek
- Department of Computer Science and Engineering
This course introduces students into the techniques of functional programming in the LISP (or more precisely SCHEME) and HASKELL language and logic programming in the PROLOG language. Both languages are declarative in that the programmer symbolically describes the problem to be solved, rather than enumerating the exact sequence of actions to be taken. In PROLOG, one describes the problem by specifying properties of objects and relations thereamong through logic formulas. In LISP, the problem description takes the form of function definitions. Both languages have found significant applications in artificial intelligence fields, such as agent systems or symbolic machine learning.
Discrete Mathematics, Logic and Graphs,
- Syllabus of lectures:
1. Introduction to declarative programming languages. Comparison to classical imperative languages. Introduction to programming for artificial intelligence.
2. Lisp and Scheme: basic language idioms, atoms, lists, recursion.
3. Scheme: lambda abstraction, built-in functions, advanced data structures.
4. Scheme: relations between iterations and tail recursion optimisations guaranteed by the language standard, built-in high-order functions.
5. Scheme: state space search, applications in artificial intelligence.
6. Haskell: types, patterns, built-in functions, lambda abstraction.
7. Haskell: advanced properties of the language in comparison to Scheme.
8. Prolog: facts, rules and queries. Recursion. Query answering.
9. Functions, unification, list operations.
10. Prolog and logic: clauses, Herbrand base, interpretation, model, closed-world assumption, decidability.
11. Cut and negation. Extralogical operators, arithmetics.
12. Combinatorial search in Prolog.
13. Constraint logic programming.
14. Programming practices, debugging, built-in predicates.
- Syllabus of tutorials:
1. Scheme. First look at Scheme and its environment. Program debugging. Basic examples.
2. Recursion. Accumulator.
3. Lambda abstraction.
4. Tail recursion. High-order function.
6. Prolog as a database. Facts, rules, queries.
7. Recursion. Program debugging.
8. Unificaton. List operations.
9. List, cut and negation operations.
10. Search algorithms,
11. Search algorithms
12. Constraint logic programming
13. Constraint logic programming
- Study Objective:
Learn principles of functional and logic programming in the respective languages LISP and PROLOG.
- Study materials:
P. Flach: Simply Logical, John Wiley 1994
I. Bratko: Prolog programing for AI, Addison Wesley 2001 (3rd edition)
V. Mařík et al: Umělá
inteligence I, II, Academia 1993 (In Czech)
P. Jirků, P. Štěpánek, O. Štěpánková: Programování v Jazyku Prolog, SNTL 1991 (In Czech)
B. O'Sullivan, D. Stewart, and J. Goerzen: Real World Haskell, O'Reilly, November 2008, English, ISBN-10: 0596514980, ISBN-13: 978-0596514983
B. Harvey and M. Wright: Simply Scheme, Introducing Computer Science, MIT Press, 1999
- Further information:
- Time-table for winter semester 2016/2017:
- Time-table is not available yet
- Time-table for summer semester 2016/2017:
Mon Tue Fri ThuroomKN:E-127
Kotkova cvičebna K4roomKN:E-310
Lab K310 Linux
- The course is a part of the following study plans:
- Otevřená informatika - Počítačové systémy (compulsory course in the program)
- Otevřená informatika - Informatika a počítačové vědy (compulsory course in the program)
- Otevřená informatika - Softwarové systémy (compulsory course in the program)
- Cybernetics and Robotics - Robotics (elective course)
- Cybernetics and Robotics - Senzors and Instrumention (elective course)
- Cybernetics and Robotics - Systems and Control (elective course)
- Electrical Engineering, Power Engineering and Management - Applied Electrical Engineering (elective course)
- Electrical Engineering, Power Engineering and Management - Electrical Engineering and Management (elective course)
- Communications, Multimedia and Electronics - Communication Technology (elective course)
- Communications, Multimedia and Electronics - Multimedia Technology (elective course)
- Communications, Multimedia and Electronics - Applied Electronics (elective course)
- Communications, Multimedia and Electronics - Network and Information Technology (elective course)
- Open Informatics - Computer and Information Science (compulsory course of the specialization)
- Otevřená informatika - před rozřazením do oborů (compulsory course in the program)
- Electrical Engineering, Power Engineering and Management (elective course)
- Communications, Multimedia and Electronics (elective course)
- Cybernetics and Robotics (elective course)
- Communications, Multimedia and Electronics - Communications and Electronics (elective course)