Course Objectives:
1. Understand Fundamentals of Logic and Proofs: Learn propositional logic, predicates, 
quantifiers, and various proof methods and strategies. 
2. Apply Counting Techniques: Master basic counting principles, permutations, 
combinations, and advanced techniques such as inclusion-exclusion and derangements. 
3. Utilize Generating Functions and Recurrence Relations: Study generating functions, 
their calculation techniques, and solve recurrence relations using various methods. 
4. Apply Group Theory to Counting Problems: Understand group actions, the Orbit
Stabilizer Theorem, and apply Polya’s Counting Principle and Cycle Index Polynomial. 


Course Outcomes:
Upon successful completion of this course, students will be able to: 
1. Use propositional logic, predicates, quantifiers, and various proof methods to solve 
problems and construct rigorous arguments. 
2. Apply basic counting principles, permutations, combinations, and advanced methods like 
inclusion-exclusion and derangements to solve complex counting problems. 
3. Compute and apply generating functions, including exponential generating functions, and 
use summation operators for problem-solving. 
4. Solve first-order and second-order linear recurrence relations with constant coefficients, 
including non-homogeneous cases, using generating functions. 
5. Utilize group actions, the Orbit-Stabilizer Theorem, Polya’s Counting Principle, and Cycle 
Index Polynomial to solve counting and enumeration problems.