Computational Thinking is een begrip waar je steeds meer over leest, en waar wij eerder ook al over schreven. Daarbij zijn de bedoelingen vaak goed, maar zijn er ook veel misvattingen. Een van de grootste problemen is misschien wel de inhoudelijke kant: want uit wat voor vaardigheden bestaat Computational Thinking nu? En op wat voor manier kun je als docent dit aan leerlingen leren?
Wat is Computational Thinking eigenlijk?
Een van de lastige dingen aan het begrip ‘Computational Thinking’ is dat er eigenlijk geen mooie Nederlandse vertaling voor bestaat. Hierdoor ontstaat er al snel verwarring: gaat het over ‘denken als een computer’? Letterlijk vertaald zou je kunnen zeggen dat het ‘berekenend denken’ heet, en eigenlijk past dat wel het beste bij het begrip. Computational thinking is namelijk een set aan verschillende denkvaardigheden die helpen bij het oplossen van een probleem. Daarbij is het anders dan ‘problemen oplossen’ of ‘creatief denken’, waarbij er een stapsgewijs proces is. Bij Computational Thinking gaat het eigenlijk om verschillende soorten vaardigheden die je, apart van elkaar, kunt ontwikkelen.
De 5 vaardigheden binnen Computational Thinking
Er is steeds meer te vinden over Computational Thinking, en dat houdt ook in dat er verschillende visies zijn op wat de vaardigheden binnen Computational Thinking precies zijn. Over het algemeen komen daarbij de volgende 5 denkvaardigheden altijd terug:
- Abstractie: de vaardigheid om te bepalen welke informatie belangrijk is en welke informatie juist genegeerd kan worden.
- Generalisatie: de vaardigheid om een oplossing te bedenken die algemeen is en werkt op verschillende problemen.
- Decompositie: de vaardigheid om een complex probleem ‘in stukjes te hakken’, zodat het beter te begrijpen en op te lossen is.
- Algoritmisch denken: de vaardigheid om een stappenplan te bedenken om een probleem op te lossen
- Debuggen: de vaardigheid om fouten op te sporen, te verwijderen en/of op te lossen
In sommige gevallen zijn deze verschillende vaardigheden weer opgedeeld, of zijn er nog meer verschillende vaardigheden bij bedacht. In de kern komt het echter altijd neer op deze termen.
Hierbij valt ook meteen iets op: deze vaardigheden hebben eigenlijk maar weinig te maken met digitale middelen. Want hoewel Computational Thinking vaak gelijkgesteld wordt aan programmeren heeft dit eigenlijk niet veel met elkaar te maken. Daarbij zijn de denkvaardigheden ook belangrijker dan alleen maar ‘voor computer les’: Computational Thinking is juist toepasbaar binnen elke context.
Maar wat moeten leerlingen dan kunnen?
Leuk, die begripsverheldering, maar dat maakt nog niet dat het iets is waar je direct met leerlingen mee aan de slag kan. Want wanneer kun je spreken van systematisch werken aan deze denkvaardigheden? En op wat voor doelen moet je dan richten? Het lastige is dat hier, op dit moment, nog niet een compleet uitgewerkt curriculum voor is. Er zijn wel een aantal interessante aanzetten, die helpen bij het denken hierover. Vanuit het ontwikkelteam Digitale Geletterdheid van Curriculum.nu is er een leerlijn, net zoals vanuit het SLO. Deze zijn erg uitgebreid, maar daarbij ook complex: het zorgt al snel dat in alle complexiteit de samenhang ontbreekt. Handiger is om daarom de volgende richtlijn te gebruiken:
Abstractie: Leerlingen kunnen een model of representatie maken om daarmee een probleem op te lossen. Bijvoorbeeld door het maken van een simulatie.
Generalisatie: Leerlingen proberen een eerdere oplossing voor een nieuw probleem, en bedenken hier variaties op om zo het huidige probleem op te lossen.
Decompositie: Leerlingen kunnen een complex probleem opdelen in eenvoudigere subtaken en/of bedenken een oplossing door verschillende losse onderdelen samen te voegen.
Algoritmisch denken: Leerlingen kunnen verschillende stappen bedenken om een probleem op te lossen, en deze stappen in de juiste volgorde zetten. Daarbij kunnen ze beslissingen nemen op basis van ‘condities’: als dit, dan dat. Later kunnen ze ook meer rekening houden met verschillende variabelen.
Debugging: Leerlingen herkennen wanneer een oplossing niet goed werkt en daarbij de fouten opsporen, verwijderen en/of opsporen.
Complexe vaardigheden in complexe opdrachten
Deze doelen zijn algemeen en eigenlijk door elke leerlingen binnen zijn/haar niveau in te vullen, van kleine kinderen tot 6 VWO’ers. Dat is ook precies de bedoeling: het zijn denkvaardigheden waar je eigenlijk nooit in uit-geoefend bent. De manier van aanbieden is daarbij ook belangrijk: het meeste resultaat lijkt het op te leveren wanneer er een ‘holistische aanpak’ gekozen wordt: complexe opdrachten waarin de ruimte is om alle vaardigheden te gebruiken. Wanneer je alle vaardigheden namelijk los gaat oefenen, dan raken leerlingen niet bekwaam in ‘computational thinking’, maar alleen in de deelvaardigheid. Hierdoor mist de samenhang en levert het op termijn minder op.
Het gebruiken van ‘echte’ problemen, projecten of thema’s helpt hierbij: het zorgt dat leerlingen meer gemotiveerd zijn en binnen een complexe opdracht werken aan computational thinking. En dat kan ook goed bij een maatschappij-vak!
Wat moeten docenten kunnen?
Om als docent aan de slag te gaan met Computational Thinking is het wel handig als je bepaalde basiskennis en vaardigheden hebt. Dit is dan ook een fout die vaak gemaakt wordt: docenten gaan enthousiast aan de slag met Computational Thinking, maar komen er al snel achter dat ze eigenlijk met iets anders bezig zijn. De focus gaat alleen naar programmeren of juist alleen naar het ‘decompositie’. Uiteindelijk komt er altijd iets bij kijken wanneer je met een nieuw onderwerp zoals dit begint:
- Begripskennis: wat is Computational Thinking eigenlijk? Over wat voor soort vaardigheden gaat het en wat voor soort kennis en vaardigheden moet de leerling daarbij bezitten? Wanneer je dit niet helder hebt als docent is het ingewikkeld om te werken aan Computational Thinking, omdat je geen kennisbasis hebt van waaruit je werkt.
- Didactische kennis: hoe kun je leerlingen Computational Thinking aanleren? Wat voort soort activiteiten kun je als docent gebruiken om leerlingen te helpen zich te ontwikkelen in de denkvaardigheden zoals ‘generalisatie’ en ‘debuggen’? Op welke manier kan ik voortgang en/of ontwikkeling meten en zichtbaar maken?
- Technische kennis: vaak gaat Computational Thinking hand in hand met een technische uitdaging, zoals bijvoorbeeld het leren werken met een micro:bit. Daar moet je als docent wel mee kunnen werken: zonder de technische kennis kun je leerlingen niet helpen, en ook niet bedenken op welke manier je de technologie eigenlijk in wil zetten ten behoeve van Computational Thinking.
Computational Thinking als containerbegrip
Wanneer je je als docent bij bovenstaande punten nog niet goed genoeg voelt, dan is het ingewikkeld om aan de slag te gaan met Computational Thinking. Hierdoor ontstaan ook juist de meeste misvattingen: een gebrek aan begrip, didactische en technische kennis maakt dat Computational Thinking een soort containerbegrip is geworden. Alles wat te maken heeft met programmeren of digitale technologie past hierbij, en als je hiermee werkt is het automatisch Computational Thinking.
Dat laatste is jammer, want hierdoor mist de kern van Computational Thinking: leerlingen helpen om beter na te denken binnen een wereld die steeds complexer wordt. Juist het gebruik van deze denk-strategieën kunnen helpen om hier meer grip op te krijgen, en daarbij is het zonde als dit alleen in het ‘tech-hoekje’ blijft. Computational Thinking bestaat uit vaardigheden waar elke leerling iets aan heeft, en eigenlijk vanuit elk vak er wel iets mee te doen is.
Aan de slag met Computational Thinking?
Wil je er zelf graag mee aan de slag? We schreven eerder al verschillende artikelen die kunnen helpen bij Computational Thinking:
Over Computational Thinking
🔗 Computational Thinking: denken als een computer? | Een kort artikel waarin de basis van Computational Thinking wordt toegeligt.
🔗 3 Misvattingen over Computational Thinking | Computational Thinking wordt vaak fout gebruikt. In dit artikel 3 voorbeelden van wat het vooral niet is.
Over programmeren
🔗 Waarom programmeren? | Waarom moeten leerlingen eigenlijk leren programmeren?
🔗 Aan de slag met programmeren! | Een aantal praktische voorbeelden van hoe je met leerlingen kunt beginnen met programmeren.
🔗 Unplugged programmeren | Actieve werkvormen om aan de slag te gaan met Computational Thinking? Dan is ‘unplugged programmeren’ een goed idee.
🔗 De code als kwast | Artikel met voorbeelden van creativiteit en programmeren
🔗 De micro:bit | Waarom is de micro:bit wel/geen goed idee voor onderwijs?
Over Digitale Geletterdheid
🔗 Digitale Geletterdheid | Leren lezen en schrijven met digitale technologie: dat is digitale geletterdheid
🔗 Digitale Ethiek | Technologie heeft een mening: die van de maker. Hoe zorg je dat leerlingen zich hier bewust van worden?
Over het inpassen & toepassen van nieuwe technologie
🔗 TPACK en Samr | Twee modellen die helpen bij het inpassen en opdoen van de vaardigheden die horen bij het gebruik van nieuwe technologie
🔗 De 6 belemmeringen bij het gebruik van nieuwe technologie | Onderzoek naar waar het vaak fout gaat bij het gebruik van nieuwe technologie in het onderwijs
🔗 Hoe laat je nieuwe technologie slagen in de klas? | Onderzoek naar de voorwaarden die nodig zijn om technologie wel te laten slagen
Met bovenstaande artikelen kun je als docent zelf aan de slag om te zorgen dat je genoeg kennis hebt om je didactische palet uit te breiden, nieuwe projecten te bedenken en uiteindelijk leerlingen te helpen met Computational Thinking. Heb je andere goede voorbeelden van lessen of projecten? Laat dat dan weten in de reacties!
Docent, onderwijsontwerper & maker. Altijd veel ideeën, en op zoek naar de verbinding tussen leren, creativiteit en technologie. Onderwijs kan altijd beter, maar mag ook zeker leuker! Mede-oprichter van Vernieuwenderwijs.