SCHOOLROOSTERS ONTWIKKELEN
SOFTWARE ONTWIKKELAAR
Welke opleiding heb je afgerond en waarom heb je voor deze opleiding gekozen?
Ik ben begonnen met twee studies, wiskunde en informatica, omdat ik beide interessant vond. Omdat de studies veel overlap hebben, moest ik maar een paar vakken extra doen in het eerste jaar. Uiteindelijk heb ik na het eerste jaar gekozen voor wiskunde: ook binnen de informatica speelt wiskunde een belangrijke rol, maar de studie wiskunde gaf de mogelijkheid om daar verder in te verdiepen. Doordat je in je derde studiejaar ook een minor (vrije keuzevakken) mag kiezen, heb ik uiteindelijk naast mijn wiskundestudie ook heel veel informaticavakken gevolgd. Ik ben achteraf blij met deze keuzes, omdat ik in mijn werk veel met informatica doe en door mijn studie over een sterke wiskundige basis beschik.
In welke sector werk je en kun je wat meer vertellen over het bedrijf/instantie waar je werkt?
Ik werk voor een bedrijf dat software ontwikkelt waarmee scholen hun roosters maken. Naast het maken van de software leiden we ook roostermakers op en adviseren we scholen bij het maken van de roosters.
-
Software is in feite een manier om een computer te laten doen wat jij wilt. In de kern is een computer gewoon een hele grote rekenmachine die zo is gebouwd dat wij hem opdrachtjes kunnen geven. Een heel simpel voorbeeld: stel dat je computer alleen kan optellen en aftrekken. Je kan dan zelf een softwareprogramma schrijven waarmee je de computer kan laten vermenigvuldigen. Je softwareprogramma vertelt de computer bijvoorbeeld dat hij 6 keer het getal 2 bij elkaar moet optellen om de vermenigvuldiging 6 x 2 = 12 uit te voeren. Nu kan je computer dus ook vermenigvuldigen en vanaf hier kan je weer nieuwe software schrijven om de computer allerlei ingewikkelde dingen te laten berekenen. Bijvoorbeeld een rooster van een school!
Kun je beschrijven wat voor werk je nu doet?
In eerste instantie ben ik softwareontwikkelaar, dat betekent dat ik met mijn collega’s de software schrijf waar klanten vervolgens gebruik van maken. Wij programmeren dus softwareprogramma’s waarin de computer automatisch een goed rooster voor een grote school probeert te bedenken.
Daarnaast ben ik nu ook hoofd van het ontwikkelteam. In die rol ben ik onder andere verantwoordelijk voor de samenhang tussen onze verschillende softwareonderdelen, en het zorgen dat we met de ontwikkelaars op een consistente manier werken. Ten slotte denk ik mee over de langetermijnplannen: wat gaan we de komende jaren maken en hoe gaan we dat doen? We maken keuzes uit onze eigen ideeën en de wensen van klanten om uiteindelijk het product zo goed mogelijk bij de wensen te laten aansluiten.
Kun je een rooster niet gewoon met de hand maken?
Bij simpele roosters kan dat en werd het vroeger ook zo gedaan, maar naar mate scholen meer eisen stellen aan de roosters wordt dit (praktisch) onmogelijk. Onze software gebruikt verschillende technieken om het roosteren makkelijker te maken. Een voorbeeld hiervan is het zogenaamde “clusteren”. Stel: je probeert de vierde klas te roosteren. Je probeert dan een groep van 30 leerlingen natuurkunde te maken die allemaal geen muziek hebben, en ook een groep frans waar geen leerlingen in zitten die in die natuurkunde of muziek groepen zitten. Als dit lukt, dan kun je natuurkunde, muziek en frans op hetzelfde uur inroosteren, omdat je weet dat er geen overlap is tussen de leerlingen. Zo’n groepje lessen zonder overlap in leerlingen noemen we een clusterlijn. Onze software probeert de hele jaarlaag in bijvoorbeeld zes verschillende clusterlijnen te stoppen. Je hoeft nu slechts een rooster te maken voor zes clusters in plaats van bijvoorbeeld 40 losse groepen door elkaar. Dat maakt het probleem natuurlijk een stuk eenvoudiger!
Wat is er zo moeilijk aan een cluster maken?
Wat het maken van een cluster ingewikkeld maakt is dat er een onvoorstelbare hoeveelheid manieren is om leerlingen in groepjes te stoppen, maar er zijn maar heel weinig manieren om dit te doen waarbij de leerlingen niet overlappen. Bovendien zijn er meer zaken waar rekening mee gehouden moet worden, bijvoorbeeld de docenten die de lessen geven. Docenten geven weer aan meerdere jaarlagen les en bovendien zijn sommige docenten niet op school op bepaalde dagen. Een goed rooster maken met clusters kun je daarom zien als het maken van honderden puzzels tegelijkertijd die ook nog eens allemaal van elkaar afhankelijk zijn. Het is dan wel zo prettig dat de computer dit allemaal voor je uitrekent. Computers verwerken namelijk duizenden berekeningen tegelijkertijd.
Hoe gebruik je wiskunde in je baan?
Wanneer het lukt om alle lessen met behulp van de clustertechniek in het rooster te plaatsen, dan zijn we nog niet klaar. We gaan dan proberen individuele lessen zo te verplaatsen om het rooster uiteindelijk zo goed mogelijk te maken. Om te bepalen hoe goed een rooster is maken we gebruik van een systeem met strafpunten. Als je rooster niet voldoet aan bepaalde wensen of eisen, dan zeggen we dat het rooster een bepaalde hoeveelheid strafpunten krijgt, bijvoorbeeld: 10 omdat een leerling te veel tussenuren heeft of 1000 als een docent moet lesgeven op een dag dat hij vrij is. Al deze strafpunten worden dan bij elkaar opgeteld, waardoor ieder mogelijk rooster een score krijgt op basis van de strafpunten. Het rooster met de minste strafpunten wordt vervolgens gebruikt.
Er zijn echter zo veel mogelijkheden om lessen in het rooster te zetten, dat je nooit kunt weten of het rooster waar je naar kijkt de beste optie is (dit heet een NP-probleem). Er zijn echter verschillende wiskundige methoden om vanuit een bepaalde oplossing te werken richting een verbetering, en na genoeg verbeteringen komt er uiteindelijk een rooster uit waar hopelijk de hele school blij mee is.