La programmation logique est un type de programmation qui se base sur la logique des prédicats. Il permet de programmer plusieurs types d'applications à l'aide d'un ensemble de faits et de règles. Il utilise essentiellement des prédicats mis sous la forme clausale (Clauses d'Horn). Ces faits et ces règles sont exploités par moteur d'inférence, en réaction à une question ou une requête. Dans ce document, nous allons explorer trois chapitres principaux. En premier, nous allons présenter la logique classique et surtout la logique de prédicats. Deuxièmes, nous allons présenter comment programmer en utilisant swi-prolog. Chaque chapitre contient une section pour des exercices corrigés. Finalement, nous allons corriger quelques exercices de nos examens.