Nederlandse Informatica Olympiade
De Nederlandse Informatica Olympiade (NIO) is een programmeerwedstrijd voor leerlingen uit het voortgezet onderwijs. De vier winnaars worden uitgezonden als deelnemers aan de Internationale Informatica Olympiade. Die wordt elk jaar door een ander land georganiseerd. De Nederlandse wedstrijd zelf bestaat uit een aantal rondes. De NIO wordt georganiseerd door de Stichting Nederlandse Informatica Olympiade in samenwerking met de volgende partijen:

 Christelijke Hogeschool Windesheim
 Eljakim Information Technology
 Technische Universiteit Eindhoven
 Universiteit Leiden
 Universiteit Twente

Rondes
De deelnemers van het team dat naar de internationale olympiade gaat, worden in drie rondes gekozen:

Ronde 1 
De eerste ronde is een ronde die door de deelnemers thuis gemaakt wordt. Deze ronde bestaat uit meerdere opgaven. In 2017 bestond de olympiade uit iets meer dan tien opgaven. De opgaven mogen in elke willekeurige programmeertaal geschreven worden. De oplossingen moet voor medio januari via het internet ingezonden zijn.

Ronde 2 
De beste deelnemers uit de eerste ronde worden uitgenodigd om mee te doen aan de tweede ronde. De tweede ronde wordt altijd op een zaterdag gehouden in een van de technische universiteiten van Nederland. De opgaven bij de tweede ronde zijn moeilijker dan de opgaven van de eerste ronde. De opgaven van de tweede ronde bestaan altijd uit deelopgaven die proberen om je naar een oplossing toe te leiden.

Ronde 3 
De beste deelnemers uit de tweede ronden worden uitgenodigd om een scholing te volgen. In deze scholing worden geavanceerde algoritmes en datastructuren behandeld. Deze scholing wordt altijd op het kantoor van Eljakim IT gegeven.

Na afloop van de scholing wordt op de derde ronde gehouden. De opgaven van de derde ronde zijn iets eenvoudiger dan de opgaven van de internationale eindronde.

De beste vier leerlingen uit de derde ronde worden uitgenodigd om mee te gaan naar de internationale eindronde. Voorafgaand aan hun vertrek vindt er nog extra begeleiding en training plaats om iedereen goed voor te bereiden op het internationale niveau.

Opgaven
De deelnemers moeten programma's schrijven om problemen op te lossen. Het gaat hierbij om het zo efficiënt mogelijk schrijven van algoritmes. In de eerste en tweede ronde zijn hiervoor verschillende talen te gebruiken, in de finale wordt men beperkt tot C(++) en Pascal. De programma's moeten meestal lezen van één of meerdere invoerbestanden met de extensie .in en één of meerdere uitvoerbestanden schrijven met de extensie .uit. De broncode moet ook altijd worden ingeleverd. In sommige rondes zijn er opgaven waarvoor alleen een uitvoerbestand moet worden ingeleverd. Men laat de keus dan open om hiervoor een programma te schrijven of met de hand het uitvoerbestand te maken. Typische opdrachten houden problemen in die te maken hebben met grafen, woorden, getallenpuzzels, spellen en figuren.

CodeCup
Een van de opgaven van de eerste ronde houdt in dat er een programma wordt geschreven dat aan de CodeCup deelneemt. Er worden dan punten toegekend voor het deelnemen, en voor de einduitslag, en er worden strafpunten toegekend voor de fouten die het programma maakt. De CodeCup is altijd een spel waarbij twee of meer programma's tegen elkaar spelen.

Externe links
 Officiële site 
 CodeCup
 UNESCO
 Trainingsprogramma van de Verenigde Staten

Programmeerwedstrijd