SubjectsSubjects(version: 821)
Course, academic year 2017/2018
   Login via CAS
Non-procedural Programming - NPRG005
English title: 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).
Literature - Czech
Last update: doc. RNDr. Pavel Töpfer, CSc. (05.02.2018)

Harold Abelson, Gerald Jay Sussman, Julie Sussman, Structure and Interpretation of Computer Programs, 2nd ed., McGraw-Hill, 1996

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 |