Fall semester: Basic combinatorics such as counting rules, binomial and multinomial coefficients and the inclusion-exclusion principle. Graph theory, Propositional and predicate logic.

Spring semester: Advanced combinatorial topics such as generating functions and Catalan numbers. Formal languages and finite automata.