Hold on just a sec...
2 credits
Spring 2025 Lecture Upper Divisionteaches experienced programmers additional techniques to solve competitive programming problems and builds on material learned in CP1 and CP2. This includes algorithmic techniques in topics such as [network flow, computational geometry, graph matching, NP-hard problems]. Primarily, CP3 prepares students to compete in programming contests, which means most class time is focused on simulating contest environments and teaching teamwork and communication alongside problem practice.
Learning Outcomes1Differentiate between advanced categories of problems in computer science including network flow, computational geometry, graph matching, and NP-hard problems, as well as subcategories in each of these categories.
2Extrapolate generalized solutions and problem-solving strategies across advanced categories listed in LO1 as well as in general competitive programming categories.
3Design algorithms to solve problems that span multiple advanced categories of problems, combining categorical solutions in complex ways.
4Use new/novel algorithms to solve advanced problems.
5Deconstruct an advanced problem into subproblems that can be solved individually.
6Quickly determine runtime and space usage of a potential solution using big-O notation to judge if the potential solution will work.
7Create an efficient solution to a problem based on analysis of the problem type, the deconstructed problem parts, and the time and space constraints of the problem.
8Communicate ideas quickly and concisely to other competitive programmers to create efficient solutions.