This course focuses on the fundamental concepts in Mathematics that are of particular interest to Computer Science such as logic, sets, induction, functions, and combinatorics. These topics are used as a context in which students learn to formalize arguments using the methods of mathematical proof.
Students learn how to perform card tricks based upon deeper mathematical topics. Students must figure out how each trick works and write proofs demonstrating their understanding of the tricks. The course covers topics including base representations, shift registers, and pseudorandom number generation.
Students explore pessimal algorithms, which are algorithms that terminate, but take creatively long routes towards this end. Topics include computational complexity, theory of computation, programming techniques, and discrete mathematics.