Hold on just a sec...
2 credits
Fall 2025 Lecture Upper Divisionteaches experienced programmers additional techniques to solve interview and competitive programming problems and builds on material learned in CP1. This includes specific algorithmic techniques such as [shortest paths, topological sort, MST, union find, range queries], advanced algorithms surrounding trees and DAGs, advanced problem types in [dynamic programming, backtracking/simulation, mathematics, string processing], and more. It can be viewed as a programming complement to CS 38100, with some overlap in content.
Learning Outcomes1Differentiate between advanced categories of problems in computer science including backtracking/simulation, advanced dynamic programming, advanced graphs (including trees and DAGs), mathematics, string processing, and range queries, as well as subcategories in each of these categories.
2Implement well-known solutions (as discussed in class) to advanced categories of problems in computer science (listed in LO1).
3Identify when a problem spans multiple categories of problems (as listed in LO1)
4Design algorithms to solve problems that span multiple categories of problems.
5Use new/novel algorithms to solve advanced problems.
6Recognize key characteristics of certain problem types listed in LO
77. Classify an advanced problem by those key characteristics.
8Deconstruct an advanced problem into subproblems that can be solved individually.
9Determine runtime and space usage of a potential solution using big-O notation to judge if the potential solution will work.
10Create 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.
11Reflect on how one came up with a solution to a problem in order to better recognize patterns in problem types.