“There is no real difference between work and play – it's all living.”

-Richard Branson

My History of Competitive Coding

ACM-ICPC

The ACM International Collegiate Programming Contest (ICPC) is one of the oldest, largest, and most prestigious coding contests in the world. Teams of three are given a single computer, 8-11 problems, and 5 hours to solve as many problems as quickly as they can.

The contest consists of three stages:

  1. Local contests – compete against others at your university (optional)
  2. Regional contests – compete against teams from other universities in your geographical region
  3. World finals – compete against the best teams from all over the world

Brock University’s geographical location places us in the East Central North America Regional Programming Contest (ECNA RPC).

Fall 2008: The Beginning

I was in COSC 2P03, Wolfgang Haas was the instructor. He competed in ICPC 2004 and his team placed 11th regionally (see image on the right). He strongly encouraged his class to compete. A coding contest sounded like challenging fun, plus I can be very competitive.

Our student coaches asked everyone who was interested to write down what relevant experience they had. I wrote that I competed in a high school science fair and math competition and performed well in both. That was enough to get me on a team!

Fall 2008: McMaster University, Hamilton, Ontario

Fall 2009: McMaster University, Hamilton, Ontario

  • Team name: ‘brock’ (‘)(‘) 1
  • Place: 85/115 (1 problem solved)
  • Teammates: Angelika Robidas (aka AJ) and Christopher Rintjema
  • Language(s) used: C++
  • Contest scoreboard

Fall 2010: University of Windsor, Windsor, Ontario

Fall 2011: University of Windsor, Windsor, Ontario

  • Team name: Badger Badger Badger
  • Place: 95/123 (0 problems solved)
  • Teammates: Martin Derka and Angelika Robidas
  • Language(s) used: Java and C++
  • Contest scoreboard

My team performed poorly at the contest. I probably learned the most from this contest. Such a terrible performance really makes you analyze what went wrong and brings you back down to earth.

I also organized a contest for individual tryouts this year, which we usually don’t do.

Fall 2012: University of Windsor, Windsor, Ontario

With the help of another student, I organized tryouts again this year. Although I was able to compete, I wanted to sit out and give someone else the opportunity. Instead I did a little bit of coaching and signed up as a reserve just in case. I also met Wesley from QuestToSolve, he was coaching for UofT.

Other Contests

I’ve also competed in competitive team-based hackathons and in the Facebook Hacker Cup. They’re completely different experiences than the ICPC, so I’d recommend anyone to try different programming contests and find the one you like best.

Conclusion

I consider myself an above average programmer, but I’ve learned that I’m an average competitive programmer. I simply don’t spend enough time practicing. For the amount of times I’ve competed, the problems I’ve solved in my free time is embarrassingly low.

So, was it worth it? You bet it was. I’ve had the opportunity to travel numerous times, meet some amazing people, and witness some of the best problem solvers in the country (and the world) work their magic right in front of me. I’ve also improved my problem solving skills, and my knowledge of programming languages (especially C++) – in short, I’m now a better and quicker programmer. I also learned a lot about how contest environments work, how much work it takes to organize your own, and how much work some schools put into preparation. In short, it’s a great oppurtunity for speed learning and gaining some practical experience.

If I could do it all over again, I would try to make the ICPC a higher priority at my school. As it stands, we’re a school that goes into the competition with minimal effort and sometimes we get lucky (when we’re able to recruit the rockstars) and sometimes we don’t. This year I tried to prepare us better, but I think our school takes pride in competing with minimal preparation, and that’ll be difficult to change.

So far we’ve never had a team go to the world finals. Our region is tough, but I think it’s entirely possible. Hopefully I’ll be alive to see it happen!

Lessons Learned

  • Don’t bring loads of printed resources, you won’t be using the majority of it
  • Team chemistry matters
  • Practice as a team and individually
  • Figure out the strengths and weaknesses of everyone on the team (including yourself)
  • Have fun!

You may also want to check out Brock’s ICPC mailing list and code repository.
I started both in an attempt to help the school, but they never really caught on.