Er zijn zoveel stappen die komen kijken bij het leren denken als een programmeur. Voor een beginner zijn de specifieke kenmerken van een taal (de syntax) niet zozeer belangrijk. Het is beter om de gemeenschappelijke kenmerken tussen talen te begrijpen, wat de bouwstenen van elke programmeertaal zijn. Deze LEGO-doolhoven, die kunnen worden opgelost door een ‘code’ op papier te gebruiken in plaats van op een computer, illustreren 4 moeilijkheidsgraden en bevatten verschillende programmeringsconcepten. De verschillende niveaus worden hieronder in detail beschreven, maar hier is reeds een kort overzicht:
Niveau 1: Het kind kan het specifieke probleem zien en stap voor stap het LEGO-figuurtje uit de doolhof laten wandelen. Zoals het spel Robot Turtles leert dit makkelijkste niveau het kind denken vanuit een ander standpunt dan hun eigen. Het kind zijn/haar links is misschien niet hetzelfde als de links van het figuurtje, maar zelfs de jongste kinderen kunnen deze nuttige vaardigheid om te wisselen van referentiekader aanleren.
Niveau 2: Hopelijk zal uw kind, wanneer ze niveau 1 beheersen, realiseren dat het wat eentonig is om het figuurtje 7 keer te moeten vertellen vooruit te wandelen. Het zou daarom handig zijn een manier te hebben om te kunnen zeggen ‘Voer deze opdracht 7 keer uit’. Dit niveau introduceert het concept ‘voor-lus’.
Niveau 3: Oudere kinderen zijn op deze moment misschien al ambitieus genoeg om te beseffen dat er verschrikkelijk veel tijd kruipt in het oplossen van een doolhof door de methodes van niveau 1 en 2 te gebruiken. Met de invoering van ‘terwijl-lussen’ en ‘als-stellingen’ kunnen kinderen zichzelf uitdagen een zo kort mogelijk programma te schrijven om een bepaalde doolhof op te lossen. De programmeur moet rekening houden met alle mogelijkheden op willekeurige locaties van het LEGO-figuurtje en dan de beste volgorde van acties bepalen. Bijvoorbeeld, wat kan het figuurtje doen als er links een vrije plek is? Wat als ze stoten op een doodlopende gang?
Niveau 4: Als kinderen succesvol niveau 3 kunnen volbrengen, zullen ze beseffen dat als ze hun code willen gebruiken bij een andere doolhof, dit waarschijnlijk niet werkt. Het is mogelijk dat hun figuurtje zal vastzitten in wat programmeurs een ‘oneindige lus’ noemen. Dit betekent dat dezelfde handelingen steeds worden herhaald zonder een weg naar buiten te vinden. Door een willekeurige getallengenerator te introduceren, kunnen oudere kinderen een programma schrijven dat hun figuurtje uit elke doolhof kan krijgen.
Aan het einde van dit proces zullen de oudste kinderen beseffen dat het goed zou zijn als hun LEGO-figuurtje kan onthouden waar hij reeds geweest is zodat hij zich op een systematische manier verplaatst in plaats van doelloos rond te dolen. Dit zou een discussie over complexere programmeringsconcepten zoals geheugen en opgeslagen variabelen kunnen teweegbrengen.
Leeftijdscategorie: Lager onderwijs
Vereiste tijd: 1 uur als je het lamineert
Moeilijkheidsgraad: Makkelijk voor te bereiden, niveau 3 en 4 zijn misschien enkel geschikt voor de oudere kinderen
Kosten: Gratis printversie, minder dan 2 euro om te lamineren (omvat niet de kosten van optionele LEGO- of DUPLO-blokjes)
Materiaal:
- Papier voor de gratis printversie van Coding a LEGO Maze te printen
- Thermische lamineerhoezen
Benodigdheden
- Thermische laminator
- Schaar
- Papiersnijder (optioneel)
- LEGO-figuurtje (of een ander figuurtje van gelijke grootte)
- LEGO- of DUPLO-blokjes (optioneel)
Instructies:
- Je moet enkel de eerste keer printen, lamineren (optioneel, maar wel aanbevolen) en alle stukjes van de printversie van Coding a LEGO Maze
- Zet de doolhof op. Je kan een van de 5 voorziene doolhoven gebruiken, of er zelf een maken met het blanco rooster. Eens dat je een doolhof hebt gekozen, zijn er drie opties voor de opstelling:
Optie 1: Als je geen LEGO- of DUPLO-blokjes hebt of je wil tijd besparen kan je de voorziene doolhoven gebruiken zoals ze zijn. Je hebt een figuurtje nodig dat een voorkant heeft, zodat je weet hoe het figuurtje staat.
Optie 2: Als je een fan bent van LEGO kan je de grijze delen van de doolhoven met LEGO-blokjes bedekken.
Optie 3: Als je een fan bent van DUPLO kan je het witte deel van de doolhof uitknippen, op een DUPLO-bord plaatsen en het bord dan bedekken met DUPLO-blokjes door muren te vormen. Je kan ook de DUPLO-blokjes direct op de gelamineerde doolhof plaatsen maar ik vond dat dit niet zo goed werkte aangezien de muren redelijk hoog moeten zijn om alle blokjes te kunnen verbinden, wat het moeilijk maakt om het figuurtje te verplaatsen.
Eens je klaar bent, zal je doolhof er ongeveer zo uitzien:
Of zo:
Niveau 1: De eerste stap voor de jongste kinderen is om ze te leren denken vanuit het standpunt van het figuurtje. Om dit te doen plaats je het figuurtje aan de start van de doolhof en geef je je kind alle groene kaartjes in 3 stapels (Ga Vooruit, Sla Rechtsaf, Sla Linksaf). Je kind moet de instructies in de juiste volgorde plaatsen, zodat het een lange lijst wordt van handelingen waarin hij/zij denkt dat het figuurtje moet wandelen. Bijvoorbeeld, in de LEGO-doolhof (niet DUPLO) hierboven moet Bob de Bouwer zo wandelen: Ga Vooruit, Ga Vooruit, Ga Vooruit, Sla Rechtsaf, Ga Vooruit etc. Ik liet mijn zesjarig kind de kaartjes in de volgorde leggen waarin hij dacht dat het figuurtje de doolhof kon verlaten. Ik was van plan het figuurtje zelf te verplaatsen volgens de ‘code’ die hij had geschreven, maar hij wou het figuurtje het liefst zelf verplaatsen. Ik liet hem elke opdracht een voor een uitvoeren en steeds het kaartje omdraaien. Dit werkte goed. Het enige waar je op moet letten is links en rechts. Wanneer Bob richting hem wandelde, gebruikte hij vaak een ‘Sla Rechtsaf’ kaartje wanneer het eigenlijk ‘Sla Linksaf’ moest zijn. Ik plaatste dan het kaartje in Bob zijn hand om hem de fout te tonen. Hij begreep het en verbeterde het direct.
Niveau 2: Eens je kind niveau 1 beheerst, kan je hem/haar tonen hoe je een lus gebruikt die zegt ‘Voor … stappen’ om een opdracht meerdere malen te herhalen. Bijvoorbeeld zoals hierboven zou de oplossing er zo uitzien. Merk op dat de opdrachten binnen een ‘voor-lus’ een beetje inspringen. Niet alle programmeertalen zijn strikt met deze insprong, maar sommige wel en dit maakt de code ook leesbaarder. Aan het einde van een ‘voor-lus’ leg je een ‘Einde’ kaart om aan te geven waar de lus stopt. Ook niet alle programmeertalen vereisen deze ‘einde’-opdracht, maar vele wel.
Niveau 3: Dit is iets voor de oudere kinderen, als ze abstracter kunnen nadenken kan je de voorwaardelijke ‘als-stellingen’ aanleren. Vanaf ik over als-stellingen leerde in het hoger onderwijs, gebruikte ik ze constant in mijn dagelijkse leven. Het leek alsof elke beslissing kon worden samengevat in een beslissingsboom. Bijvoorbeeld, als ik probeerde te beslissen wat te eten ’s avonds, dacht ik zoiets als: ‘ALS mijn vriendin Kelly vrij is
à kan ik Thais gaan eten met haar
ANDERS ALS ze iets lekkers aanbieden in de cafetaria van mijn studentenhuis
à kan ik daar iets kopen.
ANDERS à blijf ik in mijn studentenkamer en eet ik wat cornflakes en ijs.
EINDE ALS”. Gelukkig ben ik hieruit gegroeid sinds ik niet meer tientallen uur per week doorbreng in het computerlab. Wanneer je een programma schrijft, denk je na over alle mogelijkheden en evalueer je wat je moet doen en in welke volgorde (of met welke prioriteit). Bijvoorbeeld, ons figuurtje in de doolhof heeft maar een beperkt aantal opties. Er kunnen muren staan voor, links of rechts naast hem. Er zijn echter heel veel verschillende mogelijkheden die kunnen worden geschreven op basis van deze beperkte opties. Het kind kan beslissen om het figuurtje deze opdracht te laten volgen: ‘Als er geen muur voor mij staat, ga vooruit. Einde.’ Deze code kan worden gebruikt voor een van de doolhoven. Voor doolhoven die een afslag vereisen, moet het kind een code verzinnen zoals deze hieronder.
Deze code kan worden vertaald in volgende instructies: ‘Als ik links kan afslaan, sla links af. Als ik rechts kan afslaan, sla rechts af. Als ik een doodlopend pad tegenkom, draai om. Als ik al deze condities heb gecontroleerd, ga vooruit. Herhaal’. De ‘herhaal’ omvat dan terug heel de lus. ‘Nog in de doolhof (code) Einde’ betekent dat je de code moet herhalen tot je je niet meer in de doolhof bevindt. Ik moet ook wel vermelden dat ik geen ‘ANDERS’ heb gebruikt. ‘ALS’ betekent dat je het zeker moet doen als de conditie waar is. ‘ANDERS ALS’ betekent dat je dit moet doen als de conditie waar is EN de andere ‘ALS’ en ‘ANDERE ALS’ niet kloppen. ‘ANDERS’ betekent dat je dit moet doen als de bovengenoemde zaken niet konden worden uitgevoerd (zoals cornflakes en ijs als avondeten waar ik op terugval). ‘EINDE’ betekent dat dit het einde is van de ‘ALS-stelling’ (of terwijl- of voor-lus).
- Niveau 4: Als je kind bovenstaande code gebruikt (of een gelijkaardig gestructureerde code) voor alle doolhoven, zal hij/zij snel merken dat deze niet voor elke doolhof werkt. In sommige gevallen zal het figuurtje steeds hetzelfde pad heen en weer wandelen (een oneindige lus), wegens de prioriteit die wordt gegeven aan de linkse afslag (of een andere prioriteit die ze kiezen). Om dit probleem op te lossen zonder ingewikkeldere concepten te gebruiken, zoals opgeslagen variabelen, kan je een willekeurige getallengenerator gebruiken om een prioriteit weg te halen. Bijvoorbeeld, in plaats van te zeggen ‘Als ik links kan afslaan, sla links af’, kan je zeggen ‘Als ik links kan afslaan, sla de helft van de keren links af’. Omdat we niet echt gebruikmaken van computers en dus ook niet van een willekeurige getallengenerator kan je kind een dobbelsteen gebruiken. Door deze willekeurigheid in te voeren, zal je figuurtje misschien niet altijd het meest logische pad nemen, maar hij zal niet in een oneindige lus belanden. Hier is een voorbeeld van een mogelijke code waarvan ik *denk* dat hij zal werken voor elke doolhof. Dit is niet het juiste ‘antwoord’ en waarschijnlijk ook niet het beste antwoord. Ik raad je aan dit antwoord niet te tonen aan je kind voordat hij/zij het zelf heeft geprobeerd. Programmeren is een proces met vallen en opstaan. Programmeurs moeten veel testen alvorens ze iets nieuws bedenken dat werkt.
Vergeet zeker niet de fantastische berichten in 28 Days of Hands-On STEM Activities te bekijken voor veel meer ideeën om je kind zijn/haar interesse voor deze geweldige vakdomeinen aan te wakkeren! Als je deze post nuttig vond, schrijf je dan in op onze nieuwsbrief (en krijg toegang tot exclusieve, gratis en educatieve printversies).
VEEL PLEZIER MET PROGRAMMEREN!