This course explores logic-based computing and logic programming. Introduces fundamentals of logic programming and covers basic techniques for solving problems in Prolog, including nondeterministic programming, incomplete data structures, definite clause grammars, and meta interpreters. Examines implementation of a logic programming system as a generalization of both traditional programming language systems and traditional databases. Prerequisites: CS 2341, CS 3342.