Gerard Dummer

Alles over Onderwijs en ICT.

Browsing Posts tagged programmeren

In mijn eerdere post van vandaag verwijs ik naar de CSTA-standaarden waar de SLO zich op baseert als het gaat om Computational Thinking (CT). Deze standaarden zijn in 2011 geformuleerd. CT is een onderdeel van computer science (CS) en CS bestaat naast CT uit: Collaboration, Computer Practice and Programming, Computer and Communication Devices, Community, Global and Ethical Impacts.

In het document van 2011 beschrijven ze het belang van CT als volgt:

We believe that computational thinking (CT) can be used across all disciplines to solve problems, design systems, create new knowledge, and improve understanding of the power and limitations of computing in the modern age. The study of computational thinking enables all students to better conceptualize, analyze, and solve complex problems by selecting and applying appropriate strategies and tools, both virtually and in the real world.

In het document van 2016, dat nog in conceptversie online staat wordt computational thinking niet meer als een apart onderdeel genoemd. De indeling die in dit document wordt aangehouden is: Computing Systems, Networks and the Internet, Algorithms and Programming, Data and Analysis, and Impacts of Computing.

Over computational thinking wordt in deze versie gezegd:

We believe that computational thinking is a problem solving methodology that expands
the realm of computer science into all disciplines, providing a distinct means of
analyzing and developing solutions to problems that can be solved computationally.
With its focus on abstraction, automation, and analysis, computational thinking is a
core element of the broader discipline of computer science and for that reason it is
interwoven through these computer science standards at all levels of K–12 learning.

CSTA kiest hier dus voor de lijn om CT te integreren in CS. Ben benieuwd hoe SLO en Kennisnet tegen deze verandering aankijken…

In mijn blogpost van 16 februari 2017 over computational thinking benoem ik verschillende definities van computational thinking. Mijn eigen definitie voegde ik daar aan toe:

Het oplossen van problemen waarbij je gebruik maakt van de ideeën uit de informatica.

Later bedacht ik me nog dat dit nog niet compleet was want andersom geldt dit, zeker volgens uitgangspunt van Wing, ook. Wing het noemt dit het automatiseren van abstracties. Waarbij abstracties als het ware de denkkapstok is van de informatica. Als ik mijn eigen definite aanvul met dit uitgangspunt dan kom ik uit op:

Computational thinking is enerzijds het oplossen van problemen waarbij je gebruik maakt van de ideeën uit de informatica en anderzijds het gebruiken van informatica om problemen op te lossen.*

Als ik het heb over ideeën dan bedoel ik zaken zoals algoritmes en patronen. Als ik het heb over problemen dan kan dat slaan op een zakelijke insteek (zoals het uitvoeren van een project) als een creatieve insteek (zoals het maken van een kunstwerk).

Een volgende stap die ik wil zetten in mijn denkproces/zoekproces is het volgende: de voorbeelden die rondom computational thinking worden gegeven vind ik nogal hap-snap. Ik zie nog geen duidelijke lijn in de opbouw van computational thinking. Websites zoals CSunplugged bieden allerlei activiteiten aan maar die staan naar mijn idee nog niet in een lijn. Dat komt misschien omdat ik nog niet goed heb gekeken of mijn kennis nog niet groot genoeg is rondom dit onderwerp. Ik weet bijvoorbeeld ook nog niet of dit überhaupt moet of niet.

Als ik een vergelijking zou maken met rekenen-wiskunde dan lijkt het of de activiteiten die benoemd worden de ene keer gaan over sommen als 3 + 4 dan weer over 34 x 35 en dan weer over de vraag hoeveel seconden er in een dag zitten. Sommen die komen uit verschillende plekken van de leerlijn of zelfs uit verschillende leerlijnen.

De website van Kennisnet en de SLO over de leerlijn programmeren komt al meer in de richting. Zij hebben zich gebaseerd op de SLO die zich weer heeft laten inspireren door ISTE en CSTA. Tijd om me daar verder in te verdiepen.

Een idee dat ik ook heb over CT is om te kijken in hoeverre het zinvol is om dit te koppelen aan een taxonomie zoals die van Bloom. Omdat in de stukken die ik tot nu toe lees het vooral gaat over het onderdeel Computational en nog niet zozeer over het onderdeel Thinking. Een idee dat verder wordt ingegeven door het feit dat ik denk dat je eerst aspecten van computational thinking zou moeten herkennen voordat je in staat bent om er iets mee te doen. En dat idee wordt weer getriggerd doordat ik me in de afgelopen jaren ook bezig heb gehouden met de invoering van Wetenschap en Technologie (W&T) op onze Pabo. Een mooi document dat daarin een belangrijke rol speelt is die van Hanno van Keulen waarin hij laat zien hoeveel W&T in ons dagelijks leven een rol speelt. Bij veel voorbeelden die hij noemt is naar mijn idee moeiteloos CT te koppelen. Dat doet hij in zijn publicatie niet. Daarom ter afsluiting Linda Liukas die dat wel doet 🙂

 

*Aanvulling op mijn definitie van 14 maart 2017 op 12 januari 2018: ideeën zou beter vervangen kunnen worden door het begrip “fundamentele ideeën”. Dit sluit beter aan bij auteurs zoals Schwill (1994), Denning (2004) en Zendler en Spannagel (2008) die benadrukken dat computer science op school zich bezig moet houden met de fundamentele ideeën (of great principles of central concepts) omdat het veld zo dynamisch is.

Afgelopen weken hebben studenten van de Pabo van Hogeschool Utrecht hun Wetenschap en Technologie projecten gepresenteerd. De meest uiteenlopende onderwerpen kwamen langs voor de meest uiteenlopende doelgroepen. Ook ICT moest worden verwerkt in de projecten. Veel studenten hebben ICT ingezet ter ondersteuning van onderzoekend leren. Maar er zijn ook studenten geweest die in het kader van ontwerpend leren met ICT aan de slag zijn gegaan. Een paar presentaties ging over de inzet van de BeeBot. Zo is Emily van Hees bij de kleuters aan de slag gegaan met de BeeBot. Zij heeft in vier lessen de leerlingen de basisvaardigheden van programmeren gelegd.

Eerst het principe uitgelegd met hoepels in de speelzaal, daarna op de computer een spelletje over hetzelfde onderwerp, in les 3 werd er geoefend met de BeeBot zelf en in les 4 werd er getest en bijgesteld. In de presentatie zelf zijn verschillende verantwoordingen te vinden over het hoe en waarom van deze opzet.

Ik vind dat ze in deze opzet unplugged activiteiten, ontwerpactiviteiten en computational thinking mooi met elkaar heeft verweven.

Het afgelopen jaar heb ik samen met mijn collega Don Zuiderman de programmeerwedstrijd ScratchMatch opgezet. En afgelopen zaterdag (23 april) was de finale in Utrecht op Hogeschool Utrecht. Het idee kreeg ik vorig jaar juni ongeveer nadat een school had afgezegd voor de First Lego League omdat daar teveel kosten aan waren verbonden. Ik bedacht dat we een alternatieve wedstrijd zouden moeten organiseren zonder hoge instapkosten waar kinderen ook met techniek/ programmeren in aanraking zouden komen. En dat werd ScratchMatch.

We hebben regiofinales gehouden en op 23 april dus de landelijke finale. Dit jaar deden er in totaal 12 scholen mee met elk een aantal teams. In eerste instantie hadden zich ook een aantal VO-scholen opgegeven maar die haakten helaas voor de regiofinales al weer af. Het was een hectische tijd om alles georganiseerd te krijgen maar het was het helemaal waard!

Regiofinales
In februari hadden we drie regiofinales. Twee daarvan organiseerden we in Utrecht en eentje in Zwolle op Hogeschool Windesheim. We reisden met drie juryleden (naast Don en mijzelf ook Sander van Dorsten van onder andere MindMingle) van Utrecht naar Zwolle waar we werden geholpen door Geert Holwerda, van de Pabo.


Ondertussen was het ook erg leuk om te zien wat voor uitwerking ScratchMatch had op de scholen. Zo twitterde Manja Verbeek over een mooi artikel dat verscheen.


En lieten Arina Zeelenberg en Juul Couperus zien hoe zij met Scrum het werken aan Scratch vormgaven.


Finale
Voor de finale sloten zich Marieke Simonis (van onder andere LearnOn) en Linetta Hartman zich bij ons aan. Beide een waardevolle toevoeging aan het team om ScratchMatch te organiseren. Het bedrijf Seecr was zo goed om ons te sponsoren met prachtige prijzen. En de Hogeschool Utrecht zorgde voor de catering (waar we erg blij mee waren!).


Op de finaledag sloten Swen Mulderij en Sjoerd Dirk Meijer (van onder andere IQMaak) zich aan als juryleden.


De Winnaars
Nadat de teams op elkaar hadden gestemd en de jury had overlegd waren de winnaars van ScratchMatchNL bekend. Op de derde plek DriePower van basisschool De Wegwijzer uit Asch.


Met zijn doolhovenspel




Op de tweede plek eindigde Kring1 van basisschool De Kring uit Driebergen.


Met het Planetenspel



En op de eerste plek het team SubSam


Met hun uitdagende spellenreeks



Tot slot
Het was een geweldige ervaring om het te organiseren. Het heel veel tijd gekost maar was zeker de moeite waard. Volgend jaar komt er weer een ScratchMatch. Wil je meehelpen om van het project een nog groter succes te maken? Laten het ons dan weten.

In een vorige post liet ik mijn model zien waarin ontwerpend leren, computational thinking en creativiteit gecombineerd zijn. In deze blogpost een eerste opdracht rondom de BeeBot die hiervan gebruik maakt. Krijg graag feedback op de opzet!

Ontwerpend Leren en de Mogelijkheden Van ICT

Afgelopen blok hebben studenten de keuzecursus Onderwijs ontwerpen voor de 21ste eeuw gevolgd op de HU Pabo. Volgende week is de makerfair met de presentatie van hun techniekproduct en ICT-product. Afgelopen weken ben ik druk bezig geweest (en zal ik nog zijn) met het 3D-printen van de ontwerpen van de studenten. We gebruikten daarvoor de Ultimaker 2. Dat was één van de mogelijkheden waar studenten bij ICT uit konden kiezen (naast een spel ontwerpen in Scratch en een robot bouwen met Lego MindStorms). Daarbij ben ik met verschillende zaken geconfronteerd die ik van te voren niet had bedacht/ doordacht. Ze klinken zo voor de hand liggend dat het achteraf suf klinkt dat ik ze van te van te voren niet heb bedacht. Maar goed volgend jaar beter. Mijn tips bij 3D-printen.

  1. Gebruik Tinkercad voor het ontwerpen van je 3D-model. Ben ik erg tevreden mee en heb er geen student over horen klagen.
  2. Geef van te voren aan dat het 3D-ontwerp niet meer tijd mag kosten om te printen dan … uur. Volgend jaar ga ik voor maximaal 2 uur. In Tinkercad kun je dit niet zien (volgens mij) maar wel in een programma zoals Cura. Dit jaar kreeg ik in eerste instantie ontwerpen van wel 20 uur of meer.
  3. Overschrijdt een ontwerp toch de 2 uur geef dan aan dat je het ontwerp op schaal print. In Cura kun je dit instellen.
  4. De tijd die Cura aangeeft komt niet overeen met de tijd die de printer er daadwerkelijk over doet. Ik merkte dat de printer er zeker 10% langer over deed.
  5. In Cura kun je ook instellen wat de kwaliteit van je print moet worden (Fast, Good, …). Fast is echt voor een prototype. Good is aardig.
  6. Zorg dat het 3D-ontwerp een kant heeft die plat kan liggen. Nu hadden studenten soms ontwerpen gemaakt die ongeveer schuin geprint moesten worden. Dat werkt niet.
  7. Maak een ontwerp waarbij er niet teveel in de lucht geprint moet worden. Sommige ontwerpen hadden behoorlijke uitsteeksels die slechter uit de printer komen dan wenselijk.
  8. Zorg dat de minimale dikte van een 3D-onderdeel zeker 5 millimeter is. Dunnere onderdelen komen er zwakjes uit en zijn breekbaar.
  9. Print één ontwerp tegelijkertijd. Ik dacht tijd te besparen door meerdere ontwerpen tegelijkertijd te printen. Toen het bij één ontwerp misging had dat gevolgen voor de andere ontwerpen.
  10. Callibreer na elke print de plaat waarop je print zodat je zeker weet dat de volgende print er ook weer netjes uit komt.

Meer tips (behalve niet doen :-)). Hoor het graag. Volgend jaar ga ik trouwens de 3D-print opdracht combineren met Lego MindStorms. Persoonlijke tint aan de robot geven. En voor volgend jaar hoop ik ook de tweede 3D-printer aan de praat te hebben gekregen (want die wilde het filament niet laden).

 

 

Tijdens een bijeenkomst met praktijkopleiders gaf ik een korte presentatie wat we doen met wetenschap en technologie op de Pabo. Als introductie liet ik de deelnemers op papier een Bee-Bot programmeren om een bepaalde route af te leggen (Breng de BeeBot thuis). Zie hieronder:

Als hulpmiddel kregen de deelnemers een leeg A4tje. Toen ik rondliep om te kijken hoe de deelnemers de opdracht uitvoerden zag ik dat iedereen het op een andere manier noteerde. Dat had ik niet verwacht. In die bijeenkomst had ik daar verder nog geen conclusies uit getrokken. Wel bleek dat bij de ene notatiewijze er meer fouten werden gemaakt dan bij de andere notatiewijze. Jammer genoeg had ik toen niet de notatiewijzes verzameld

In een bijeenkomst met studenten heb ik de opdracht nog een keer uitgevoerd en de notatiewijzes wel verzameld. Hieronder volgen de verschillende programmeertalen die de studenten kozen:

 

Notatiewijze 1

Notatiewijze 2

Notatiewijze 3

Notatiewijze 4

Notatiewijze 5

Tijdens de les bleek dat studenten die de eerste notatiewijze hadden gekozen (de meest abstracte vorm) de minste fouten maakten. En dat studenten die de vijfde notatiewijze hadden gekozen (de meest concrete vorm) de meeste fouten maakten bij het programmeren.

Naar aanleiding van deze opdrachten valt natuurlijk nog niets te concluderen maar…

Ik vroeg me af:

  • of studenten met een groter ruimtelijk inzicht vaker zouden kiezen voor de abstracte notatiewijze
  • of studenten die voor de abstractie notatiewijze kiezen minder programmeerfouten zouden maken
  • of een hulpmiddel (in de vorm van ruitjes waarin de code moet worden gezet) helpt om bij het schrijven minder fouten te maken
  • of je wel zou moeten willen werken met een hulpmiddel omdat deze het denken ook weer in één bepaalde richting zal sturen.

Of ik hier verder iets mee moet weet ik niet. Ik vond het opvallend dat de verschillende notatiewijzen werden gekozen. Iemand ander hier ook ervaring mee?

Breder getrokken zou je kunnen zeggen: welke strategie helpt studenten/ leerlingen het beste om een programmeerprobleem op te lossen? Zijn er verschillende strategieën? Moet je bepaalde strategieën aanleren?

To zover even mijn overpeinzingen.

 

 

 

 

Rudolf Bekendam, vierdejaars student van HU Pabo – Utrecht heeft een mooi onderzoek gedaan naar de beginsituatie van bovenbouwleerlingen van Daltonschool Rijnsweerd te Utrecht. Daltonschool Rijnsweerd wil een leerlijn programmeren opzetten. Hierover was echter nog te weinig kennis. In het onderzoek van Rudolf heeft hij gekeken naar de beginsituatie van de leerlingen uit de bovenbouw.

Ik vind het een mooi onderzoek. Om verschillende redenen. Het onderwerp spreekt me aan maar vooral de manier waarop hij het heeft uitgewerkt. Belangrijk uitgangspunt in zijn onderzoek waren namelijk de programmeerconcepten (zoals beschreven door Wilson, Hainey, & Connolly, 2012). Deze programmeerconcepten zorgen voor een tooloverstijgende aanpak van programmeren. In de lijst hieronder zie je de programmeerconcepten op een rij.

Ik denk dat het onderzoek van Rudolf verder helpt in het nadenken over programmeren binnen het Nederlandse basisonderwijs.

Onderzoeksverslag Programmeren – Rudolf Bekendam – Pabo ITT HU 2015

Meld je aan voor de kickoff van ScratchMatch via www.scratchmatch.nl! ScratchMatch is de landelijke wedstrijd voor leerlingen in het basisonderwijs en voortgezet onderwijs om het gaafste Scratch project te maken. Op zaterdag 10 oktober is de kickoff in Utrecht van 10.00 tot 14.30 (Hogeschool Utrecht, Padualaan 97). Je kunt daar kennis maken met het programma Scratch en je aanmelden voor ScratchMatch.

Het idee van ScratchMatch
In het schooljaar 2015/2016 start ScratchMatch, een uitdagende en laagdrempelige manier om leerlingen op een leuke manier kennis te laten maken met programmeren. Het idee is eenvoudig: kinderen programmeren in kleine teams (maximaal vier leden) een eigen project (animaties, kunst, spelletjes, muziek of verhalen).
ScratchMatch is een wedstrijd in drie ronden. De eerste ronde is de schoolcompetentie. De tweede ronde de regionale finale en de derde ronde de landelijke finale.

Schoolcompetitie
De eerste ronde is op school. Je speelt elkaars project en daarna mag je punten geven. Let op: je mag geen punten aan jezelf geven, maar alleen aan projecten van anderen. Het populairste project wint de schoolcompetetie en gaat door naar de regiofinale.

Regionale finale
De regiofinales zullen op zaterdag 13 februari gespeeld worden. Tijdens de regionale finale spelen alle schoolwinnaars tegen elkaar. Nadat je elkaars project hebt gespeeld, stem je op de projecten die je het leukst vond.
Naast het spelen van elkaars projecten, leg je aan de jury uit hoe je het spel hebt gemaakt. Samen duik je in de code en laat je zien dat jij een echte codekraker bent! De winnaars van de regionale finales gaan door naar de landelijke finale.

Landelijke finale
De landelijke finale is op zaterdag 23 april 2016 in Utrecht. Tijdens de landelijke finale speel je de projecten van de andere regiowinnaars. Ook hier stem je op elkaars project. Zo worden nummer 1, 2 en 3 bekend gemaakt. Daarnaast is er de juryprijs. De jury kijkt naar originaliteit, creativiteit en programmeerkwaliteiten. Je kunt als team zowel de publieksprijs als de juryprijs winnen.

Meedoen?
Wil je meer informatie? Kom naar de kickoff op zaterdag 10 oktober. Je leert dan direct een tof project bouwen in Scratch! Of kijk op www.scratchmatch.nl en meld je aan voor ScratchMatch. Deelname is gratis en opgeven kan tot 1 december 2015.

Afgelopen week was de Scratchconferentie 2015 in Amsterdam en ik was er een paar dagen bij. Het was een inspirerende conferentie! In deze blogpost zal ik mijn indrukken verwerken.

Vooraf
Vooraf nog even het volgende. Binnen onze Pabo (en alle andere) gaan we meer aandacht besteden aan Wetenschap en Technologie. Hierbinnen spelen onderzoekend en ontwerpend leren een belangrijke (didactische) rol. In dit kader richten we ons vanuit ICT en Onderwijs op het onderwerp makermovement. En binnen dit onderdeel richten we ons vooral op de driedeling die Sylvia Libow Martinez en Gary Stager gebruiken in hun boek Invent to Learn: Fabricating, Physical computing en Programming. Bekijk voor een toelichting daarop de clip van mijn collega Don Zuiderman:

Scratch past dus in dit kader. Het is een manier om op een toegankelijke en aantrekkelijke manier met het onderwerp programmeren aan de slag te gaan.

Programmeren
Het onderwerp programmeren heeft in zichzelf ook een belangrijke waarde. Dat wordt duidelijk gemaakt door allerlei economische lobbygroepen. Van verschillende kanten wordt echter aangegeven dat alleen zo’n economisch perspectief (we hebben programmeurs nodig voor de toekomst) wel erg eenzijdig is. In een van de keynotes gaf Beat Döbeli Honegger uit Zwitserland een mooi overzicht waarom programmeren zo waardevol kan zijn:

1) explanation of the world (grip krijgen op de wereld om je heen)
2) generic competences (algemene competentie; manier om het probleemoplossend vermogen te vergroten’
3) didactical (spreekt bepaalde doelgroep van kinderen aan; succeservaring voor kinderen)
4) preparation for study and job (voorbereiding op studie en beroep; het economisch argument)

Zijn presentatie vind je hier.

Keynote Mitch Resnick
Mitch Resnick is de bedenker van Scratch en een inspirerende spreker. Hij gaf in zijn keynote een paar interessante zaken aan. Redenen om met Scratch aan de slag te gaan zijn verwoord in dit mooie getekend verslag:

1) develop your voice
2) thinking and how to work with others
3) identity: how do you see yourself as a member of the community

De insteek van Resnick zit veel meer op generieke vaardigheden en burgerschap. Het is dezelfde insteek die ik zie bij mensen die actief bijdragen aan Wikipedia of onderwijsvernieuwers. De sfeer had deze conferentie ook.

Een ander mooi punt uit de keynote van Resnick was de term “interest based pathways”. Wil je verschillende kinderen interesseren in het programmeren dan moet je differentiëren in de aanpak. De aanpak van MIT is om dat thematisch te doen (bijvoorbeeld via Hip Hop) en via Microworlds. Microworlds is een uitgeklede en voorgestructureerde omgeving waarin kinderen kunnen programmeren. Voorbeeld van Hip Hop vind je hier.

Tot slot liet hij de omgeving ScratchX zien. In deze omgeving zijn de verschillende extensies van scratch te bekijken en toe te voegen.

Phill Bagge
Wat een enthousiaste spreker is dit zeg! Veel ervaring in het Engelse onderwijs in het geven van programmeerlessen. Van hem hoorde ik de term computational thinking and doing voor het eerst. Zijn belangrijkste les is dat je geen oplossingen moet proberen te geven maar hints en strategieën. Dit ter zelfbescherming en om de hulpeloosheid te doorbreken. Hij maakt onderscheid in twee soorten hulpeloosheid: de lieve en de argressieve.

Verder ging hij in op onderwerpen die belangrijk zijn bij het leren programmeren: decomposing (ontleden van een probleem) en debugging (problemen oplossen). Verder geeft hij aan dat het bij programmeren gaat om het werken met algoritmes (stappenplannen om iets uit te voeren), generalisaties (wat werkt in de ene situatie kan ik toepassen in de andere), abstraction (de overbodige informatie leren weglaten zodat je met de kern van het probleem kunt werken).

Scratch2015ams

Zijn website boordevol informatie vind je hier. Binnenkort verschijnt ook zijn boek over Scratch.

Workshops
De rest van de conferentie heb ik workshops bijgewoond om mijn vaardigheden rondom Scratch te verhogen. De eerste workshop (New Dimensions to Scratch with littleBits and Leap Motion) viel voor mij jammer genoeg in het water omdat ik eduroam niet aan de praat kreeg.

De tweede workshop was Fun with Scratch Junior and other coding games. Daarbij ik samen met iemand anders een tijd bezig geweest met LightBot. Een leuke app waarin je steeds complexere programmeerproblemen moet oplossen.

De mensen van Coding and Bricks lieten Scratch samenwerken met Lego WeDo. Het leuke van hun opzet was dat zij een verhaal als uitgangspunt gebruiken waarin problemen zitten die door programmeren in Scratch en bouwen met Lego WeDo. Zo moesten we het poppetje Scratch uit handen zien te houden van Sulfator. Zo moesten we een brug bouwen die open en dicht ging en moesten we een kooi open laten gaan om Scratch te laten ontsnappen.

In de workshop Scratch in Science: Creating Experiments and Making Sense of the Data gehouden door Steve Holmes uit Ierland konden we allerlei sensoren aansluiten op Scratch en metingen verrichten.

MakeSense01

In de workshop Hip-Hop Dance and Scratch hebben we in de al eerder genoemde Microworld een hip-hop nummer gemaakt.

Tot slot in de workshop Round the Circuit verbonden we de MakeyMakey met Scratch en bouwden zo een basgitaar. In Scratch zetten we een basgitaarcursus in elkaar! Erg leuk om te doen.

Tot slot
Bekijk zeker de keynote Linda Liukas, huur de mensen van getekend verslag ook een keer in en ga zelf een keer aan de slag met Scratch!