I have a question! Who do I ask?

First, you should check whether your question is answered in this FAQ. If not, you can either ask on our Facebook Page at https://www.facebook.com/hkoi.org, or you can send an email to our email address. You may also browse our website to see whether relevant information is available.

What should I do to prepare for HKOI?

There is no short answer. Read everything here, in this website. For the Heat Event, past papers would help you get a feel of what HKOI requires. Once you qualified for the Final Event, you will receive access to the HKOI Online Judge where you can practice coding.

Will knowledge of flash/web design/linux/networking/etc be useful for HKOI?

In general, the more you know about computers, the better. But keep in mind that the main scope of HKOI is on programming, problem solving, and data structures and algorithms.

Will knowledge of mathematics be useful for HKOI?

Computers work with numbers. That is why mathematics, especially discrete mathematics, is tested in the HKOI.

I am 15 years old. Can I compete in the Senior Group?

Yes. We do not impose minimum age restrictions.

Is school uniform required?

No. We do not require contestants to wear school uniform. However, some schools may require students to do so. Consult your teacher when in doubt.

What will be the format of the heats/finals event?

For the heat event, the format will be that of a written paper. The paper will probably contain both multiple choice questions and fill in the blanks questions. You will not be asked to write long programs in the heat paper. For more details, see the past problems.

For the final event, you will be given 4-5 programming tasks, and you will be required to write solutions (complete, compilable programs) on a computer and hand them in a soft-copy format. The exact method of submitting solutions may vary, please consult the instructions on the Final Event page for details, or you may ask on our Facebook Page. The finals papers for previous years are also available in the past problems page.

Will my results in the heats event be counted towards my final result?

No. Only the results of the finals event is counted towards medals. Of course you will need to “pass” the heats in order to be eligible to enter the finals event. The main reason why HKOI holds a heats event is because we have hundreds of participants every year, and there are not enough computers for that many people in a single competition venue. The objective of the written paper of the heats event is to select participants with potential ability to do well in the finals event.

Do I need to know the ___ algorithm to get a good result?

You may find the syllabus here.

For Junior Group, we expect contestants to have a good command of the language of choice (Pascal/C/C++), familiarity with basic loops, strings, arrays, input/output, and other basic language features. We also expect a good sense of mathematics and problem solving skills. Knowledge of basic algorithms such as sorting (bubble sort, insertion sort), searching (linear and binary search), basic data structure such as queues, stacks, etc, and basic techniques such as enumeration and countingwill also be useful. Of course, knowledge of other advanced algorithms will be a definite advantage.

For Senior Group, in addition to the requirements for Junior Group, contestants are expected to have an understanding of exhaustive and optimization techniques, basic graph theory, recursion, and other advanced programming techniques. (We may also require certain discrete mathematics topics covered DSE Mathematics (Core). However, topics such as dynamic programming, advanced graph theory, advanced depth first search, breadth first search, various heuristics searches, advanced data structures such as heaps, hashes, etc. will not be required (although knowledge of such will be an advantage), as they will be covered in our training sessions. The programming tasks of the Senior Group paper is usually more demanding than that of the Junior group.

Don’t worry if you have never heard of the names of the algorithms above. Many of our trainees (and trainers also!) had never heard of the algorithms above when they first participated in HKOI, and did well nevertheless with their problem solving skills and general programming techniques. There are usually many ways to get some score in a finals task, and usually the aim of the task is not just to test for knowledge in particular algorithms, but whether contestants are able to “solve” a given problem, even though the solution by the participant may not be a perfect solution. Many times, a partial solution using simple algorithms is more effective than blindly applying “advanced algorithms” because the former is usually easier to write and less complex. Remember that we are not concerned with the method you use to solve a given task, but whether the solution works (see the question on scoring/judging). A “full” solution that uses the correct idea but wrong in implementation is worth zero score, but a partial solution that works in some select cases may get a score. If you want to get a feel of the questions, refer to the final papers of recent years. If you have difficulties, you may always ask on our Facebook Page.

How are problems judged in the finals event?

Unlike most other programming assignments / exams that you may have taken before, we are not concerned with how you write your program. In fact, for the purposes of judging your program, we do not even look into your program source code at all. Instead, we run your program through several (normally 10-20) test cases. (so-called “Black-box testing”)

For each test case, some input is given to your program, and the output of your program is compared to the correct output. Remember that the output of your program must exactly correspond to the format specified in the task description, otherwise you will receive zero score for that task. In particular, please note that this applies to whitespace and line breaks as well.

There usually will be (at least) a few test cases that tests whether your program runs correctly in boundary cases, or on large data sets. Sometimes boundary cases may require special handling. If you want to get a high score in a task, make sure you cater for these cases as well.

If you understood the judging process that we have outlined above, you might have already noticed that you do not have to spend excessive time writing comments, or making the source code “beautiful”. Our advice is to use shorter variable names, less comments (most people get away with writing no comments at all), and anything that would save you time in typing the code, unless you feel those measures are neccessary for you to understand your program or to debug possible errors.

What will happen if I get a medal in HKOI?

In that case, congratulations! You get a certificate for your result, and a trophy during the prize presentation ceremony. More importantly, you will be invited to join the HKOI training team and participate in our training activities. You may also be eligible to participate in the Team Formation Test (see below) which will select Hong Kong delegates to external competitions.

Do I have to participate in all training sessions? Will attendance be taken?

Attendance to training sessions is not compulsory. We believe that our members have the ability to make informed and rational choices on whether or not to come. We provide the trainings not only to train potential Hong Kong delegates, but also in the hope that our trainings will be inspiring and interesting to those who choose to attend. Most trainees attend our trainings not because they are “obligated” to do so, but instead because they find our trainings useful, informative, and fun.

And don’t forget that although the attendance is not compulsory, the topics covered are highly relevant to our selection tests and the external competitions (eg. NOI/IOI). If you do aim to participate in these competitions, it is strongly recommended that you attend our trainings as often as possible.

What is the IOI? NOI?

The International Olympiad in Informatics (IOI) is the “ultimate” programming competition for secondary school students. It is held annually, usually in the summer of the year. Participating countries all over the world will each send a maximum of four delegates to the competition. The event will be hosted in a different country every year. You can find more information in the IOI Official website.

The National Olympiad in Informatics (NOI) is the national equivalent of HKOI. The purpose of the NOI is to select Chinese students into the Chinese training team, which sends students to the IOI the following year. Provinces, major cities and regions (eg. Hong Kong, Macau etc) may send a delegation team. Starting from NOI2006, the maximum delegation size is five competitors, one of which must be female. The event is held in different cities each year, including in Hong Kong for NOI 1997. You can find more information in http://www.noi.cn

How can I participate in external competitions such as the IOI?

We hold Team Formation Tests (TFT) to select delegates to NOI, IOI and other competitions, usually between late April and early May. HKOI training team members, who hold the Hong Kong Permanent Identity Card, are eligible to participate in the TFT. Usually the result of the TFT is conclusive to the team selection, but we may also consider other aspects of the candidates (e.g. HKOI results, participation, attendance and conduct).