# Logic Programming (Programmazione Logica) 2008-2009

## Description

This course is an introduction to logic programming. Topics that will be covered are unification, proof search, recursion, tail-recursion, the occurs-check, the closed world assumption, backtracking, the cut, and definite clause grammars. The theory will be illustrated using the programming language Prolog. As programming is something which cannot be learned without actually doing it, all course sessions will have a lecture part and a practical part.

The aim of the course is to give the student both theoretical background and hands-on experience in logic programming. The practical part will show the student how straightforward it is to use Prolog to tackle problems in AI and Natural Language Processing. After the course, the student will be familiar with the most important concepts of logic programming, will have mastered techniques to write (simple) Prolog programs, and has an idea to which type of problems logic programming can be applied.

True - Prolog is a relatively old programming language. But despite the popularity of more trendy languages such as Java, it is still used in industrial applications. Did you know, for example, that Prolog is used to program a spoken dialogue system used by NASA astronauts in the International Space Station?

## Time Table

Lectures are every Friday from 14:00-18:00 in the Aula Seminari (via Salaria 113, terzo piano).
The next lecture is on Nov 21.

## Teaching Material

We will use the following course materials:

Learn Prolog Now! can be ordered via (for example)

amazon.co.uk. SWI Prolog is freely available software and runs on linux, mac and windows.

## Slides

Lecture 1 (Oct 10):

**Facts, Rules and Queries** LPN1.ppt
Lecture 2 (Oct 10):

**Unification and Proof Search** LPN2.ppt
Lecture 3 (Oct 17):

**Recursion** LPN3.ppt
Lecture 4 (Oct 24):

**Lists** LPN4.ppt
Lecture 5 (Nov 7) :

**Arithmetic** LPN5.ppt
Lecture 6 (Nov 7):

**More Lists** LPN6.ppt
Lecture 7 (Nov 21):

**Definite Clause Grammars** LPN7.ppt
Lecture 8 (Nov 21):

**More Definite Clause Grammars** LPN8.ppt
Lecture 9 (Nov 28):

**A Closer Look at Terms** LPN9.ppt
Lecture 10 (Nov 28):

**Cuts and Negation** LPN10.ppt
Lecture 11 (Dec 5):

**Database Manipulation and Collecting Solutions** LPN11.ppt
Lecture 12 (Jan 16):

**Working with Files** LPN12.ppt Extra:

**Horn Clauses** Horn.ppt

## Course Credits

Crediti: 6. Ci sono 12 moduli. Ogni modulo è seguito da una semplice prova in itinere. Per acquisire i crediti lo studente è tenuto a svolgere tutte le prove, superandone in modo soddisfacente almeno 10.

## Course Specialties

The course will partly be taught in English.

## Lecturer

**Name:** Johan Bos

**Email:** bos AT di DOT uniroma1 DOT it

**Address:** Via Salaria 113 - 3° Piano, studio 345b.