How many ways can you divide a field filled with cows into two groups by moving a horizontal or vertical line? This is an example of the many problems junior Samuel Ren spends his weekends solving to practice for the United States of America Computing Olympiad.
Ren has been involved in coding for seven years, beginning his journey with the First Lego League, an international robotics competition for elementary and middle school students. Although FLL included some coding, he only began competing in USACO two years ago.
“Competitive programming is a pretty niche part of coding, so I got into it relatively recently,” he said. “A lot of it doesn’t have to do with anything else in coding.”
This type of coding may be less known, but Ren isn’t the only one at Gunn participating in the competition. With two years of coding experience prior to his introduction to USACO, junior Agastya Goel began competitively coding in sixth grade, an endeavor propelled by his existing interest and family influence.
“My dad does a lot of computer science and my sister had also done competitive programming, so I decided to try it out and see what there was,” he said. “I found out very quickly that it was a lot of fun, so I continued.”
While Goel has participated in many coding competitions, USACO is the largest and most popular, with the organization holding four monthly competitions a season from December to March. Participants are divided into four divisions — Bronze, Silver, Gold and Platinum — depending on their compiled scores from each round. Each round lasts four or five hours and consists of three problems contestants must solve from scratch, which are then run against different test cases. The more test cases the program passes, the higher the contestant’s score.
“The great thing (about USACO) is that once you reach a certain division, you’re there permanently,” Goel said. “So, for most people, they aren’t worrying about joining the camp, but just to progress to the next division by scoring well. It’s like you’re competing against yourself.”
Not only is USACO accessible because participants can sign up online and participate from home, but online coding resources are also widely available. While preparing for the competitions, Goel focused on individual studying, including reading free blogs on Codeforces, a platform with over 20,000 community members, to learn new techniques and algorithms.
Goel noted that while his previous coding experience helped him at the beginning, the content he’s learned from most coding classes differs from the competition-style prompts in USACO.
“You have a math problem, but now you have a computer to help you solve it,” he said. “Instead of building something like a website, what you’re doing in competitive programming is you’re given (a) math problem with different constraints and variables and you need to write a computer program that’s going to solve the math problem given to you.”
Therefore, Ren’s practice approach prioritized building the experience and mindset to think about new problems instead of only cramming techniques.
“I learned a couple of more basic common techniques, but a lot of the problems and how USACO is trying to move in general, is to be more about problem-solving rather than (about memorizing) a bunch of techniques and throwing them at the problem.”
Something else that differentiates USACO from traditional coding are the requirements in coding language. While the competition accepts any language in the lower divisions — most popularly C++, Java and Python — if chosen for the camp, participants must use C++, a general-purpose coding language used by many competitive programmers for its fast speed and well-developed Standard Template Library, which is used to find common algorithms.
Out of the 24 candidates selected for the training camp, only eight students — four for the girls team and four for the boys team — are chosen to represent the US at the International Olympiad in Informatic, the most prestigious computer science competition for high school students. Last year, Goel traveled with the IOI team to Hungary, where he received a gold medal.
“We got to meet lots of people from other countries, we were able to try out local Hungarian food and it was a lot of
fun,” he said.
Nonetheless, Goel’s journey to IOI hasn’t always been easy. During the six years that he has been competing, mental blocks have been a major obstacle for him to overcome.
“I think that the biggest challenge for me was the initial four divisions because sometimes it seemed impossible to get to the next division,” he said. “I think that USACO does a really good job of breaking up the process to IOI into many stages, but even with that, when I was in the Gold division, reaching the Platinum division seemed almost insurmountable. I very seriously considered giving up.”
As Goel’s experience and passion forcoding grew, he was able to push past these challenges.“At the beginning, it felt like I spent four hours coding when I was really only coding for 90 minutes,” he said. “Now, it feels like every minute I spend coding is really worth that time, so I think that when you enjoy something, you get much more value out of doing that thing.”
Having achieved his goal of competing internationally, Goel hopes to continue fostering his passion while spreading it to students at Gunn as co-president of the Competitive Programming Club.
“We ran a very successful coding competition this year,” he said. “It was the Bay Area programming competition with 80 or 90 in-person participants. That was a great experience, and we’re just trying to make coding accessible to everyone who wants to learn it.”
Although Ren has met a few fellow USACO participants, he is not active in the online or Gunn competitive programming community. Instead, similarly to Goel, Ren attributes his success to his personal interest.
“Follow your interests and do what you think is fun,” he said. “Don’t do anything for college because it doesn’t really work out.”
While USACO is competitive, Goel hopes to highlight the supportive camaraderie.
“It does feel like every competitive programmer is on the same team,” he said. “I think this is clearly seen in the camp, where after a very long and exhausting five hour contest, everyone just gathers downstairs in the dorm and starts playing games, or on the last day of camp, everyone stays up super late chatting or coding.”