Prolog has a declarative style. A predicate definition includes both the input and output parameters, and it allows a programmer to define a desired result without being concerned about the detailed instructions of how it is to be computed. Such a declarative language offers a solution to the software crisis, because it is shorter and more concise, more powerful and understandable than present-day languages. Logic highlights novel aspects of programming, namely using the same program to compute a relation and its inverse, and supporting deductive retrieval of informa tion. This is a book about using Prolog. Its real point is the examples introduced from Chapter 3 onwards, and so a Prolog programmer does not need to read Chapters 1 and 2, which are oriented more to teachers and to students, respec tively. The book is recommended for introductory and advanced university courses, where students may need to remember the basics about logic program ming and Prolog, before starting doing. Chapters 1 and 2 were also kept for the sake of unity of the whole material. In Chapter 1 a teaching strategy is explained based on the key concepts of Pro log which are novel aspects of programming. Prolog is enhanced as a computer programming language used for solving problems that involve objects and the relationships between objects. This chapter provides a pedagogical tour of pre scriptions for the organization of Prolog programs, by pointing out the main draw backs novices may encounter.