SubjectsSubjects(version: 849)
Course, academic year 2019/2020
   Login via CAS
Non-procedural Programming - NPRG005
Title in English: Neprocedurální programování
Guaranteed by: Department of Software and Computer Science Education (32-KSVI)
Faculty: Faculty of Mathematics and Physics
Actual: from 2015 to 2019
Semester: summer
E-Credits: 6
Hours per week, examination: summer s.:2/2 C+Ex [hours/week]
Capacity: unlimited
Min. number of students: unlimited
State of the course: taught
Language: Czech, English
Teaching methods: full-time
Additional information:
Guarantor: doc. RNDr. Tomáš Dvořák, CSc.
RNDr. Jan Hric
Class: Informatika Bc.
Informatika Mgr. - učitelské studium informatiky
Classification: Informatics > Programming
Annotation -
Last update: 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).
Course completion requirements -
Last update: 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.

Literature - Czech
Last update: doc. RNDr. Tomáš Dvořák, CSc. (24.03.2018)

Richard Bird, Thinking Functionally with Haskell, Cambridge University Press, 2014

Ivan Bratko, Prolog Programming for Artificial Intelligence, 4th ed., Addison-Wesley, 2011

William F. Clocksin, Christopher S. Mellish, Programming in Prolog: Using the ISO Standard, 5th ed., Springer, 2003

Graham Hutton, Programming in Haskell, 2nd ed., Cambridge University Press, 2016

Bryan O'Sullivan, John Goerzen, Don Stewart, Real World Haskell, O’Reilly, 2008,

Syllabus -
Last update: 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).

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.

Charles University | Information system of Charles University |