GoogleHashCode's general idea is quite simple. The organizers invite developer teams and ask them to solve a real case from Google team's experience. The participants are free to choose whatever programming language and software tools they want; their chances of winning depend on how many different solutions they can offer, and the solution's quality.
The competition has two rounds: the on-line qualification round and the final round. On each stage, they get a task that they have to solve in a particular amount of time. The difference from ICPC here is that during ICM ICPC, participants are offered around 12 tasks, each having a particular solution, and in GoogleHashCode and some other similar competitions no one knows which solution is the right one. The first round - the global qualification round prior to the final on-site round at Google's headquarters in Paris, took place on February 23. Anyone could participate online from any place in the world - they had to think of an effective way to post videos on YouTube. The organizers provided them with data on caching servers, network end points, the videos, and the forecasted demand on some of them. The contestants were to post a particular video on a particular caching server in such a way that would minimize the mean response time for all inquiries.
As for the final round, Google's staff offered one of its real cases. Once, their team faced the problem of providing Wi-Fi on one of its headquarters floors in Paris. It had to be arranged in such a way that the signal would be equally strong throughout the whole building.
ITMO University was represented by two teams from its Computer Technology Department. The PastGlory team were Gennady Korotkevich, Artem Vasilyev and Boris Minaev; they got 2nd place in the championship. ITMO's other team, ITMO1, came 4th and consisted of Ivan Belonogov, Ilya Zban and Vladimir Smykalov. The first place went to AIMTech, another team of Russian developers.
According to Ivan Belonogov, both tasks from the final round (namely distribution of routers across the facility and adjusting the system of cables) were really interesting, and thus his team offered several good ideas for each of them.
"We had enough time and succeeded in doing almost everything we wanted. We did not distribute tasks among team members, so each proposed his own solution. Such an approach has several advantages. Firstly, each could test his ideas and heuristics without distracting others. Secondly, that considerably increased reliability. Also, we could try more different approaches to solving the task", shares Ivan Belonogov.
ITMO1's participants also noted that such competitions are really different from the contests they are used to.
"It's great to have good results for such competitions, as we do not train for such contests at all. And that means that skills and knowledge we get during training for ACM ICPC are great for adjacent fields as well. We see competitions like GoogleHashCodemore as a change of pace, some sort of a recreational activity," comments Mr. Belonogov.
As of now, the teams actively train for the next ACM ICPC contest that will take place in May. According to Ivan Belonogov, the three skills that are basic to participating in different programming contests are knowledge of algorithms, the ability to code fast while making minimum mistakes, and the ability to come up with ideas for solving tasks.
"Algorithms are simple - those are the basic means we use. We know and are good at writing almost anything that we can come across. Yet, the two other skills as something one shall never stop honing. At our training sessions, we solve tasks from previous contests to do that", explains the developer.