This document provides an overview of logic programming and Prolog. It begins with an introduction to predicate calculus and its use as the basis for logic programming. It then discusses the origins of Prolog and its basic elements including facts, objects, relations, and predicates. The document outlines Prolog's structure and programming concepts such as variables, rules, and the unification process. It concludes with discussions of Prolog's deficiencies and applications in areas like databases, expert systems, and natural language processing.