The course presents logic and logic programming for software development. This includes an overview of Horn clauses and their application in knowledge representation and reasoning as well as logic programming in Prolog and its semantics. The course presents algorithms over lists and trees as well as search algorithms in graphs, database programming, recursive programming, non-deterministic programming. Tools for arithmetic in Prolog, structure inspection, metalogic, control mechanisms for search, negation in Prolog, incomplete data structures, parsing by means of DCG. Various more efficient data structures, such as difference structures, are introduced. We show how techniques from functional programming fit in the framework of logic programming and can be expressed in the programming language Prolog. Finally, the course presents some AI applications, such as simple expert systems, and gives a short overview of current methodological trends.
In this course students will meet the theory and the basic design principles within logic programming while they in for example degree projects, can practise the methods.
Application: puzzles and games, parsing, compilation, formula manipulations, expert systems. Introduction to modifications and extensions of Prolog: parallel Prolog, equation and constraint solving, richer forms of clauses, modules, object orientation and Prolog.
In the project part of the course
- the student identifies and defines a problem-oriented project suited to illustrate the use of logic programming techniques
- the student formulates the project by means of the terminology of logic programming (implementation of a program or analysis of a program/system)
- the student carries out the project in a group or individually within the time frame
- the student presents her/his work with a short report and an oral presentation in a "mini workshop".