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.