This course introduces the foundations of discrete mathematics as they apply to computer science. Topic includes sets, functions, and relations, and related operations to computer programming. Construct sound arguments in propositional and predicate logic by applying appropriate rules of inference given sample intelligent software. Construct valid mathematical proofs using mathematical induction, direct proof and proof by contradiction to programs and prove program correctness.