This document contains notes from a computer science course on Prolog. It discusses several built-in predicates in Prolog for testing term types, such as var/1, atom/1, integer/1, etc. It also covers topics like dynamic predicate creation, term decomposition and construction, database manipulation, and predicates for handling sets of solutions like bagof/3, setof/3 and findall/3. Examples are provided for solving cryptarithmetic puzzles and performing term substitution.