This course is fundamental for any computer science student. Students will learn how to approach problems rigorously and develop mathematical thinking skills, working with pencil and paper before translating their ideas into computer programs. The course will cover various foundational areas of mathematics, including logic and proofs, sets and functions. A solid theoretical understanding of computer science, as well as other sciences, relies on a strong grasp of mathematics. This course is Part 1 that will be followed by other two parts.