| First Order Logic and proof strategies for reasoning about programs; Basic set and bag definitions, operations, and properties; Using functions to solve problems: to include definitions of function domain, range, image, composition, identity, inverse, absrtraction, application, total & partial functions, injections, bijections & surjections; Reasoning using First Order Logic: truth tables, use of conjunction, disjunction, implication, negations, equivalence rules, assertions, tautologies, contradictions, universal and existential quantifiers; Representing natural language in a formal logic and proving the validity of logical statements using proof by contradiction and natural deduction; Programming in a declarative language: knowledge representation, search strategy, unification, recursion, data structures (lists), list processing, simple logic programming. |