Wat is het verschil tussen coding en computational thinking?

 

Workshops Robopal

Workshops Robopal

In de codeweek die onlangs werd gehouden lag de nadruk sterk op programmeren. Programmeren is niet hetzelfde als computational thinking (CT). De vraag die men vaak hoort is of programmeren/coding wel thuis hoort in het programma van de basisschool? Als kinderen dat leuk vinden, waarom niet? Er zijn meer zaken leuk die belangrijk lijken en die niet meer bestaan, zoals schoolzwemmen bijvoorbeeld. Vraag is hoe zou een CT-leerplan dat meer is dan puur coding eruit kunnen zien?

Door Jan Lepeltak

De didactiek voor programmeren heeft een lange voorgeschiedenis en begint bij de dit jaar overleden Seymour Papert (hoogleraar aan het medialab van het MIT). Papert ontwikkelde samen met anderen de programmeertaal Logo in de jaren ‘70/’80 van de vorige eeuw. Een kernidee was dat leerlingen kennis ontwikkelen in interactie met de fysieke wereld waarin ze zich bevinden. Dat kan ook gelden voor computers. In de oertijd van Logo leerden kinderen hoe ze een virtuele of fysieke schildpad kunnen aansturen (lees programmeren). Uitgangspunt van Papert was dat kinderen leren ‘in control’ te zijn van de computers en niet andersom.

Het concept van CT kan gezien worden als een verdere verdieping van de ideeën rond programmeren in het onderwijs en past goed in de traditie van Logo en de Maker Educatie. Niet verwonderlijk  als men weet dat Mitchell Resnick, die met zijn MIT-medialabteam Scratch ontwikkelde, een leerling is van Papert.
Jeanet Wing, voormalig hoogleraar computerwetenschap aan de Carnegie Mellon University introduceerde het begrip CT in 2006. Volgens Wing gaat het bij CT niet alleen om coding en programmeren. Er is meer. Het gaat ook over de vraag welk soort problemen door computers kunnen worden opgelost en welke beter door mensen kunnen worden getackeld,  omdat mensen er gewoon beter in zijn.

Het vraagstuk van ‘‘computability’ (‘berekenbaarheid’) is een van de meest fundamentele vragen van de mens, stelt zij. Volgens Wing weten we nog slechts een deel van het antwoord. Voor Wing is CT een combinatie van computerwetenschap en engineering. Dit zien we terug in in Maker Education Movement in de VS die allerlei tools gebruikt zoals 3D voor design.
“Computer says no”

Door de benadering van Wing voorkomt men ICT-mystificatie. Al sinds de jaren ’80 ‘kennen’ we uit de science-fiction sprekende computers, en tegenwoordig de computers met emotie, de lerende computers. Maar is dit allemaal wel reëel? Leerlingen kunnen op conceptueel niveau kennismaken met de theorieën van Gödel en Turing als het gaat om het begrip berekenbaarheid.

Wiskundeleraren zeggen weleens dat ze hun leerlingen niet zo zeer pure wiskunde willen leren maar vooral wiskundig denken. De echte wiskunde komt later. Het is niet de bedoeling dat alle leerlingen straks wiskunde gaan studeren. Dit geldt ook voor CT. Leerlingen die al jong iets leren over algoritmisch denken doen dat niet om later programmeur worden. Echte computerscience komt later.

Leren over CT kan overigens ook zonder computer (unplugged). Er zijn mooie voorbeelden van te vinden op Youtube.

Taal, in al zijn vormen (mensentaal, kunstmatige taal, programmeertaal) vormt een uitstekende didactisch uitgangspunt voor CT-lessen. Ook hierbij is de beschikking over een computer niet per se noodzakelijk.
Volgens sommige informatici is een computer eigenlijk een taalmachine.

Waarom zouden we in een CT-curriculum taal een belangrijke rol laten spelen?

Daarbij onderscheid ik de volgende argumenten:

  • Een historisch argument: in de jaren ’50 werden de eerste hogere programmeertalen ontwikkeld. Dit was het resultaat van de samenwerking tussen wiskundigen (automaten theorie) elektronische ingenieurs, theoretische linguïsten (Chomsky) en cognitief pyschologen. Daarmee konden meer complexe problemen worden opgelost. Een belangrijke aanleiding was de eerste Russische Spoetnik met het hondje Laika. Het maakte de Amerikanen erg onrustig. Zou het niet mooi zijn als een computer alle Russische teksten meteen kon vertalen.
  • Een didactisch STEM-argument : We gebruiken allemaal taal. Belangrijke theoretische concepten uit de informatica hebben met taal te maken (zoals: wat is een formele grammatica) wat is het verschil tussen mensentaal en een kunstmatige taal, recursie, parsing, algoritmen. Daar komt nog bij dat taalgerichte toepassingen voor meisjes vaak aantrekkelijker blijken.
  • Taaltechnologisch argument: ‘automatisch’ vertalen, spraak- en sprekersherkenning, verschillende vormen van taalverwerking (bijvoorbeeld de stochastische benadering) die we op onze smartphone kennen en die de volgende woorden voorspellen.
  • Duurzaamheids argument: Zolang er geen quantumcomputers bestaan blijft taal een duurzaam aspect van ICT en informatica, los van allerlei technologische innovaties.

We kunnen simpele tools ontwikkelen als zinsgeneratoren die zinnen of teksten en hun structuren genereren. Zo kunnen bijvoorbeeld Haiku’s, gedichten, raps en zelfs korte verhalen automatisch worden voortgebracht. Producten die leuk zijn, maar natuurlijk weinig van doen hebben met echte literatuur, maar je wel aan  het denken zetten over CT. Het is een geweldig middel om aan te tonen dat de computationele capaciteit waarover het brein van de de mens beschikt, bestaat uit een mechanisme waarmee we met eindige middelen een oneindig aantal zinnen en hun structuren kunnen voortbrengen. Of met een beperkt aantal muzieknoten oneindig veel melodieën. Dit door een heel specifiek systeem te gebruiken, namelijk een grammatica.

Maar leerlingen moeten ook de kernelementen van CT/programmeren kennen: het opdelen van een probleem in kleinere delen, patroonherkenning, abstractie en abstraheren, algoritme ontwerp inclusief debuggen en het verfijnen van deze stappen. Uiteindelijk is programmeren een zaak van het combineren van communicatie en taal door middel van een programmeertaal. Natuurlijke talen en computertalen hebben veel gemeen. Ze hebben een grammatica, woorden en betekenis. Ze verschillen natuurlijk in termen van grammatica en semantiek. Een leraar CT zal over de didactische vaardigheden dienen te beschikken om concepten van coding en CT in zijn curriculum een plek te geven. We willen coding meer laten zijn dan het uitvoeren van allerlei opdrachtjes, dan is professionalisering van docenten een eerste vereiste.  Maar dit vormt vooralsnog wel de bottleneck.

Deze tekst is oorspronkelijk verschenen in het septembernummer van het maandblad van de Österreichische Computer Gesellschaft (OsG), 
dat ging over Bildung 2.0. Dit naar aanleiding van een miniconferentie over ICT en Bildung die dit voorjaar werd gehouden in Wenen.

2 reacties op “Wat is het verschil tussen coding en computational thinking?”

  1. Pierre zegt:

    Dag Jan,

    Voor de volledigheid ook even hier (in plaats van alleen via Twitter):

    Allereerst, mooi stuk, er komen een paar uitgangspunten in voor waar ik het zeer mee eens ben, bijvoorbeeld “Uitgangspunt van Papert was dat kinderen leren ‘in control’ te zijn van de computers en niet andersom”, lijkt me een heel nuttig uitgangspunt.
    En ook: ” Leerlingen die al jong iets leren over algoritmisch denken doen dat niet om later programmeur worden. Echte computerscience komt later”

    Waar ik je niet helemaal kon volgen was dit stukje “Een leraar CT zal over de didactische vaardigheden dienen te beschikken om concepten van coding en CT in zijn curriculum een plek te geven”"- ga je hier dan uit van CT als apart vak met aparte vakdocent? Ik zou me namelijk kunnen voorstellen dat CT juist (eigenlijk net als taal) in alle vakken terug zou kunnen komen. En als je als een CT leraar hebt (zoals Nederlands natuurlijk ook een aparte vakdocent heeft), dan nog zou integratie in het curriculum juist vergen dat ook de andere leraren weten wat CT is. En daar zullen we die leraren inderdaad ook voor moeten professionaliseren.
    Wellicht lees ik de zin gewoon verkeerd. :)

  2. Cherry zegt:

    I thoroughly enjoyed reading your article! This was not only inmoifatronal but good to read also! I’m primarily involed with cell phones but I definitely picked up lots from this. Keep up the fantastic work!

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

De volgende HTML tags en attributen zijn toegestaan: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>