Programming Contest Resources

I started doing programming contests in high school, in grade eleven. That year, I wrote the Canadian Computing Competition and, to my surprise, was put on the team for the International Olympiad in Informatics. I’d mostly been learning programming informally on my own until then, so that summer I read a lot about algorithms from the books provided to the team, and learned some actual computer science. I went on to win a silver medal at the IOI that year and another the next. In college, I was on Waterloo’s team for the ACM programming contest, which placed 15th in the world in 2004 and 4th in the world and 1st in North America in 2005. Individually, I also placed 15th in the 2005 Google Code Jam. I found programming contests to be great fun and also an excellent way to learn algorithms, data structures, and how to write correct and efficient computer programs.

I’ve written this page to provide interested students with a concise list of resources for getting into programming contests and getting something out of them. Hopefully it is helpful to both high school students just getting into computer science and college students looking for some practice problems and tips.

Tutorials, Books and Problems

Here are a few resources I found useful, roughly in the order in which I looked at them:


Here are a few of the more surprising tips I found useful. These apply not just to contests but to programming efficiently and correctly in general:

Adapted from a template by Andreas Viklund.