NZOI Camp 2022 Retrospective
While the Olympics only occur every four years, there are a number of Olympiad competitions which occur every year. The Olympiads are like an academic version of the Olympic games for high school students -- at the Mathematics Olympiad, for instance, participants compete against each other to solve six mathematics problems without a calculator in the shortest amount of time. Almost every subject (other than languages) seems to have an Olympiad, and new ones spring up fairly often -- the Economics Olympiad, for instance, started up in 2018. Olympiads offer capable students a powerful motivation and challenge to improve at their chosen field of study, and also often wind up fostering international relationships between educators as they collaborate on team selection and training methodologies.
The best Olympiad, of course, is the Olympiad in Informatics. The Olympiad in Informatics is a competitive programming contest wherein students write programs which solve problems within certain time and memory constraints. The kind of problems being solved are not too unlike the ones you might see on a site like LeetCode while practicing for a FAANG interview.
In addition to the International Olympiad in Informatics -- which is the big one everyone wants to win -- there are national Olympiads and other international programming contests held as well, which IOI contestants might also participate in during training. Here in New Zealand, the organization responsible for selecting the team to represent New Zealand at the IOI is called NZOI.
I became involved with NZOI at the beginning of 2021 through my alma mater. NZOI host three rounds of a competition called 'NZ Informatics Competition' and my initial job was to draft up questions which would be suitable for inclusion in one of their upcoming contests. The number of people writing questions for these contests is relatively low, and it's a difficult task both because it requires a decent level of programming expertise and because it's generally difficult to come up with a promising problem premise.
In reality, I spent a week teaching a group of five young high school girls how to program in C++. Another New Zealand organization called 'Programming Challenge 4 Girls', in an attempt to try and close the gender gap in computer science classrooms, runs an annual programming competition for young girls -- and last year PC4G and NZOI had teamed up to offer the winners of that contest a spot at NZOI's January training bootcamp. Traditionally, NZOI runs two bootcamp streams: Algorithms is for students who have a little bit of experience, and Experienced is for students who are quite good at programming and who've scored well on the three NZIC contests the year prior to camp.
The winners of PC4G were being invited to a new, third stream designed to get them into the pipeline earlier so that they would hopefully then go on to attend the Algorithms stream the following year. As I was available at the time, I was assigned the responsibility of looking after this group of students for the week, teaching them some programming, and (hopefully) inspiring them to continue improving.
Camp last year was hosted at Xero's main office in Auckland, and it was a phenomenal success. The girls all had a great time and did indeed go on to compete in NZIC. Three of them then made the cut to be admitted to the Algorithms stream of 2022, and one of them is doing astonishingly well.
This year, I was invited back to fulfil the same duty with this year's incoming group of girls. Due to uncertainty around COVID-19 the decision was made to eschew an in-person camp in favor of a virtual one. The Algorithms and Experienced streams were provided a Google Doc with a list of topics and problems to solve during the week camp would normally occur (8 January - 16 January) and I was free to decide on the best course of action for managing my group of girls.
We wound up having Zoom calls in the morning where I went over a topic in detail, and then I would assign the girls some problems to solve on NZOI's training website which we'd go over the following day. It was utterly exhausting. Last year I had developed a further sense of appreciation for teachers (if looking after my five students was difficult, I can't imagine a full classroom of thirty!) and the exact same thing happened this year as well -- it takes a lot out of you to teach to a screen of blank Zoom profiles and I shudder at the thought of having to do that day in and day out over the course of a lockdown. The main thing I found challenging was that I simply had no idea whether students were following along or if they were confused. Asking questions of the group felt like pulling teeth: whether it's shyness or something else, students do not engage on Zoom.
The most annoying thing about teaching on Zoom is when you ask a question, and then are left hanging awkwardly. Are the students thinking about the question, and just need another 10-20 seconds to think of an answer? Or is no one going to answer the question, and therefore should I just move on? It's impossible to tell.
Aside from that, the week was superb and I thoroughly enjoyed it. The girls did warm up eventually and felt comfortable asking me questions, and they also got on calls with each other during the day to screen share and work through problems together. I think I did still prefer last year -- being able to see when people are stuck beats awkwardly waiting for someone to muster the courage to message me on Discord -- but the group as a whole managed the content we covered well, and solved a ton of programming problems on the training site.
One of the initiatives we've started is to get all of the girl groups connected with each other so they can learn off one another. They're all in one Discord server now (as opposed to each group having its own Discord), and I'm hoping that they'll all gel well together and motivate each other to continue improving. The digital camp also exacerbated how I felt about some of the limitations of NZOI's training site -- given that it has been built by various volunteers (most of whom are not software engineers) over 10+ years it is an impressive work of engineering, but there are a number of rough edges in the user experience that I'm motivated to work on right now. To that end, I've been building a Discord bot which integrates with the training site and I'm also working on an alternative frontend (more on that in another post). If you're interested in experimenting with it, I've got a GitHub repo that contains an npm package for interfacing with an undocumented XML API they have.
I'm hopeful I'll be invited back next year to manage the 2023 group of girls. Teaching high schoolers how to program is quite far out of my field of expertise, and I find it a very interesting challenge. Prior to then, however, I've been selected by NZOI as the leader of their European Girls' Olympiad in Informatics (held in October this year over in Turkey) team, and so I'll be busy working on that first.
Thanks NZOI for providing me with such a fantastic opportunity to help improve the gender balance in IT and share my skills with others.