Programmeer eens een mens
Computers zijn niet bijzonder slim. Ze zijn gewoon erg goed in het uitvoeren van instructies. Het geheel van instructies om een bepaalde taak uit te voeren, noemen we een algoritme. Bijvoorbeeld, om de kortste weg te berekenen tussen twee locaties gebruikt een GPS een bepaald algoritme. Iemand moet dit algoritme echter eerst bedenken en dan op zo een manier beschrijven dat een GPS dit kan uitvoeren. Dit gebeurt door het schrijven van een programma in een bepaalde programmeertaal. Een programmeertaal bestaat uit een beperkte hoeveelheid instructies en elke instructie heeft een zeer specifieke betekenis. Een soms frustrerend aspect van programmeren is dat computers de instructies altijd letterlijk gehoorzamen, zelfs als het een gek resultaat oplevert.
De voorgestelde activiteit “programmeer eens een mens” laat leerlingen elkaar programmeren om een tekening te maken. De opdrachten geven leerlingen enige ervaring met het bedenken van een eenvoudig algoritme en het uitvoeren van precieze instructies. Het voorgestelde materiaal dient als basis om zelf een les uit te werken.
Deze opdracht is gebaseerd op de activiteit Marsorders uit het handboek CS Unplugged. Dit boek bevat een interessante verzameling van activiteiten voor kinderen en tieners gerelateerd aan informaticawetenschappen. Elke activiteit is zodanig opgevat dat leerlingen het probleem onderzoeken en zelf oplossingen bedenken. Na iedere activiteit is het aangewezen om de gevonden antwoorden in groep te bediscussiëren en deze te linken met de theorie. Het beste van al? Je hebt er niet eens een computer voor nodig! Er is ook een Nederlandse vertaling van dit boek.
Links met leerplan
- technologie
- informaticawetenschappen
Vaardigheden
- instructies geven en opvolgen
- eenvoudig algoritme bedenken
Leeftijd
- 3de kleuterklas (aangepaste opdracht)
- lagere school (eventueel gedifferentieerd naar leeftijdsgroep)
Duur
- 20-50 min
Materiaal
- afbeeldingen
- potlood, papier en lat (eventueel passer)
Inleiding
Klasgesprek rond volgende vragen:
- Wat zijn robots en welke taken kunnen ze uitvoeren? Denk aan de vele robots uit films (Baymax, WALL-E, R2-D2, BB–8 om er maar enkele te noemen), maar ook aan robotmaaiers, keukenrobots en robots in fabrieken.
- Hoe weten robots hoe ze een bepaalde taak moeten uitvoeren? Introduceer instructies. Leg eventueel link met recepten om een gerecht te maken, met instructies om een vlieger te vouwen, met instructies voor cijferen of instructies om je tanden te poetsen.
Demonstratievoorbeeld
Kijk of de leerlingen een tekening kunnen maken met behulp van deze instructies:
- Teken een stip in het midden van je blad.
- Begin in de linkerbovenhoek van de pagina en trek een rechte lijn door de stip tot aan de rechterbenedenhoek.
- Begin in de linkerbenedenhoek van de pagina en trek een rechte lijn door de stip tot aan de rechterbovenhoek.
- Schrijf je naam in het midden van de driehoek aan de linkerkant van de pagina.
Het resultaat moet er ongeveer zo uit zien
Activiteiten
Geef een leerling een afbeelding (zie onder voor mogelijke voorbeelden). Het kind beschrijft de tekening voor de klas en de anderen tekenen. De leerlingen kunnen vragen stellen ter verduidelijking van de instructies. Het doel is om te zien hoe snel en nauwkeurig de oefening kan worden voltooid.
Herhaal de oefening, maar deze keer mogen de leerlingen geen vragen stellen. Het beste is om een eenvoudigere afbeelding te gebruiken voor deze oefening, omdat de leerlingen heel snel kunnen verdwalen.
Geef elk kind een tekening of laat hen zelf een tekening maken. Vraag om gedetailleerde instructies te bedenken. Test de instructies uit in tweetallen of met de hele klas. Kinderen in de hogere graad kan je vragen om deze instructies expliciet uit te schrijven op papier. Test de geschreven instructies door deze aan een ander kind te geven en te laten uitvoeren. Afhankelijk van het leeftijdsniveau kan je kinderen aansporen om zo goed mogelijk rekening te houden met de werkelijke verhoudingen van de tekening. Je kan hen ook aansporen om de instructies zo kort en duidelijk mogelijk te specificeren.
Voorbeelden
Mogelijke voorbeelden zijn de volgende:
Voor oudere kinderen kan je ook complexere patronen proberen:
Je kan hier voorbeelden downloaden.
Kleuters
Ook met kleuters van de 3de kleuterklas kan een eenvoudigere variant van deze activiteit gedaan worden.
De ene kleuter kleurt de figuren in en geeft instructies aan de andere kleuter om de tekening te maken. Je kan hier voorbeeldbladen downloaden.
Discussie
Hier zijn mogelijke onderwerpen voor een nabespreking die je zelf kan aanpassen afhankelijk van de leeftijdsgroep.
- Hoe sterk lijkt de tekening, gemaakt door het volgen van de instructies, op het origineel? Zijn de instructies juist uitgevoerd? Zijn de instructies correct?
- Fouten in programma’s: wie maakte er een fout en hoe heb je deze ontdekt? Elke programmeur maakt fouten. Zelden werken programma’s van de eerste keer foutloos. Het is belangrijk om fouten te kunnen opsporen en programma’s te verbeteren.
- Instructies kan je op meerdere niveaus specificeren. Bijvoorbeeld, “teken een vierkant met zijde 5cm” versus “teken 2 horizontale lijnen van 5cm lang op afstand 5cm van elkaar met de twee begin- en eindpunten exact boven elkaar; verbind vervolgens de twee begin- en de twee eindpunten van de twee lijnen”. De eerste instructie is veel korter maar vergt meer kennis van de uitvoerder (namelijk de kennis van een vierkant). Een veelgebruikte methode in programmeren is dat je eerst uitlegt hoe je een vierkant tekent en vervolgens mag aannemen dat de uitvoerder (of computer) weet hoe een vierkant wordt getekend.
- Waren er onduidelijkheden in de gemaakte programma’s? Instructies mogen niet onduidelijk zijn (daarom hebben programmeertalen zoals bijvoorbeeld Scratch een vast aantal instructies met elk een duidelijke betekenis).
- Het is niet altijd makkelijk om instructies te bedenken om een tekening te programmeren. Informatici bedenken algoritmes om computers en robots taken te laten uitvoeren en programmeren deze dan in een taal die de computer of robot begrijpt. Merk op dat computers en robots altijd zeer nauwgezet de instructies uitvoeren. Ze blinken daar echt in uit.
Variatie
Van 2D naar 3D: maak gebruik van bijvoorbeeld lego blokjes of een cuisenaire set om leerlingen een 3D-ontwerp te laten maken en hier instructies voor te schrijven.
Een vervolgopdracht in Scratch: laat leerlingen veelhoeken tekenen in Scratch. Gebruik bijvoorbeeld deze opdracht als inspiratie.
Alternatieve inleiding: sandwich robot
Een alternatieve inleiding op dit onderwerp is waar de leerkracht een robot speelt die wordt geprogrammeerd om een boterham te smeren. Kennisnet werkte hier een gids voor uit. Er zijn hier ook talloze filmpjes over te vinden. Pret verzekerd!