Utrechtse studenten naar WK programmeren in Thaise badplaats
Vijf uur lang achter een computer algoritmische problemen oplossen en programmeren. Drie UU-studenten doen het voor hun plezier en wisten zich eind november te kwalificeren voor het WK in Phuket, Thailand.
In een hokje in het Koningsbergergebouw zitten Timon Knigge, student wiskunde en informatica, en Ragnar Groot Koerkamp, wis- en natuurkunde, rustig te overleggen achter hun laptop. Hier oefenen zij vaak urenlang programmeeropdrachten. Sinds de Utrechtse kampioenschappen in oktober vormen zij met masterstudent Mathemetical Sciences Harry Smit een team. “Harry ken ik sinds mijn 13de van de Wiskunde Olympiade’’, vertelt Ragnar. “Hij was afgelopen jaar op zoek naar een serieus team en kon zich toen bij ons aansluiten.”
Timon en Ragnar doen nu zo’n anderhalf jaar mee aan programmeerwedstrijden en niet zonder succes. Na een eerste plek op de Utrechtse kampioenschappen in september kwalificeerden zij zich voor de Benelux Algorithm Contest in Leiden. Daar werden zij met Harry tweede en bemachtigden een toegangsplek voor de Northwestern Europe Regional Contest in Linköping, Zweden. Door hier de derde plek te veroveren zullen zij het in mei in Phuket, Thailand, opnemen tegen de beste 127 teams van de wereld.
Het succes komt niet uit de lucht vallen, want het Utrechtse team heeft het afgelopen jaar niet stilgezeten. “Wij hebben het afgelopen jaar veel geoefend omdat we serieuzer wilden meedoen”, zegt Timon. “Er zijn gelukkig veel online archieven waar je oude opdrachten kan maken. Het handige hieraan is dat je de druk van zo’n wedstrijd kan nabootsen. We proberen de opdrachten dan binnen de maximale tijd van vijf uur te maken. Onze score kunnen we dan vergelijken met de uitslagen van de teams van toen.”
Gewapend met een kladblok en een computer zonder internet zitten zij bij wedstrijden vijf uur lang met alle deelnemers in een soort klaslokaal hun hersens te kraken over elf algoritmische problemen. Timon probeert simpel uit te leggen hoe zo’n opdracht in elkaar steekt. “De opdrachten zijn een soort verhaal waarin een probleem geschetst wordt. Een heel simpel voorbeeld: Je krijgt een kaart en moet de snelste route uitrekenen van punt A naar punt B. Onderweg zijn allerlei obstakels. Je maakt dan een programma dat het antwoord uit kan rekenen. Meestal zijn het complexe verhalen die je eerst moet versimpelen voor jezelf.”
De opdrachten bestaan dus niet alleen uit programmeren, maar er zit ook een element van begrijpend lezen in. “Als je het verhaal voor jezelf begrijpelijk hebt gemaakt, kan je de onderdelen gaan programmeren. De opdrachten hebben vaak meerdere lagen en de kunst is om deze aan elkaar te koppelen. Uiteindelijk vormen deze onderdelen samen het uiteindelijke programma. Het resultaat is een lange lap tekst met programmeerregels”, aldus Ragnar.
In het Koningsbergergebouw oefent het team vaak voor de wedstrijden. Foto: Eef de Groot
Na elke geslaagde opdracht krijgen de studenten een gekleurde ballon aan hun tafel vastgemaakt. Zo kunnen de andere deelnemers zien welke opdrachten de andere teams al klaar hebben. ”Buiten dat het een kleurig beeld oplevert, heeft het ook een tactisch voordeel”, zegt Ragnar. ”Als je veel teams met een groene ballon ziet dan weet je dat die opdracht makkelijk is. Als nog geen enkel team een bepaalde kleur heeft dan kan je er vanuit gaan dat het een moeilijke opdracht is. Deze sla je dan wat eerder over zodat je er later op terug kan komen.”
Wat maakt het programmeren nou zo bijzonder? “We hebben allemaal iets met algoritmiek”, zegt Timon. “Het is leuk omdat je problemen kan oplossen in kleine stapjes. De opdracht lijkt onmogelijk maar door een systeem te bedenken is er toch een antwoord te vinden. De opdrachten zelf zien we als een soort puzzel en het geeft veel voldoening als je die kan oplossen.”
De teamgenoten hebben allemaal hun eigen specialisatie. Timon en Ragnar doen vooral het programmeerwerk en Harry functioneert meer als een soort supervisor. Hij houdt het overzicht en controleert de opdrachten op typfouten. “Als we ergens niet uitkomen kan Harry meekijken”, legt Timon uit. “De problemen die je bij dit soort wedstrijden krijgt zijn van erg diverse aard, zo divers dat je merkt dat de één iets beter is in een bepaald soort problemen. In ons geval is Ragnar beter in de problemen met een wat meer wiskundige aard. Dat zijn de opdrachten waar je veel lastige wiskunde op papier moet doen. Ik ben wat beter in de wat zwaardere algoritmische problemen.’’
Het is heel intensief om vijf uur lang onder tijdsdruk bezig te zijn met de opdrachten, maar Ragnar voelt zich tijdens het toernooi niet vermoeid. “Ik ben op dat moment zo gefocust op de opdrachten, dat ik daar eigenlijk niet aan denk. Ik kan wel gefrustreerd raken, maar als het echt te veel wordt dan nemen we gewoon pauze. In Zweden was er bijvoorbeeld een extra ruimte waar je even wat kon eten en drinken. Daar gingen wij halverwege ook even zitten om tot rust te komen.”
Over hun kansen op het wereldkampioenschap is Ragnar vrij duidelijk. “We zijn nu derde geworden van de Noordwest-Europese teams, maar deze regio loopt eigenlijk achter bij de rest van de wereld. Vooral Rusland en China zijn altijd hele sterke landen. Ik denk dat het vooral te maken heeft met de traditie van een land. Deze landen hebben dit soort wedstrijden meer in hun cultuur zitten, want ze beginnen al op jonge leeftijd met olympiades. Ik doe nu pas anderhalf jaar serieus mee aan dit soort wedstrijden. In vergelijking met die landen hebben wij dus nog maar weinig ervaring.”
Wil je de resultaten van het Utrechtse team volgen? Kijk dan voor meer informatie op https://icpc.baylor.edu/.