ICPC World Finals

The International Collegiate Programming Contest (ICPC) is a prestigious multi-stage competition in which competitive programmers from all over the world participate. Each team comprises three members and the participating teams are expected to solve the most questions in the given time. The English Press Club interviewed Abhinav Ramachandran, Aditya Ramaswamy, and Rahul Prabhu—the members of thayir_sadam_lovers, which translates to ‘lovers of curd rice’—who qualified for the 45th edition of the ICPC World Finals, Dhaka. Abhinav and Aditya are from the 2017 batch, while Rahul is from the 2018 batch; they are the third BITSian team in history to have qualified for the finals. Their team ranked 5th out of the 721 participating teams at the Amritapuri 2020 Regional Contest.

Abhinav began by stating the reasons for ICPC’s popularity, which included it having sponsors like IBM Quantum and JetBrains. Doing well in the contest is also an indicator to recruiters looking for students with solid coding skills. Labelling it as the ‘pinnacle of competitive programming as a sport’, Abhinav mentioned how the contest could primarily be viewed as a “mind-sport.” He added that around seven to eight teams from India make it to the World Finals every year.

Abhinav said that he showed interest in basic programming in high school after being exposed to questions on Project Euler, a website that requires programming skills to solve mathematical problems. He started competitive coding in 2018 and took it seriously in 2019, while Rahul said that he got into full-fledged competitive coding in 2020, right after the pandemic hit. Aditya added that he got involved in the activity in college after hearing about CodeForces and seeing Abhinav active in this sphere.

The trio felt that the coding culture was fostered better in the Hyderabad and Goa campuses than in Pilani. Even though coding contests organised by the Students’ Union (SU) are a ‘great start’, as per Abhinav, there is still a long way ahead. The three of them expressed the hope that their achievement encourages the junior batches to take up and succeed at competitive programming on a national and even international level. They said that one of the principal reasons they participated in the ICPC was to test their skills at a global scale. Qualifying for the finals also lends the team the opportunity to interact with students from various international universities that have produced some of the finest programmers. Aditya mentioned that these students from across the world approach problems in an entirely different manner, thus giving them an insight into alternative approaches.

The three of them are ranked among the top 100–150 coders in the country as per Codeforces rating. As a team, they credited their coordination and a well-spanned collective area of expertise to be their strong suit. Since Rahul and Abhinav were comfortable with implementation, they explained how they would start with the easier problems first, while Aditya worked on ideating for the tougher ones from the get-go. Once the easier problems were solved, all of them would focus on the more challenging questions. This blueprint, they said, was unique to their team, and was an ‘anomaly’, since most other teams depend on their best programmer to optimise their performance. Aditya strongly recommended that prospective teams participate in multiple team contests to devise a strategy that works best for them. The trio tried to participate in team contests at least once a week. Apart from this, they also participated in almost three–four individual contests in a week. Except for the network connectivity issues and planning meetings, there were no severe hurdles when they worked as a team. Aditya did however mention that it would have been much more convenient for them to be sitting together physically and prompting ideas, which was not possible because of the lockdown during the pandemic.

CP-algorithms and other blogs available on the internet were the primary resources they referred to, along with books like “Introduction to Algorithms” by Cormen, Leiserson, Rivest, and Stein (CLRS). They added that CodeForces Educational Contests and AtCoder Beginner Contests were also helpful for their practice. Additionally, Aditya emphasised the importance of consistent efforts and of later revisiting problems that they couldn’t solve in contests. Rahul also recommended CodeForces blogs to acquaint oneself with certain vital concepts.

This was Abhinav and Aditya’s second attempt at the ICPC. They had participated before to ‘test the waters’, but they were not as prepared or serious about it at the time. This time around, however, they worked on certain key aspects. For instance, Aditya talked about making his code more ‘readable’ and improving it. He focussed on better coding practices, especially for coming up with better solutions for edge cases. He also touched upon making efforts to get into a stable frame of mind for a five-hour contest without losing focus. Rahul mentioned how finding ‘efficient ways to practise’, rather than overthinking, was one prime takeaway from his preparation. Abhinav attributed their result to a positive “internal competition” that motivated them to get better. Abhinav and Aditya went on to say that there exists no universal ‘best way to practise’, but what worked for them was their innate interest and constant communication among themselves. When asked about balancing competitive programming with their other commitments, they reiterated how they never felt that participating in contests was a chore, and they enjoyed taking part in them without expending a lot of time out of their schedules.

All three agreed that C++ is the best language to go about competitive programming. With “99% of the competitive programming community” using C++, there are exhaustive resources available and a strong community backing. The implementation models available on platforms like GitHub, along with major useful libraries like STL, make competitive programming hassle-free with C++. As Aditya pointed out, “the needs of the competitive programmer are completely opposite to those of the business world.” Therefore, even with a strong support community for languages like Python, hobbyist programmers still prefer C++, with the recent exception of Kotlin.

When asked to comment upon companies using competitive programming as a metric to hire employees, they stated that professional software developers are majorly not expected to use hardcore data structures and algorithms. However, Abhinav reinstated that competitive programming remains a reasonable standard for recruiters in the absence of a better one. They emphasised how competitive programming as an evaluation criterion helps in finding candidates who can solve problems using the most optimal way without compromising on the effectiveness of the solution. However, they added that multiple candidates rote-learn questions off of websites like LeetCode, which defeats the purpose of hiring recruits with actual problem-solving abilities.

The three of them stated that even though there is nothing particularly wrong when students get into competitive programming solely to get placed, the process is more rewarding and effortless if the intent behind it comes organically to them. The interview concluded with Abhinav mentioning how cracking nearly all the internship/placement tests came as a by-product of their persistence, because their intrinsic interest translated into a professional one.