Programming competitions
by Tullio Facchinetti
Participation to the IEEExtreme Programming competition
In the past years, I supervised the participation of several teams to the programming competition organized by the IEEE association, i.e., the IEEExtreme Programming competition.
We participated to the editions from 2011 to 2019 with a variable number of teams, ranging between 3 to 9 teams depending on the year.
Despite the students do not attend any course that is specific for programming competitions, we were able to achieve satisfactory results every year, always ranking in the first hundreds of teams. The best result was entering in the top 100 teams. Considering that there are usually more than 3000 teams participating to each edition, our ranking was pretty satisfactory.
An interesting aspect is that, for many years, we were the only Italian university that participated to the event. I suppose that the organization of the competition (24 hours long), and the fact that it takes place during the weekend - in Italy we start on Saturday at 2 AM - can be quite discouraging for the colleagues that have to provide their support as “proctors” during the whole duration of the event.
Finding the place to stay for the competition has not been always easy. For a couple of editions we could stay at the Univeristy. Some editions were held in the venue of the ComPVter association, while one year we have been hosted in the headquarter of the 7Pixel company. In 2013 we could not find a place to stay, so I hosted all the teams in the basement of my house for the whole duration of the competition.
Resources for programming competitions
I recently received several requests from students who are willing to participate to some programming competitions.
I report some resources that are useful - if not necessary - to train in view of the participation to such kind of competitions.
Online training
There are several competitions every year. Since I do not want to repeat good lists that are already available on the web, you can check this article for a list of the most important events. You may also consider the IEEExtreme Programming competition, which is not included in the list.
The implementation of a program for solving the problems in the competitions pays attention to aspect that are rather different w.r.t. the implementation of “traditional” software. Yes, the language may be the same, but it is used in a different way, explicitly addressing aspects such as algorithmic complexity and conciseness in the code, which allow to solve the problem faster.
For this reason, it is important to practice with the types of problems that are typically presented during a competition. There are several websites that host many problems and allow to train against the proposed problems.
The two online resources that I have some experience are LeetCode and HackerRank. A good list of alternative and similar resources can be found here.
A book that is worth to read
While training is fundamental for getting the grip to the type of problems and solutions, the approach to programming competitions require some theoretical background that is specific for this domain. A very good book that explains several caveats and tricks for programming competitions is Competitive Programming.
I warmly suggest to read the book, even to persons that may not be specifically interested to competitive programming: there are many useful and interesting hints related to programming in general, in the book.