Deze computerwetenschapper doet een voorzet voor écht programmeeronderwijs

Johannes Visser
Correspondent Onderwijs
Foto: Teska Overbeeke

Moeten alle kinderen in het basisonderwijs leren programmeren? Deze computerwetenschapper denkt dat kinderen iets heel anders nodig hebben.

Dit schooljaar schrijf ik over onderwijstechnologie. Momenteel ben ik bezig met een groot verhaal over programmeeronderwijs. Daarvoor spreek ik verschillende deskundigen, belanghebbenden en betrokkenen.

Het gesprek dat ik met hoogleraar computerwetenschappen Peter Sloot had, deel ik graag met jullie. De hoogleraar computerwetenschappen is verbonden aan de Universiteit van Amsterdam, NTU Singapore en ITMO St. Petersburg en laat zien dat er heel ander onderwijs nodig is.

Er dat alle kinderen in het basisonderwijs zouden moeten leren programmeren. Volgens de industrie kan je er niet vroeg genoeg mee beginnen. Wat zou u aanraden?

‘Als de geschiedenis ons iets geleerd heeft, is het dat we absoluut niet kunnen voorspellen wat voor beroepen we over tien jaar nodig hebben. Eenieder die denkt daar iets zinnigs over te kunnen zeggen, kun je wat mij betreft negeren.’

De veranderingen in de computerwetenschap

Dan kan ik 90 procent van de mensen die ik interview negeren. Wat is er in die tien jaar binnen uw vakgebied veranderd?

‘Je moet het omdraaien: wat is er niet veranderd? Tot dertig jaar geleden moest je alles zelf programmeren. Als je een letter op je scherm wilde hebben, moest je die bij wijze van spreken eerst helemaal uittekenen. Dat hoeft allemaal niet meer, dat soort software is inmiddels diep geïntegreerd in de apparaten die we gebruiken.’

Wat steeds belangrijker wordt, is het gestructureerd uit elkaar trekken van complexe problemen

‘Dat is relevant omdat het betekent dat je je op een veel hoger niveau met problemen kunt bezighouden. Dat is ook nodig, want de wereld wordt steeds complexer en dan kun je je niet permitteren je met dat soort basale functies bezig te houden.’

‘Als je vraagt: wat hebben we in de toekomst nodig? Dan kun je dus niet zeggen: we moeten allemaal leren programmeren. Dat is een heel specifieke expertise. Wat steeds belangrijker wordt, is het gestructureerd uit elkaar trekken van complexe problemen zodat je ze uiteindelijk in de computer kunt nabootsen: computational thinking.’

Het verschil tussen programmeren en computational thinking

Programmeren en computational thinking worden vaak door elkaar gebruikt. Of er wordt gezegd: door te leren programmeren, leer je computational thinking. Wat is het verschil tussen de twee?

‘Het is goed om te weten dat veel ‘computational thinking’ gewoon zonder de computer gaat.’

Computational thinking begint altijd bij een groot probleem, zeg: diabetes. Of je diabetes krijgt heeft te maken met hoe je genetisch in elkaar zit, met je immuunsysteem, met wat je eet, met je afkomst, met je sociale netwerk, en het kan zelfs te maken hebben met wat je verdient.’

‘Dan kan je met z’n allen roepen dat het complex is en vervolgens wat anders gaan doen.’

‘Je kunt ook denken: laat ik dat probleem in stukken breken. Dat uit elkaar trekken van het probleem is de eerste stap van computational thinking.’

‘Vervolgens zoek je naar patronen die mogelijkerwijs een oorzakelijk verband aangeven. Bijvoorbeeld de relatie tussen suikerinname, erfelijkheid en psychische stress als gevolg van financiële zorgen. Als je die hebt gevonden, zeg je: nou, dan weet ik dus dat ik kan vermoeden dat ik - afhankelijk van mijn genetische achtergrond - diabetes ontwikkel, als ik meer dan zoveel suiker en vet eet en minder dan zoveel beweeg.’

‘De kunst is nu om die patronen om te zetten in rekenregels. Daar zijn wiskunde, algoritmiek en logica voor nodig. Vervolgens komt het moment dat je wat je uit elkaar hebt getrokken weer in elkaar moet zetten. Dat gebeurt door die rekenregels in de computer te programmeren, want inmiddels is het zo complex geworden dat je het niet meer uit je blote hoofd of met pen en papier kunt doen.’

‘Ten slotte test je met bekende informatie en data of je programma klopt. Pas dan ben je klaar om echte voorspellingen te gaan doen met de computer. Stel nou dat ik 100 gram suiker per dag meer binnenkrijg, is dat dan wel zo erg als ik per dag ook 15 kilometer ren?’

Wat je dan over het hoofd ziet

Daarover zegt technologiedenker Evgeny Morozov: leuk dat we een oplossing bedenken met een computer, maar daarmee simplificeer je het probleem eigenlijk zo dat je het probleem verdraait omdat het anders niet in jouw manier van oplossen past.

‘Dat is natuurlijk een beetje waar. Dat zal op veel plaatsen zeker gebeuren, want je bent bezig de wereld te vereenvoudigen: uiteindelijk probeer je ‘m in de computer te krijgen.’

‘Neem dat diabetesvoorbeeld: toen we daarmee begonnen, gingen we naar artsen om ze te vragen naar oorzaken van diabetes. Die zeiden: dat is veel te ingewikkeld om allemaal te benoemen, maar je moet zeker hier- en hier- en hieraan denken. Vervolgens gingen we naar medisch-antropologen, naar sociologen en naar patiënten met dezelfde vraag. En die bleven maar zeggen: je bent dit en dit vergeten, je maakt het te simpel.’

‘Maar op een gegeven moment, en dat kostte ons een jaar, zeiden ze: ja, nu heb ik alles wel gezegd wat ik wilde zeggen. Misschien hebben we iets over het hoofd gezien, dat kan altijd.’

Zo’n robotje is natuurlijk ook leuk. Niet om ze te leren programmeren, maar om de angst voor techniek weg te nemen

Terug naar het onderwijs. Hoe zouden we kinderen computational thinking aan moeten leren?

‘Ik denk dat je op de lagere school veel beter puzzelspelletjes met kinderen kunt spelen en ze kunt laten zien hoe leuk het is om ingewikkelde problemen op te lossen. Daar kan je computers bij gebruiken, maar dat is een detail.’

‘Stel dat je een huis wilt bouwen. Dan zeg je tegen die kinderen: hier heb je een gebied waar we een huis gaan bouwen met z’n allen. Dan praat je daarover. Waar moet het staan? Moeten er wegen naartoe leiden? Hoeveel kamers moet het huis hebben?’ Waar komt het riool, stroom, water?’

‘Zo leren ze dat dingen met elkaar verweven zijn: dat de keuze over waar je de badkamer plaatst belangrijk is voor de keuze waar je de slaapkamer plaatst.’

‘Zo leren ze dus met elkaar gestructureerd na te denken over een probleem. Dat kan je helemaal doen zonder dat je het huis gaat bouwen, zonder dat je zelf gaat metselen en solderen. Je kan er computers bij gebruiken, maar dat hoeft niet per se.’

De spelletjes voor kinderen die ik heb gezien om computational thinking aan te leren, gaan juist niet over die grote problemen. Ze leren kinderen instructies te geven, bijvoorbeeld aan een robot die die instructies dan uitvoert. Zijn we dan het verkeerde aan het aanleren?

‘Ja, dat denk ik echt. Misschien vloek ik nu in de kerk, maar ik denk dat het onzin is om kinderen aan te leren hoe een robotje van A naar B komt. Zoals je kinderen nu niet meer hoeft aan te leren hoe je dat lettertje op het scherm krijgt, zo zijn de stapjes van die robot over vijf of tien jaar al ingebouwd zodat je daar niet meer over na hoeft te denken. Dan zeg je gewoon: als mijn robot vandaag gelukkig is en de zon schijnt dan loopt hij van A naar B, en dan doet hij dat vanzelf.’

‘Dat wil niet zeggen dat die programmeervaardigheden er niet meer zijn, maar die leer je later wel als je daar toevallig in geïnteresseerd bent - net zoals je nu nog steeds na kunt denken over waar je die letter in het scherm zet.’

‘Spelen met zo’n robotje is natuurlijk wel leuk. Niet om ze te leren programmeren, maar wel om de angst voor techniek weg te nemen. Mijn grootmoeder was bang voor de afstandsbediening, dat moeten we zien te voorkomen. De toekomst is digitaal, of we nu willen of niet.’

Lees ook: