I have competed both with Iowa State and Wisconsin-Madison in the NCNA region. I also have
observed the process at Waterloo. Typically schools will try to put together teams such that the
top three contestants are on one team, the next three on another, and then at some level
ultimately let contestants form mostly their own teams, as encouraging involvement is more
important than competitiveness at beginner levels.
Typically, some placement contest is run to rank competitors to determine the top teams. This is
a pretty good method, and with tools like
Kattis create contest, a high-quality contest can
be achieved with minimal effort. However, the variance in a single contest may be enough that
the top three competitors do not make it onto the same team. Waterloo and MIT often experience a
"second-best" team outcompeting their "top team" in the actual regional. Wisconsin has also
experienced this. This certainly suggests contest-by-contest variance and potentially that the
top three competitors did not make it onto the same team. Here is an alternative proposal:
- If teams are to be chosen by October 1st, 2021 for the 2021-2022 season, then those who
wish to be considered for a top team will be ranked by their maximum codeforces rating
attained from October 2nd, 2020 to October 1st, 2021.
- The proposed team formation is the top three form the top team, the next three the next top
team, probably the next three the third top team. The rest can be determined by other means.
Sometimes coaches like to take into account other information into team formation, which can be
understandable. One such idea would be to let students who place into a team hold their
placement
until the following year, as long as doing so does not force a more-competitive (by the above
metric) student in their final years of eligibility off the team. With the proposed metric, it
is
possible to compare competitiveness between years and estimate likely competitiveness of
incoming
students in their final years of eligibilty. For schools consistently sending a team to the
World
Finals each year, allowing students to use their final two years of schooling for eligibility
can
improve performance at the World Finals.
There are more strong advantages of the codeforces-based ranking:
- Codeforces rating is widely recognized as the universal metric of competitiveness in sport
programming. It is thus likely the case that this is the best way to rank students for team
composition. In particular, the proposed metric solves the variance issue with a single
placement test, since students can compete in contests all year. It also gets around issues
of logistics and comparing performance if multiple placement tests are run.
- By taking the maximum rating over the entire year, it is worth it for a student to compete
in as many codeforces contests as possible, since although your rating can go up or down
after each contest, your maximum rating can only go up. This is especially true if who the
current leaders are (or at least an individual's own ranking or codeforces profiles of past
years' contestants) is made known before teams are made. You can continue to compete to
climb the ranking, further encouraging more practice, which will lead to stronger
contestants.
- By limiting the maximum to over a single year, everyone is on even footing for team
placement in the following year's contest. This resets any "lucky" high ratings and
encourages more practice each year because likely the maximum attained in the previous year
is more than your current rating.
- By formalizing codeforces rating into the team formation metric, this gives a single
platform for students to practice together on. ICPC meetings can simply be getting together
in a school lab and all participating in the same codeforces contest. All the work of
problem design, writing solutions, and discussing solutions is offloaded to the platform
(though students can certainly also discuss solutions amongst themselves!). It also
encourages students to actively engage on the platform, by reading and writing blogs and
ultimately improving as contest programmers.