How High Schoolers Beat College Students in a Contest, and What We Can Apply to Remote Education

Some learnings that could prove useful during this pandemic.

Jd Dantes
The Faculty
8 min readSep 23, 2020

--

Back in college, I was part of the university’s team that competed in the International Collegiate Programming Competition (ICPC), considered to be the Olympics in programming for college students. Training and competing in such contests help hone your computer science (CS) skills (the problems could go beyond the scope of an undergraduate CS curriculum) and give you an edge when preparing and going through employment interviews and programming exams (it did for me). Our team, as well as those from other schools, spent our free time during weekdays, nights, and a significant chunk of our weekends preparing and training for these contests.

Now there was this contest. The top teams (from different schools, mine included) were tied at 6 problems solved, only differing in the time taken to solve them. The interesting thing is, there was an online mirror of the said contest where anyone could join. There was this person who was able to solve 7 problems (and apparently was close to solving an 8th) on his own. The teams in the official contest consisted of three college students each. That other guy was in high school.

Just how did that happen?

Let’s see what can be attributed to that event, now that we have the benefit of hindsight [1].

For one, that high school student got into competitive programming and had training under the National Olympiad in Informatics (NOI), the country’s official qualifier to select the students to represent the nation in the International Olympiad in Informatics (IOI), which is the counterpart of the ICPC for high school.

The IOI, while having a scope that is a subset of the ICPC’s, covers material that could typically be in the sophomore or junior CS curriculum.

The NOI training material was prepared by coaches who had extensive competitive programming experience themselves, including world finalists and problem setters/judges for the ICPC and other similar contests.

The high school student who got 7 problems? He was really enjoying competitive programming. He spent his time trying to solve lots of problems on online training platforms, and even came up with his own problems for others to solve.

Now, one could argue that that student was an outlier. Sure. Not a lot of other people (if any) were coming up with contest problems while in high school. He was also the first to bring home IOI medals for the country.

Well, the thing is, in succeeding batches of the NOI, there were participants who had similar (or perhaps even better?) performance during the almost half-a-year-long training and selection process. The country started bringing home several bronze and silver medals. The NOI trainee pool as a whole was getting stronger.

So, what else can we look at here? There are a couple of things that I’ve observed from the NOI training process which I think we could apply to education, especially now that a lot of students and teachers are forced to migrate to remote classes and semesters due to the global pandemic.

1.) As I’ve mentioned, the trainee pool was getting stronger, as measured by the increase in the country’s medals, as well as the participants’ rating in training platforms like Codeforces. So, while the argument about outliers cannot be completely taken away, there is at least a degree of replicability. In other words, there might be something about the system or process as a whole, and not just purely about how a person could do well compared to others due to their individual differences.

2.) The NOI is organized by a relatively small group of people. A joke (?) in the NOI is that the “bus factor” of the organizers is one. That is to say, if a bus happened to hit and incapacitate one of the organizers, then NOI as a whole would come to a halt. While today there have been a bit more volunteers that help out (thankfully!), especially in the earlier years manpower has been an issue, with the organizing team being only fewer than ten people. Yet despite the low manpower, positive results were still obtained as evidenced by the medals that were won for the country.

3.) Training is conducted by preparing written material for each week in the curriculum. The curriculum is divided into certain topics per week [2], typically starting around February and running until the IOI in August/September.

4.) In the written material, aside from the discussions of the lessons, there are also several non-coding exercises and a list of programming problems to solve and code. These have been given points according to difficulty. The number of topics and problems in a week could be quite dense, and trainees are encouraged to solve as much as they can. The points earned are also taken into account during the selection process towards the end.

5.) Trainer(s) are assigned for each week in the curriculum. These trainers are also typically the ones who write the material for the week. For each week, a channel on Discord is created where the trainer uploads the material, and where trainees can ask if they need help. The great thing about this is that the students themselves can ask and even answer one another’s questions, creating a collaborative learning community. Solutions are uploaded to Google Classroom for feedback and grading by the trainer. For solutions and submissions to the programming problems hosted on other online platforms, there are scripts that help track the number of problems that have been solved by each person.

What parallels can we draw for the (remote) education system as a whole?

1.) The system seems to have a big impact on “success”. At the same time, it’s good to think about what the metrics [3] for success could be. On a longer scale, these could be things like unemployment rates, employer satisfaction with their employees, usefulness of degrees as assessed by a working professional, and the economy of the country as a whole. On a narrower, more local college scope, it could be things like the average grade of the students, the rate of degree/subject completion, and the frequency of needing to curve. I just briefly mentioned these but do think that they deserve a discussion on their own.

2.) With the setup in NOI, you pretty much have a flipped classroom. Students go through material on their own, in contrast to the usual setup requiring a lecturer to deliver the lesson repeatedly across several time slots. The inverted setup could help schools that have a low teacher-to-student ratio due to factors like the number of people who choose to become teachers and budget constraints of the school.

3.) I’m a big fan of written material [4] over live lectures (or even videos) [5] as I find them to be much more efficient; you cannot pause, rewind, or skip [6] to a certain section with the latter the same way that you can with written content. I do acknowledge that people may have different learning styles and preferences; I’ve also personally had my fair share of learning from Khan Academy and YouTube.

Another advantage of writing, though, is that there are less resources needed, both on the teacher’s and on the student’s side. You would not need to get a good mic and camera, or a stronger computer just to edit videos. The internet bandwidth needed would also be significantly lower compared to downloading or streaming video.

In addition, having premade resources (whether written or video, in contrast to live lectures) is reusable and scalable, kind of like a “write once, deploy everywhere” thing. While the curriculum can change (and a degree is said to be outdated within three years of graduating), there is still some part that is fundamental and can be reused, even after several years or decades. For my field, I’d say it’s somewhere along the lines of common math to calculus, linear algebra, and fundamental data structures and algorithms. I can’t say much about others, but do assume that there is a similar fundamental chunk in the curriculum of fields like biology, chemistry, etc.

4.) It does not have to be costly. Using platforms like Discord is free, and there are other tools that give free or lower-cost plans for educational institutions and non-profit organizations. With regards to creating the content, you could look at crowdsourcing them, inviting students or volunteers to write, even incentivizing them through a reasonable monetary allowance or through some other means.

With these, hopefully there was something that you could take away and apply to your own educational institution. Whether you have fully migrated to remote or not, perhaps there’s something about the current educational system that can be rethought and kept, even after the pandemic has ended and we are all again able to enjoy our discussions face-to-face.

Footnotes

While writing the early drafts of this post, a couple of people have been very helpful in giving feedback and additional insights (see the acknowledgments below). Some of them have been incorporated in the main discussion above; others are a little bit more specific to NOI or competitive programming environments so I’ve placed them here.

[1] Another factor to note is that some of the skilled high school participants end up studying in universities abroad and thus will not be representing local universities.

[2] There are separate curricula for new and returning trainees. For team contests like the ICPC, there are also specialization tracks available (e.g. math, data structures, graphs, etc.).

[3] Though be on the lookout for things like Goodhart’s law. Metrics should be indicators of success, but not replace the end goal itself.

[4] In the case of NOI, some of the trainees prefer printing and reading them on paper; the NOI organizers also take the extra step to ensure that the materials are printer-friendly and would look good on paper. While in college, I’ve noticed that some of my classmates also liked printing the lecture slides, so ensuring that the materials would be printed well will also be beneficial to those kinds of students.

[5] Of course, if you can manage to have both, even better!

[6] This can be alleviated a bit by uploading the recordings. Searchable transcripts or subtitles would be really helpful, though this requires some more work (using speech-to-text could help, but may need manual review depending on its accuracy).

Acknowledgments

Thanks to the following people for reading and providing feedback: Kevin, Lea, Martin, Vernon

--

--

Jd Dantes
The Faculty

Competitive coder. Developer. AI and computer vision enthusiast. Connect on twitter.com/jddantes