Introduction to basic discrete mathematical and linear algebraic structures and use of these mathematical structures to solve programming problems. Logic, set theory, formal proof methodology, functions, combinatorics, advanced counting techniques, and elements of linear algebra.