Hold on just a sec...
2 credits
Fall 2025 Lecture Lower Divisionteaches applied algorithmic ideas and problem solving techniques to solve programming interview and competitive programming questions including usage of basic data structures such as [array, set, map, stack, queue, deque, priority queue], the four main algorithm paradigms: [complete search, greedy, divide and conquer, dynamic programming], other algorithmic ideas including [binary search the answer/bisection, meet-in-the-middle, prefix sum and difference arrays, two pointers, sliding window], and basic graph algorithms covering [strongly/connected components, floodfill, topological sort, shortest paths].
Learning Outcomes1Differentiate between categories of problems in computer science including complete search, greedy, divide and conquer, dynamic programming, and various types of graph problems, as well as subcategories in each of these categories.
2Implement well-known solutions (as discussed in class) to all major categories of problems in computer science (listed in LO1).
3Use new/novel algorithms to solve problems.
4Recognize key characteristics of certain problem types listed in LO
55. Classify a problem by those key characteristics.
6Deconstruct a problem into subproblems that can be solved individually.
7Assemble those subproblems into a complete solution.
8Determine runtime and space usage of a potential solution using big-O notation to judge if the potential solution will work.
9Create 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.
10Reflect on how one came up with a solution to a problem to better recognize patterns in problem types.
11Debug programs by generating custom test cases based on problem constraints.