Why Should I Take This Course?

Welcome to CS 491 CAP!

We are preparing the site for the Fall 2021 semester. Feel free to look around, but note that not all the pages are up yet.

Welcome to Competitive Programming! In this class you will learn how to compete in programming contests such as ICPC, Code Forces, and Hacker Rank. Is this class for you? Read on to find out…

What Are the Benefits of Competitive Programming?

Participating in coding contests has benefits!

You will

  • build confidence in your coding skills,
  • increase your coding speed,
  • be ready to crush a coding interview,
  • and quite possibly make some friends!

But… I’m not very competitive, and besides, I’ll never beat those top students!

That doesn’t matter! Whether you are just starting out or whether you are competing for a chance at the World Finals, the only person you’re really trying to beat is yourself. The goal is to try hard, do a little bit better than last time, or perhaps learn something that will help you next time. You can do practice problems on your own, but there’s nothing like a contest to keep you honest.

Am I ready for this course?

The only prerequisite is that we assume you know how to program. We don’t even assume you’re any good at it… this course will help with that part. But if you have programmed in Python, C, or C++ then you are ready for this course.

It does help if you’ve taken data structures and a theory course… but you can get started now and take those later as you get stronger.

How do I get good at this?

Practice. A lot. But do it efficiently…

  • Attend contests as much as you can.
    • Code Forces has two hour long contests usually once or twice a week, for instance.
    • After the contest is over, read the commentary, both for the problems you solved, and the problems you attempted and could not solve.
    • Upsolve the ones you couldn’t do. (I don’t know why they call it upsolving.) This means that you go back to the computer, finish your solution, and submit it until you get it accepted.
  • Solve practice problems
    • This has a similar feel, but in this case it’s okay get help. If you are solving UVa problems you can use the UDebug and UHunt sites for extra hints / sample inputs.

Okay! How do I get started?

  • Join the CampusWire forum. If you registered before class started, you should have gotten an invite. If you registered late, or did not get the invite, you need to email the instructor.
  • Get yourself a copy of Competitive Programming 4. It is a two book set.
  • Get yourself a copy of Guide to Competitive Programming. As of this writing the PDF is free.
  • Fill out this form (to be provided) to register your judge ids.
Previous