This course aims to introduce areas of mathematics of particular importance to computer science: set theory, logic, Boolean algebra, methods of proof, mathematical induction, number theory, discrete probability, combinatorics, functions, relations, recursion, and graphs, including trees. All these areas are extensive and complex; we will review enough vocabulary and structure in each area to see its interconnection with and support of the theory and practice of computer science. An emphasis will be placed on developing mathematical maturity, the ability to to reason logically and effectively communicate mathematical arguments.