1. Specify the domain and codomain of a given function, determine whether a function is 1-1 or onto (or both) and apply these concepts to infer whether composition of functions and inverse functions are well defined. 2. Build simple switching circuits using OR, NAND, AND, etc., gates. 3. Compute the cardinality of finite sets of objects constructed according to the various set-theoretic operations of union, intersection, Cartesian product and power set. 4. Translate English mathematical statements into predicate logic formulas. 5. Prove any propositional formula that is a tautology, using truth tables or syntactic proof techniques such as resolution. 6. Prove simple mathematical statements by contradiction, by cases, or by assuming the antecedent. 7. Be able to reason about graphs and (binary) trees and use them in several examples 8. Construct simple finite automata based on specifications and argue that they behave as specified.