Gerard Dummer

Alles over Onderwijs en ICT.

Browsing Posts tagged computational thinking

Op 15 februari 2017 mocht ik een workshop verzorgen over computational thinking voor de basisscholen die mee hebben gedaan aan het traject Leren in de 21ste eeuw. In mijn workshop ben ik ingegaan op de vragen: wat is computational thinking, uit welke aspecten bestaat CT, waarom is het belangrijk en zijn we ook praktisch aan de slag gegaan hiermee. En dat alles in 50 minuten. Dat was dus wel keuzes maken. Hieronder de presentatie die ik voor de bijeenkomst gebruikt heb.



Waar ik tijdens de presentatie zelf achter kwam (had ik dus willen toevoegen) was dat er een mooi overzicht van Beat Döbeli Honegger ontbrak die computerscience (en indirect vind ik ook CT) mooi plaatst in een oplopend rijtje (zie dia 5) en die de redenen om met computerscience (en indirect vind ik dus nogmaals met CT) aan de slag te gaan (zie dia 16).

Op 23 maart zal ik nogmaals over CT praten, dan op het symposium ter gelegenheid van het afscheid van Dick de Wolff. Dan zal ik stilstaan bij de verschillende curricula die inmiddels zijn ontworpen rondom CT.

Het artikel van Wing (2006) is waarschijnlijk heet meest geciteerde artikel op dit moment als het gaat over het onderwerp computational thinking. Maar ook in 2008, 20110 en 2016 schrijft Wing over de ideeën en ontwikkelingen rondom computational thinking (CT).

Ik heb de verschillende artikelen van haar op een rijtje gezet en de (naar mijn idee) belangrijkste aspecten uitgehaald.

Definitie van computational thinking

Wing hanteert verschillende omschrijvingen om duidelijk te maken wat ze precies onder CT verstaat. In 2006 geeft ze aan dat CT te maken heeft met het oplossen van problemen, het ontwerpen van systemen en het begrijpen van menselijk gedrag door voor te borduren op de fundamentele concepten van computerscience (CS).

In 2010 omschrijft ze CT als het denkproces dat nodig is in het formuleren van problemen en hun oplossingen zodanig dat de oplossingen op zo’n manier worden weergegeven dat ze effectief uitgevoerd kunnen worden door een information-processing agent.

Informeel omschreven als de denkactiviteiten bij het formuleren van een probleem om te komen tot een computationele oplossing. De oplossing kan worden uitgevoerd door een persoon of een machine, of in de meeste gevallen door een combinatie van een persoon en machine.

Wing geeft aan dat CT het wiskundig en technisch denken combineert (Wing, 2006, 2008, 2010).

In mijn eigen woorden zou ik bovenstaande omschrijven als het oplossen van problemen waarbij je gebruik maakt van de ideeën uit de informatica.

Aspecten van CT

In het artikel van 2006 beschrijft Wing verschillende aspecten van CT die rechtstreeks voortkomen uit het programmeren zoals het herkennen van de voor- en nadelen van aliasing, de baten en kosten van indirect adressing en procedure call.

In het artikel van 2008 geeft ze aan dat de essentie van CT abstractie is. Dat komt terug in het artikel van 2010. De kern is om abstracties te kunnen definiëren waarbij gewerkt wordt met meerdere lagen en waarbij je de relatie tussen deze lagen ook moet kunnen begrijpen. Abstracties zijn de mentale gereedschappen van computing geeft Wing (2008) aan. En computing is het automatiseren van onze abstracties. In 2008 en 2010 geeft Wing aan dat abstractie gebruikt wordt om patronen te definiëren, te generaliseren op basis van gevallen en parameters. Het wordt gebruikt om de essentie weer te geven en irrelevante informatie weg te laten. Verschillende lagen van abstractie zorgt er voor dat we ons kunnen focussen op verschillende aspecten.

Er zijn een paar zaken die me hier bij opvallen. In 2006 zit Wing nog erg dicht aan tegen de concrete begrippen die gebruikt worden in de informatica. Een paar jaar later kiest ze als kapstok abstractie als belangrijkste aspect van CT. Alle andere aspecten worden hier van afgeleid. Wat ik hier opvallend aan vind is dat ik dit nu niet meer terugvind in de leerlijnen die nu worden geformuleerd rondom CT. Zo hanteert de leerlijn programmeren/ computational thinking van Kennisnet tien aspecten die zo op het eerste gezicht redelijk gelijk worden behandeld. Het eerste aspect (algoritmes) lijkt niet onder te doen van abstractie (begrip 7) of representatie (begrip 10).

Toepassingen in het onderwijs en wetenschap

Naar mijn idee het belangrijkste punt dat Wing noemt is de toepassingen van CT in onderwijs en wetenschap. Wing (2010, 2016) geeft aan dat computation erkent wordt als de derde pijler onder de wetenschap naast theorie en experimenten.
Ze noemt veel voorbeelden van disciplines die veranderd zijn en waarbij CT een belangrijke rol speelt: statistiek, biologie (onder andere doorzoeken van enorme hoeveelheid data op zoek naar patronen. Deze patronen worden dan weer gebruikt voor nieuw onderzoek bijvoorbeeld bij het ordenen van het menselijk DNA), economie (door computational gametheorieën), nanocomputing beïnvloedt de scheikunde en quantumcomputers beïnvloeden natuurkundigen (Wing, 2006), algoritmische geneeskunde, computational archeologie, financiën, journalistiek, recht, sociale wetenschappen, fotografie, digitale geesteswetenschappen, computermuziek (Wing, 2010).

In het artikel van 2016 geeft Wing aan dat CS-cursussen ook gegeven worden aan studenten die niet afstuderen in CS zelf. Deze cursussen focussen op de kernconcepten van CS. Wing (2016) vind het verrassend en verheugend om te zien dat ook in het middelbaar en basisonderwijs initiatieven zijn ontstaan. Ze noemt daarbij de ontwikkelingen in Engeland (CAS) en het opstarten van code.org in 2013. Als derde noemt Wing de snel toenemende belangstelling in het onderwijzen van CS op de basis- en middelbare school in Australië, Israël, Singapore en Zuid-Korea.

Computational Thinking in het dagelijks leven

Het minst sterk (maar misschien wel meest herkenbaar) vind ik de relatie die Wing legt met CT in het dagelijks leven. Bijvoorbeeld (Wing, 2006) bij het inpakken van een rugzak (prefetching and caching), het terugvinden van verloren handschoenen (back- tracking), het nadenken over huren of kopen van ski’s (online algoritmes), het kiezen van een rij in de supermarkt (performance modeling voor multi-server systemen), het blijven werken van je telefoon gedurende een stroomuitval (independence of failure en redundancy in design), doostroming van geslaagden op een dipoma-uitreiking (Wing, 2010) als voorbeeld van pipelining en het opbergen van LEGO-blokjes zodat je gemakkelijk een specifiek blokje terug kunt vinden (hashing).

Hoe moet je computational thinking aanleren?
Deze vraag stelt Wing (2008 en 2016) zichzelf. Ze vraagt zich af wat effectieve manieren zijn om CT aan te leren bij kinderen, wat de basisconcepten zouden moeten zijn (Wing, 2008, 2016), in welke volgorde moeten de concepten worden aangeboden, verschilt dit per leerling, welke tools (waaronder computers) zijn het meest bruikbaar voor het aanleren van concepten, wanneer zetten we deze tools in, hoe verhoudt informeel en formeel leren zich tot elkaar bij het aanleren van de concepten.

Ze verwijst hierbij vooral naar andere initiatieven zoals http://csprinciples.org, een serie workshops van de National Academies’ Computer Science and Telecommunications Board, CE21 van de NSF, Computing At School (CAS) in Groot-Brittannië, CS4HS, Carnegie Mellon Center for Computational Thinking, Exploring Computational Thinking van Google, Computer Science Unplugged en CSTA.

Voor de precieze uitwerking van computational thinking in het onderwijs moet je dus niet bij Wing zelf zijn maar bij alle andere de initiatieven die ze noemt. Nog maar eens verder kijken dus!

Gisteren heb ik voor de Da-Vinci groep van Montessorischool Pallas Athene uit Amersfoort een Scratchles verzorgd. Oud-student Nienke de Jong, nu werkzaam op Pallas Athene had me gevraagd of ik hier aan mee wilde werken. Zij is met de kinderen bezig met een project over water in Nederland. De kinderen maken over dit project een animatie in Scratch. Voorafgaand aan deze les hadden de kinderen zich al verdiept in het onderwerp water in Nederland en hadden ze een begin gemaakt van een storyboard. De les die ik gaf was dus de derde in een reeks. In deze les heb ik hen handvatten gegeven om met Scratch een animatie te maken.

Mijn eerste evaluatie van deze les, twitterde ik gisteren ook al:


Een les van een uur is voor de kinderen precies lang genoeg maar om hen helemaal op weg te helpen net te kort, vond ikzelf.

Hoe heb ik het aangepakt?
In de les wilde ik verschillende aspecten aan bod laten komen. Belangrijkste doel van de les was natuurlijk dat kinderen in staat zijn om een animatie te maken in Scratch. Maar ik wilde hen ook nog een aantal andere zaken meegeven. Zoals leren dat debuggen hoort bij Scratch, dat ze een groot project leren opknippen in kleinere stukken (decompose) en dat ze een projectplanning kunnen gebruiken om overzicht te houden waar ze mee bezig zijn.

Het eerste doel heb ik, denk ik, behaald. De overige doelen niet of minder. De oefeningen rondom debuggen heb ik overgeslagen. Het opknippen en plannen heb ik alleen genoemd.

Ter introductie heb ik hen een animatie laten zien waarin ik mijzelf voorstel:




Het idee van voorstellen heb ik uit het boek Creative Computing van ScratchEd dat in het Nederlands is vertaald door Cobi van de Ven.

Daarna heb ik hen, met minimale instructie over Scratch (dit is Scratch, dit zijn de scripts, zo kun je ze aan elkaar klikken, zo kun je ze laten beginnen) Scratch laten verkennen. Ook deze opdracht komt uit het boek Creative Computing.

Opdracht 2 was bedoeld om de kinderen te wijzen op de Tips-functie in Scratch en hen kennis te laten maken met de scripts die helpen om een animatie te maken.

Ik merkte dat de kinderen bij opdracht 1 heel fanatiek al met Scratch aan de slag waren gegaan en het een beetje jammer vonden dat ze nu opeens een andere opdracht moesten doen. Voor een volgende keer zou ik de beginopdracht dus iets meer sturen en er voor zorgen dat het animeren van je naam meer aansluit op de verkenningsfase.

Ik merkte ook dat het handig was om steeds naar een tijdje gewerkt te hebben, gezamenlijk even een paar belangrijke hobbels door te spreken. Een paar bekende hobbels waar iedereen tegenaan loopt zijn:
* als ik mijn sprite heen en weer laten lopen tot de rand dan loopt hij op de kop terug

Oplossing is om de draaistijl van de sprite aan te passen.

* Ik wil mijn sprite laten draaien maar ik zie niets gebeuren:

Oplossing is dat je het draaien tijd moet geven:

Verder gaf ik in de loop van de les steeds meer tips over Scratch:
* Wist je dat een sprite verschillende uiterlijken kan hebben?

En dat je die uiterlijken na elkaar kunt laten verschijnen:

Materialen
Ik had een Scratchanimatie gemaakt waarin alle aspecten die aan bod moesten komen al verwerkt zaten:bewegen, muziek, wisselen van achtergrond, verschijnen en verdwijnen van teksten. Dat was heel handig om steeds weer erbij te pakken. Zo van: kijk, zo kun je het aanpakken.

Ik had ook een presentatie gemaakt om mijn verhaal te ondersteunen




En tot slot een website waarop alle opdrachten en linken te vinden waren die we gingen gebruiken.

Verder had ik nog een studio klaargezet voor de animaties. Maar daar hebben we geen gebruik meer van gemaakt.

Tot slot
Zoals je waarschijnlijk merkt, had ik meer dan genoeg materiaal om te gebruiken. Teveel voor een te korte tijd. Ik wilde aan teveel aspecten aandacht besteden (die heb ik deels overgeslagen). Een volgende keer ben ik in staat om het nog meer te stroomlijnen.

Belangstelling om ook leerlingen ook kennis te laten maken met Scratch? Ik kom graag langs om hen te helpen! Of samen met jullie na te denken over de mogelijkheden.

Gisteren was bij ons ook pakjesavond en voor die gelegenheid had ik een surprise gemaakt. Omdat het natuurlijk leuk is maar ook omdat ik graag mijn eigen ontwerpopdracht die ik aan studenten had gegeven verder wilde uitvoeren.

Opdracht 4 MakeyMakey

Nu ben ik nog helemaal niet zo bedreven in het maken van surprises dus dat was voor mij best ook nog een uitdaging. Het cadeau waarbij de surprise gemaakt moest worden waren zakdoeken. Daarbij dacht ik direct een een neus. En daarbij dacht ik direct aan een loopneus. Die heb ik dan ook gemaakt.

Hieronder het maakproces in een aantal foto’s weergegeven.

Eerste versie van de LEGO WE DO motor

Tweede versie in een Dubbelfrispak
MakeyMakey ligt in deze versie boven op de motor

Derde versie met MakeyMakey op zijn kant

Vierde versie waarin de LEGO WE DO motor iets naar rechts is verplaatst
Om ruimte te geven aan alle kabeltjes moest de motor verplaatst worden.

Kabels wegwerken

Bedieningspaneel om aan te sluiten op de MakeyMakey

Contact maken met zilverfolie

Kern van de surprise

Verdere surpriseontwikkeling

Scratchproject
Om de motor en het bedieningspaneel aan te sturen moest ik in Scratch nog een klein programmaatje schrijven.




Resultaat

Tot slot
Ik was voor dit jaar zeker tevreden over mijn surprise. Het was leuk om te maken en heb er met plezier een paar avonden aan besteed. Maar helemaal tevreden was ik er nog niet over. Zat in een paar dingen. Ten eerste wilde ik eigenlijk ook nog de Raspberry Pi er op aansluiten. In de Bendoobox zit deze. Dat wilde ik doen zodat de surprise nog mobieler zou zijn. Maar ik had geen monitortje dat ik er op aan kon sluiten. Te laat kwam ik online nog wel een display tegen die eventueel zou kunnen. Benieuwd of anderen ervaring hebben met displays.

Ten tweede dacht ik: om dit te maken gebruik ik een LEGO We DO set en een Makey Makey. Dat maakt de kern van de surprise toch al snel zo’n 200 euro. En eigenlijk zou het mooi zijn als het onder de maximaal 25 euro had kunnen blijven. Iemand al ervaring met goedkopere spullen die hetzelfde kunnen?

Ten derde was mijn surprise zelf nog voor verbetering vatbaar. Had nog niet echt gezocht online van te voren maar nu ik dat wel doe (zie hier, hier en hier en op nog veel meer plekken) dan had ik vast nog iets slimmers bedacht.

Ten vierde. Ik was best tevreden over mijn opdracht! Zou te vertalen moeten zijn naar het basisonderwijs. Betrokken vakken hierbij zijn dan Natuur en Techniek en Beeldende Vorming naar mijn idee. Benieuwd hoe anderen hier over denken.

Ten vijfde. Zoals ik al in mijn vorige blogpost liet zien, bieden thema’s mooie ontwerproblemen. Lijkt me leuk om met anderen na te denken over ontwerpproblemen voor onderbouw tot en met bovenbouw! Insteek daarbij is dan ontwerpend leren, creativiteit en computational thinking. Laat me maar weten!