Constraint Logic programming
COURSE INFORMATION
COURSE NAME 
Constraint Logic programming 
Course Code 
0828 (Computer Science) 
Course Type 
Optional 
Level of Course 
Undergraduate 
Year of Study 
4rd 
Term 
Spring 
ECTS Credits 
5 
Name of Instructor 
IDr. Ilias Sakellariou (Lecturer) 
iliass@uom.gr 

Office Hours 
Open Door Policy 
InClassroom Study 
3 hours per week 
OutofClassroom Study 
2 hour per week 
Objective of the Course 
Logic Programming and Constraint Logic programming are among the most interesting programming schools, that significantly differs from the "classical" schools of imperative and object oriented programming. The course aims to (a) introduce to the students logic programming, offering a brief introduction to the theoretical foundations of First Order Predicate Logic and the resolution principle, (b) present in depth Prolog, (c) present the principles of constraint programming and their embedding in the LP platforms, that leads to powerful tools for solving problems, (d) present the applications classes in which LP and CLP offer significant advantages and finally, develop student programming skills, like recursion that are applicable to all programming schools. 
Prerequisites 
Basic Programming Skills 
Course Contents 
Introduction to Logic Programming. Declarative Programming, First Order Predicate Logic and Logic Programs. Prolog Syntax, facts, rules. Program Executionqueries. Logic Variables and Scope. Terms and Unification. Resolution. Execution Mechanism. Debugging. Recursion. Prolog Arithmetic. Lists, cut and control of execution. Higher Order predicates (all solutions, variable call, negation as failure, term composition and decomposition, Prolog DB). Files. Graphs. Natural Language Processing and Grammars. Constraint Satisfaction Problems. The notion of constraints over Variables. Domains. Solving Constraint Satisfaction problems. Filtering algorithms on binary and higher order constraints. The Eclipse programming language. Example problem classes (scheduling, resource allocation). 
Recommended Readings 
K. R. Apt, M. G. Wallace, "Constraint Logic Programming Using ECLiPSe", Cambridge University Press, 2007. Bratko, Prolog Programming for Artificial Intelligence, (3rd edition), Addison Wesley, 2001 ISBN10:0201403757, ISBN13:9780201403756. R. Kowalski, Logic for Problem Solving, NorthHolland, 1983 (from author's web page) 
Teaching Methods 
3h Lectures/Week 
Assesment Methods 
Final Written Examination (70%), Weekly assignments (10%), Coursework (20%) 
Language of Instruction 
English 
Course Schedule 

1. Week 
Introduction to Logic Programming. Declarative Programming, First Order Predicate Logic and Logic Programs. 
2. Week 
Prolog Syntax, facts, rules. Program Executionqueries. Logic Variables and Scope. 
3. Week 
Terms and Unification. Resolution. Execution Mechanism. Debugging. 
4. Week 
Recursion. Prolog Arithmetic. 
5. Week 
Lists and Recursion 
6. Week 
Cut and control of execution. 
7. Week 
Higher Order predicates (all solutions, variable call, negation as failure, term composition and decomposition, Prolog DB). 
8. Week 
Natural Language Processing and Grammars. 
9. Week 
Constraint Satisfaction Problems. The notion of constraints over Variables. Domains. Solving Constraint Satisfaction problems. 
10.Week 
Filtering algorithms on binary and higher order constraints. The Eclipse programming language. 
11.Week 
The Eclipse programming language. Example CLP problem classes. 
12.Week 
Example CLP problem classes. 
13.Week 
Revision Lecture 