Subject: Logical programming
Course: Logical programming
ECTS credits: 3
Language: Croatian
Duration: 1 semester
Status: compulsory
Method of teaching: 2 lecture hours and 2 hours of practical classes
Prerequisite: none
Assessment: written and oral exam

Course description:
Basic logical programming in predicate calculus. Predicate calculus as a language, syntax, clauses (target, programming, Horn), sentences (simple and complex, translating complex sentences into simple sentences). Substitution. Unification. Horn and standard form. Resolution. The application of the resolution rule on proposition calculus and predicate calculus. 2. Prolog and predicate logic: The specific quality of the Prolog with regards to predicate calculus. The resolution rule in the Prolog system. 3. Prolog: Syntax and semantics. Database. Calculating answers. Recursion. Data structure. Binary tree and basic operations with the binary tree. Back trace and cut. Standard and system predicates. Handling files. Input-output predicates. Practical classes use examples that follow the lectures.

Course objectives:
The students need to familiarize themselves with the theory and techniques of logic programming. Practical work will enable the student to master the techniques of logical programming. Programming language Prolog will be used for this purpose.

Quality check and success of the course: Quality check and success of the course will be done by combining internal and external evaluation. Internal evaluation will be done by teachers and students using survey method at the end of semester. The external evaluation will be done by colleagues attending the course, by monitoring and assessment of the course.

Reading list:
1. Čubrilo, M.: Matematička logika za ekspertne sisteme, Informator, Zagreb, 1989.
2. Radovan, M.: Programiranje u prologu, Informator, Zagreb, 1987.
3. Spencer-Smith, R.: Logic and Prolog, Harvester Wheatsheaf, 1991.