Despite being a S/U course, many students find this course to have a similar workload to any other 3 credit hour course (9-12 hours per week).

There are 29 guarenteed lectures throughout this course. With the minimum amount of problems required to pass, you should aim to complete 2-3 problems (preclass/homework) every lecture. There may be some special topic lectures throughout the semester for extra credit, but do not depend on them.

Problem Structure

For each lecture, there is 1 preclass problem (due before the lecture starts), and 3 homework problems (of easy, medium, hard difficulty) due 2 weeks after the lecture happens.

The preclass problem is usually a very basic implementation of the data structure/algorithm and it’s highly encouraged to complete it before attending class. Since usually, some experience with implementing it beforehand will help greatly with the in class problem (homework problem B) and the other homework problems.

The solution to the in class problem (homework problem B) will be given out during class, however its still very encouraged to try implementing it during class with the help of classmates/CAs as this ultimately will help you improve.

Problem Ratings

In CodeForces rating scale,

  • Preclass: 800-1100 (LeetCode Easy-Medium)
  • Homework A: 1200-1400 (LeetCode Medium-Hard)
  • Homework B: 1400-1600 (LeetCode Hard)
  • Homework C: 1700-2200

Homework problem C should be viewed as an ‘optional’ extra opportunity to practice an ICPC-difficulty problem for those who want to compete in the ICPC (as mentioned earlier, you only need to complete 2-3 problems to pass the course).

Competitive programming can be very frustrating! With the constraints of this course, you should aim to spend 1-2 hours at most per problem. If a certain problem is taking a lot longer than that, please come to Office Hours, or ask for help on Discord!

Improving

Being in this course, attempting/completing problems is already a huge step for improving your algorithmic and problem solving skills! To help your long term learning, although not required, it’s extremely beneficial to upsolve the problems you didn’t solve.