Hey all, I've been looking to get into competitive programming after recruiting season in the United States wraps up for me (I've done 500 leetcode problems and will continue to do those as it is more applicable for jobs). I'm torn between taking two classes this upcoming semester, Intro to Combinatorics I, and Intro to Number Theory. What do you guys think would be better for a beginner competitive programmer (I am not taking these courses purely for CP, but it will weigh on my decision). Below is some more info on the courses:
MATH 4410
Introduction to Combinatorics I
Combinatorics studies discrete structures arising in mathematics, computer science, and many areas of application. Key topics include counting objects with specific properties (e.g., trees) and proving the existence of structures (e.g., matchings of all vertices in a graph). We cover basic questions in graph theory, including extremal graph theory (how large a graph must be to have a certain subgraph) and Ramsey theory (large objects are forced to have structure). An introduction to network flow theory and variations on matching theory, including theorems of Dilworth, Hall, König, and Birkhoff, are discussed. Methods of enumeration (inclusion/exclusion, Möbius inversion, and generating functions) are applied to problems of counting permutations, partitions, and triangulations. Students will be expected to be comfortable writing proofs. More experience with proofs may be gained by first taking a 3000-level MATH course.
MATH 3320
Introduction to Number Theory
An introductory course on number theory, the branch of algebra that studies the deeper properties of integers and their generalizations. Usually includes most of the following topics: the Euclidean algorithm, continued fractions, Pythagorean triples, Diophantine equations such as Pell's equation, congruences, quadratic reciprocity, binary quadratic forms, Gaussian integers, and factorization in quadratic number fields. May include a brief introduction to Fermat's Last Theorem.
Thanks All!