Purdue Computer Science Competitive Programming Courses (Summer 2020)
Three Competitive Programming (CP) courses will be offered in Summer 2020 (June 15 to August 4) in distant learning format. They are CS190-CP0, CS290-CP1, and CS390-CP2; each course will be 2 credits. All CP courses are taught in a problem driven fashion, where language features and algorithmic techniques are demonstrated using code to solve example problems, and then reinforced by programming assignments. The expected workload in the summer (7-week) format is for each week, 2 hours lecture time (watching videos) plus 6 to 18 additional hours for solving the problem assignments.
These courses will be taught by coaches and members of Purdue ICPC (International Collegiate Programming Competition) teams. Most lectures will be given by the lead TAs. Trung Dang and Riley Borgard are members of Purdue RE team that won Bronze medal at 2020 ICPC North America Championship, and advanced to World Final. Geyan Zheng and Richard Li have also represented Purdue in ICPC East Central North America (ECNA) regional contest.
- Scheduling Information:
CS19000-CP0
- Pre-requisite: High School Geometry
- Description: CP0 is designed to teach students who have little or no prior exposure to programming how to
think computationally and write programs to solve non-trivial problems.
The course uses C++, but focuses on the procedural parts of C++ that are largely
shared by Java and C. The goal is not to teach the C++ language, but rather to
teach how to program. Emphasis is on effective usage of primitive data types,
control statements, arrays, functions, strings, bit operations, and a few classes
in STL (e.g., vector, set, map).
- Lead TA: Geyan Zheng
290-CP1
- Scheduling Information:
CS29000-CP1
- Pre-requisite: CS 190-CP0 OR CS251 OR instructor approval
- Description: CP1 teaches several commonly encountered techniques to solve programming interview
and competitive programming questions, including usage of data structures such as set, map,
stack, queue, deque, priority queue, prefix sum arrays, two pointers, sliding window, depth-first
search, breadth-first search, binary search, meet-in-the-middle, etc.
- Sample Offerings:
Fall 2019
- Lead TAs: Riley Borgard and Richard Li
390-CP2
- Scheduling Information:
CS390-CP2
- Pre-requisite: CS290-CP1 OR instructor approval
- Description: CP2 teaches experience programmers additional techniques to solve
interview and competitive programming problems, including recursive search with backtracking, simulation and bisection, dynamic programming, linked lists, trees, graph search, topological ordering, union-find and minimal spanning tree, and shortest path. It can be viewed as a programming complement to CS 381.
- Sample Offerings:
Spring 2020
- Lead TA: Trung Dang
Which Course Should I Take?
- CS students who have not yet taken CS251 are recommended to start with CP0. However, if one has taken CS180 and received an A with no or minimal help on projects, one should be able to skip CP0 and take CP1.
- One good indicator on which CPi course is appropriate is USACO. Look at a recent
USACO contest. If one is able to pass Bronze (solving 2.5 problems in 4-5 hours), one does not need to take CP0. If one is able to pass Silver, one can probably skip CP1.
- In terms of LeetCode, very roughly CP0 is about LeetCode easy, CP1 is about LeetCode medium, CP2 is about LeetCode Hard.