Computational Thinking & Coding Theorie: een framework voor het onderwijs

Welke cognitieve processen spelen een rol bij leren programmeren? Als we die vraag kunnen beantwoorden, weten we welke vaardigheden we bij leerlingen moeten trainen en hoe we programmeeronderwijs in kunnen richten. Ontwikkelingspsycholoog Eva Marinus ontwikkelde een eerste versie van een Computational Thinking & Coding Theorie. Ze hoopt op veel reacties, zodat de theorie verder vorm kan krijgen.

Sinds 2014 is in Groot-Brittannië computational thinking een verplicht onderdeel van het curriculum. Programmeren is daar een onderdeel van. “Dat is een politiek voordeel, maar eigenlijk ontbreekt ook daar nog steeds een goed didactisch model”, vindt Eva. “In Nederland hebben we deze politieke urgentie nog niet, maar we hebben nu wel PERL, zodat er gericht onderzoek gedaan kan worden naar hoe kinderen het best kunnen leren programmeren.”

Cognitieve processen
Ten tijde dat voormalig president Obama opriep tot ‘computer science for all’, omdat je jongeren daar ‘job-ready on day one’ mee maakt (State of the Union 2016), hield Eva zich in Australië bezig met leesonderzoek. ‘Moeten we iets met digital literacy’, vroeg ze haar Australische collega’s. ‘Goed idee’, was de reactie die ze van hen kreeg, ‘Australië volgt doorgaans vijf jaar later de ideeën van de UK op, dus dan weten we tegen die tijd mooi hoe we het moeten onderwijzen’. Inmiddels werkt Eva op een lerarenopleiding in Zwitserland. Wat ze jarenlang in het leesonderzoek gedaan heeft, doet ze nu voor programmeeronderwijs: begrijpen hoe kinderen leren programmeren en waarom sommigen dit moeilijk vinden. Een specifieke uitdaging hierbij is dat de meeste toekomstige basisschoolleraren zelf nog niet kunnen programmeren.
Eva vertelt: “Iedereen die start aan een lerarenopleiding kan al lezen en rekenen, maar niet programmeren. Daarnaast hebben we voor leesonderwijs de vaardigheden die nodig zijn heel goed in het vizier. Daarom weten we ook precies hoe we kunnen ingrijpen als het mis gaat. Er is nog geen model voor vaardigheden die relevant zijn bij het leren programmeren. Het enthousiasme om eindelijk eens vaart te maken met een structurele aanpak voor programmeeronderwijs is er, maar hoe kunnen we programmeren op de beste manier onderrichten? Welke cognitieve processen spelen een rol? Als we die vraag kunnen beantwoorden, weten we welke vaardigheden we bij leerlingen moeten trainen.”

Computational thinking
Computational thinking is een breed en lastig begrip waarvoor tientallen definities in omloop zijn. Eva is van mening dat pabo-docent Don Zuiderman een aantal jaar geleden al een goede en voor leraren werkbare blogpost schreef over computational thinking (http://donzuiderman.blogspot.com/2015/04/wat-is-computational-thinking.html). Zijn omschrijving:

  • Computationeel denken is een manier om problemen op te lossen
  • Door computationeel denken kun je de oplossing zo vertellen dat een computer het begrijpt (dus in kleine logische stapjes)
  • Computationeel denken bevat vaak de volgende onderdelen:
    • Goed nadenken over alle informatie
    • Informatie in logische stukjes verdelen
    • Een schema of tekening van de informatie maken
    • Informatie versimpelen
    • Mogelijke oplossingen bedenken en uitproberen
    • Oplossingen automatiseren door algoritmisch te denken (een stroomschema maken)
    • De oplossing algemeen maken en toepassen op soortgelijke problemen

Op weg naar een model
Volgens Eva zou het onderwijs geholpen zijn met een model, een soort framework waarbij de verschillende stappen die ondernomen moeten worden bij het programmeren expliciet gemaakt worden. Wat moet een kind allemaal doen om van een programmeeropdracht (e.g. ‘Teken een sneeuwvlok met acht takjes met de Logo schildpad’) tot een werkende programmeercode te komen? Daarom ontwikkelde ze de Computational Thinking & Coding Theorie (CTCT). Ze presenteert een concept en nodigt de deelnemers van de PERL-startbijeenkomst uit om hierop te reageren.

“Het model onderscheidt drie fasen”, legt Eva uit, “probleem oplossen, algoritmisch denken en programmeren. Het doel van de eerste fase is om het probleem te begrijpen en de oplossing vast te stellen. De output is een oplossing op hoog niveau. Bijvoorbeeld dat je je kunt voorstellen hoe een sneeuwvlok met acht takjes eruit ziet en dat je een voorbeeldtekening kunt maken op papier. In fase twee definieer je de oplossing op zo’n manier dat het  computationeel ingezet kan worden – dat het klaar is om omgezet te worden in code. Bijvoorbeeld, je beschrijft precies welke bewegingen, en in welke volgorde, de schildpad moet maken om de sneeuwvlok te maken (‘het algoritme’). Tot slot, in fase 3, zet je dit algoritme om in een programmeertaal. Bewustzijn van deze fasen helpt leraren om te achterhalen waar kinderen vastlopen: hebben ze het probleem niet begrepen (fase 1)? Kunnen ze het stappenplan van de oplossing niet nauwkeurig beschrijven (fase 2)? Of kennen ze de termen en regels van de programmeertaal nog niet goed (fase 3)?

Op een vraag uit de zaal over de drie fasen antwoordt Eva dat je er ook voor kunt kiezen een leerling direct de informatie of oplossingen uit de eerste twee kolommen te geven, zodat de leerling direct met de programmeertaal aan de slag kan gaan.
Een andere deelnemer vraagt of het verstandig is om jonge kinderen eerst een beeldtaal (block-based programmeertaal) aan te leren, om vervolgens met tekst-gebaseerde talen te gaan programmeren? Eva antwoordt dat dat niet per se hoeft, maar dat block-based programmeren de inspanning in fase 3 verlicht. Deze verlichting zorgt ervoor dat leerlingen zich dan meer en makkelijker kunnen richten op de vaardigheden in fase 1 en 2. De laatste vraag uit de zaal is of ‘debugging’ (de code verbeteren) een plek in het model zou moeten krijgen? Hierop antwoordt Eva dat het voorbeeld dat vandaag gebruikt werd (‘laat de schildpad een sneeuwvlok met acht takjes tekenen’) ook ingezet kan worden als een debugging-opdracht en dat dan dezelfde fasen van belang zijn.

Take home
“We hebben bij programmeeronderwijs te maken met een heel nieuw vak, waar ook pabo-studenten vaak nog niets van weten”, concludeert Eva. “We weten nog niet precies wat de onderliggende vaardigheden zijn. Daarom staan we voor enorme uitdagingen, de komende jaren.” Volgens Eva is het van groot belang dat deze vaardigheden goed gedefinieerd worden, zodat we ze kunnen aanleren aan pabo-studenten en in de nascholing aan de leraren die nu voor de klas staan. Ze draagt daar graag haar steentje aan bij.

Leave a Reply

Your email address will not be published. Required fields are marked *