|Select the Course Number to get further detail on the course. Select the desired Schedule Type to find available classes for the course. The Schedule Type links will be available only when the schedule of classes is available for the selected term.|
|CS 21100 - Competitive Programming I|
Credit Hours: 2.00. CP1 teaches 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].
2.000 Credit hours
Levels: Graduate, Professional, Undergraduate
Schedule Types: Distance Learning, Lecture
Offered By: College of Science
Department: Computer Science
May be offered at any of the following campuses:
Learning Outcomes: 1. Differentiate 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. 2. Implement well-known solutions (as discussed in class) to all major categories of problems in computer science (listed in LO1). 3. Use new/novel algorithms to solve problems. 4. Recognize key characteristics of certain problem types listed in LO1. 5. Classify a problem by those key characteristics. 6. Deconstruct a problem into subproblems that can be solved individually. 7. Assemble those subproblems into a complete solution. 8. Determine runtime and space usage of a potential solution using big-O notation to judge if the potential solution will work. 9. Create 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. 10. Reflect on how one came up with a solution to a problem to better recognize patterns in problem types. 11. Debug programs by generating custom test cases based on problem constraints.