Summer Competitive Programming: Austrailian Informatics Olympiad 2024

How AIO went last year!

We had an awesome time last year with all of our students who participated in the AIO. We had some big wins, like having some of our students receive Gold or Silver our first time participating. We also realized that there wan’t enough preparation. The best way to get better at something is practice, this year we’re creating a class option for students to spend more time with the material, and testing style. We hope this option is helpful for students who are new to competitions and would like to try AIO, or for students who have participated in other competitions and would like to learn about another competition. Check out our AIO Comp Prep course to learn more.

Table of Contents

  1. What is the AIO?
  2. Judging Format
  3. Contest Format
  4. Getting Registered
  5. Solving Problems
  6. Additional Resources

What is the AIO?

The AIO or Austrailian Informatics Olympiad is Australia’s version of the United State’s USACO contest: A nationwide programming competition for advanced high school students, which also serves as a qualifier for the International Olympiad in Informatics (IOI) for Australian students. Another similar contest is the CCC (Canadian Computing Competition), which shares a lot of similarities in format and difficulty. Luckily, all of these are open to students in any country to participate in and be recognized for their achievements!

Judging Format

AIO, like USACO and CCC, uses the “online judge” format. For each problem, competitors are given a scenario, often inspired by a real-world problem or decision process, and must write a program that accepts data about the scenario and determines one or more results or correct decisions based on it. The source code (written in Java, C++, or Python) is submitted to the online system, which automatically runs the program multiple times, each time with a different data set which should lead to a different answer. The program must run automatically, calculating results and making logical decisions without further input from the programmer. Points are awarded based on which ones the submitted program matches the expected answer. Time is also a factor – more efficient algorithms are expected for the harder problems, or else some of the runs of the program might take too long, and reduce the credit obtained for the program.

For example, the “Election II” problem from AIO 2022 requires the program to determine the results of an election based on a text-based vote count like “BAAACBAB”, for which the winner is A. The program must read in text like this from a file, count the letters, and compare the counts to determine a result. Each input text example is different, and therefore so is the correct winner.

This image has an empty alt attribute; its file name is image-1024x767.png
“Election II” problem explanation from the 2022 AIO Contest

Contest Format

The contest is taken over a 3-hour time period. It has Intermediate and Senior divisions based on grade level (up to grade 10 and 12, respectively), but these only affect awards recognition at the end; the test itself is the same. Like the CCC, the problems generally follow a progression of increasing difficulty, so even beginner students may be able to solve the first couple of problems, while experienced competitors will often be able to complete the first few very quickly and spend most of their time on harder problems. Students can work strategically over the course of a contest round, and come back to earlier problems to revise them if they only got partial credit on the first few tries.

The Australian Olympiad is given every August, which is very convenient for students whose preeminent national competitions (USACO, CCC, and ACSL) are not offered during summer break in the northern hemisphere. It’s a great way to stay sharp and build your programming skills over the whole year, and of course, an additional opportunity to receive recognition. This year, KTBYTE students will take the competition at 7pm US Eastern Time on August 28 (note that this is indeed August 29 in Australian time, the date you will see on the official website), so mark your calendars now!

Getting Registered

In order to participate in the AIO students must register through a registered school in order to participate in the live competition, so make sure to let us know as soon as possible if you’d like to participate with KTBYTE! You have a few options for participating in the AIO this year with KTBYTE:

  1. Enroll in the AIO Competition Preparation Class: This intensive class offers practice and preparation specifically for the AIO competition. AIO Comp Prep
  2. Enroll in the AIO Support Class: This class will guide students on how to participate in the AIO competition. AIO Support Class Link

Or email us at info@staff.ktbyte.com if you’d like to talk more about the competition.

If you’d like you can dive into the practice site right now, to get a sense of past contests and warm up your problem-solving skills. You’ll fill out a simple registration form at https://orac2.info/accounts/register/ and then access past AIO problems at https://orac2.info/hub/aio/ – you can also look at the list without logging in. Your login will let you submit multiple solutions, get used to using the interface of the website, and track your progress working through past problems for practice.

This image has an empty alt attribute; its file name is shutterstock_1874748328.jpg
Young man mobile developer writes program code on a computer, programmer work in home office.

Solving Problems

Working through problems requires the same skills as solving USACO, CCC, and ACSL programming problems. You’ll have to carefully think about the task given, break it down into logical steps, and implement them. Beforehand, you’ll want to review the specific way to read input and output in your programming language to be sure you can implement it correctly, so make sure to submit some practice problems early to make sure you’re learning the right approach! After the main implementation, you’ll want to think about what possible data sets could come up based on the problem description, and test and debug your program for several of them. For higher-level problems, you’ll need to also think about the efficiency of your approach – skills you can learn about in our USACO training classes, which apply equally well to the other national competitions.

We recommend using Java for most of our students since they are most familiar with it and it works well for competitions. If you haven’t already, install the Java JDK from https://www.oracle.com/java/technologies/downloads/ then install Eclipse from https://www.eclipse.org/downloads/. Next, there are a couple details to know about while implementing code in Java.

  1. When you submit a solution, it must use the “default package”, meaning that no package line appears at the top of your .java file. This is easily done by ensuring the package line is blank when making a “new class” in Eclipse or another code editor.
  2. You must read and write data to files named after each problem, such as “elecin.txt” and “elecout.txt” for the “Election II” problem (available on the practice site). Students who have taken our competition prep classes probably know a few methods to do this already, but in this contest, you don’t even need to memorize one! The website itself gives you a “template” you can fill in, such as https://orac2.info/problem/aio22election/attachment_in_browser/election.java for the “Election II” problem. If you plan to use it, make sure to study it and get to know how its classes and methods work before the contest. You may need to use String functions as well as Integer.parseInt in combination with this code. Remember, it’s also fine to use classes we’ve seen in KTBYTE classes like Scanner, StringTokenizer, or PrintWriter if you prefer them instead.
  3. The Java class you create for each problem must be called Solution and therefore must be saved in a file called Solution.java. This can make keeping an archive of your solutions a little confusing since all files have the same name! One easy way to handle this is to make packages labeled by the individual problem name, like “electionII”, and drag your completed solutions from the default package into the named one, once you’re finished testing and submitting your code to the website.

You’ll submit your practice solutions to the website via the “Submissions” tab above any problem listing. (It can be nice to open the submissions tab and the problem description separately, so you can look at the description while debugging and resubmitting multiple attempts.) You can upload a file, or perhaps even easier, you can copy your code from Eclipse and paste it into the website! Make sure to choose the correct programming language, such as Java, then press the submit button.

You’ll see a list of subtasks – sets of test cases with similar data, each of which is scored separately – and a bar next to each of them which the site fills in with color codes as your program is tested on each case. Like the CCC, you must get ALL test cases in a subtask correct to get credit for that subtask, but you can get partial credit on the overall problem with a program that works for some subtasks but not others.

If your results aren’t perfect right away, you’ll need to brainstorm more test cases and make sure your program is completely debugged. The later subtasks may also require higher-efficiency solutions. Refine it as much as you can, then move on to the next problem. Remember, problems 4-6 of any contest will be MUCH harder than 1-3, and very few students solve problems 5 or 6 in a given year, so don’t hesitate to go back through earlier years for additional practice, rather than trying to complete every single problem each time.

This image has an empty alt attribute; its file name is shutterstock_1441872740.jpg
Female programmer working in office

Additional Resources

Several activities can help you improve your competitive programming skills. KTBYTE classes include a competition prep course designed around the style of AIO testing and using previous AIO Problmes called AIO Comp Prep. Please contact us (info@staff.ktbyte.com) or sign up for a consultation about our courses or if you have more questions about participating in the AIO.

Contests are a great way to refine your problem solving ability and help push you to find more creative solutions with code. CCC, ACSL, and USACO vary in schedule and difficulty, but are all worthwhile to try! Leetcode, a general “online judge” problem site, is also a great resource – just make sure to filter the difficult to a level you can build from (https://leetcode.com/problemset/all/). And, the USACO website itself has a great listing of training resources, especially for more advanced students (http://usaco.org/index.php?page=resources).

And we’re off…

Good luck in your preparation and practice for AIO 2024, just a month or so away! Don’t forget to choose one of our registration options so we can make sure we order a test for you!

Remember, it’s okay to be anywhere from a beginner to a competition expert. Use this time to get a sense of the basics through the practice site, and you’ll be building your skills for the future, even if you find it difficult to start with! However, many of our students who have worked with our short-answer homework problems will find the first problem or two in the contest manageable, once you get used to the problem format.

Please contact us at info@staff.ktbyte.com with any questions or concerns!

Leave a Reply

Your email address will not be published. Required fields are marked *