This course helps students develop the ability to think logically and mathematically. It prepares students for more advanced courses in algorithms and discrete mathematics. An emphasis is placed on the ability to reason logically, and effectively communicate mathematical arguments.

The course begins with a brief review of number systems, and their relevance to digital computers. Students review the algebraic operations necessary to perform programming functions. In the unit on logic and proofs, students learn to identify, evaluate, and make convincing mathematical arguments. They are introduced to formal logic, and methods for determining the validity of an argument (truth tables, proofs, Venn Diagrams). Students learn to decompose problems using recursion and induction, and how these methods are used in real-world computational problems. The final unit is an introduction to counting and probability. Topics covered include principles of counting, permutations, combinations, random variables, and probability theory.

Throughout the course, students apply their knowledge by solving logic puzzles and creating programs in Python.

- Develop the ability to think logically and mathematically at a level that prepares students for more advanced courses in algorithms and discrete mathematics.
- Display creativity and initiative in carrying out algebraic operations necessary to perform programming functions.
- Display knowledge of algebraic operations in order to perform programming functions
- Make judgments, relevant to real-world computational problems, based on knowledge of the principles of counting, permutations, combinations, random variables, and probability theory.
- Decompose problems using recursion and induction in the context of in real-world computational problems
- Assess, analyse, and criticise the methods for determining the validity of an argument (truth tables, proofs, Venn Diagrams)
- Propose appropriate solutions to well-scoped but abstract and changing problems requiring students to apply their knowledge by solving logic puzzles and creating programs in Python.

- E. Lehman et al., Mathematics for Computer Science, MIT OpenCourseWare, 2015.
- R. Johnsonbaugh, Discrete Mathematics, Pearson, 2018.

- Accreditation: ECTS Accredited (EQF5)
- Total workload: 150 hours
- Requires extra purchases (outside texts, etc.): Yes, purchases required
- ID verification: Required
- Admission requirements: Application required
- Minimum education requirement for students: High School