This course introduces the student to the basic mathematical foundation of structures and algorithms that will be used in later computer science courses. The course considers basic concepts in logic, proof techniques, sets, functions, relations, counting, graphs and trees. It introduces the student to fundamental concepts of computability theory.