Spelend leren programmeren? 2016 Tony Opsomer - tony.opsomer@vives.be
Korte inhoud Waarom leren programmeren? Betekenis techn. werking leren begrijpen? Nut van algoritmisch denken? Leren programmeren in de praktijk Wat zegt onderzoek? Problemen bij overgang blok tekst Vaststellingen uit de praktijk Physical computing Even zelf proberen
Waarom leren programmeren? Maatschappij digitaliseert Alle jongeren moeten technologische evolutie kunnen volgen maw technologie leren gebruiken + werking leren begrijpen/gevolgen leren inschatten Voldoende jongeren moeten technologische evolutie kunnen sturen maw nieuwe technologie kunnen creëren (Samaey & Van Remortel, 2014)
Korte inhoud Waarom leren programmeren? Betekenis techn. werking leren begrijpen? Nut van algoritmisch denken? Leren programmeren in de praktijk Wat zegt onderzoek? Problemen bij overgang blok tekst Vaststellingen uit de praktijk Physical computing Even zelf proberen
Betekenis techn. werking leren begrijpen? Computationeel denken (check ook: http://csunplugged.org/) Maw het vermogen om problemen op te lossen en oplossingen zo te formuleren dat computers ingezet kunnen worden voor de uitvoering ervan Vrij vertaald: algoritmisch leren denken (probleemdefinitie -> analyse -> algoritme -> programma -> controle -> documenteren) + inzicht in de werking van computers en netwerken (Wing, 2006)
Korte inhoud Waarom leren programmeren? Betekenis techn. werking leren begrijpen? Nut van algoritmisch denken? Leren programmeren in de praktijk Wat zegt onderzoek? Problemen bij overgang blok tekst Vaststellingen uit de praktijk Physical computing Even zelf proberen
Nut van algoritmisch denken? Reeds op jonge leeftijd leren programmeren kan een betekenisvol positief (transfer)effect hebben op de algemene denk- en probleemoplossingsvaardigheden van jongeren, op voorwaarde dat het onderwijs voldoende lang duurt én dat er tijdens de programmeerlessen ook aandacht besteed wordt aan de articulatie en generalisatie van de betreffende vaardigheden (De Corte & Verschaffel, 1986)
Korte inhoud Waarom leren programmeren? Betekenis techn. werking leren begrijpen? Nut van algoritmisch denken? Leren programmeren in de praktijk Wat zegt onderzoek? Problemen bij overgang blok tekst Vaststellingen uit de praktijk Physical computing Even zelf proberen
Leren programmeren in de praktijk Twee methodes van aanpak: Blokgebaseerd Tekstgebaseerd
Leren programmeren in de praktijk
Korte inhoud Waarom leren programmeren? Betekenis techn. werking leren begrijpen? Nut van algoritmisch denken? Leren programmeren in de praktijk Wat zegt onderzoek? Problemen bij overgang blok tekst Vaststellingen uit de praktijk Physical computing Even zelf proberen
Wat zegt onderzoek? (1/2) Het gebruik van blokgebaseerde omgevingen leidt tot hogere motivatie dan het gebruik van tekstgebaseerde omgevingen (Booth & Stumpf, 2013) Overgang van blok- naar tekstgebaseerd programmeren gaat gepaard met lichte prestatiewinst, hogere motivatie en het sneller doorgronden van (Armoni et al, 2015)
Wat zegt onderzoek? (2/2) De overgang van blok- naar tekstgebaseerd programmeren leidt tot problemen (meer info). Bovendien komen blokgebaseerde omgevingen te vaak over als niet echt wat de motivatie negatief beïnvloedt (Powers et al, 2007)
Korte inhoud Waarom leren programmeren? Betekenis techn. werking leren begrijpen? Nut van algoritmisch denken? Leren programmeren in de praktijk Wat zegt onderzoek? Problemen bij overgang blok tekst Vaststellingen uit de praktijk Physical computing Even zelf proberen
Problemen bij overgang blok tekst (Kölling, Brown, Altadmri, 2015) Leesbaarheid van code Onthouden van commando s & syntax Het aantal beschikbare commando s & gegevenstypes stijgt Noteren van expressies wordt moeilijker Spelling wordt belangrijk: Typen is niet eenvoudig voor jonge kinderen Hoofdlettergevoeligheid binnen bepaalde tekstomgevingen Correct noteren van scopes bij programmeerstructuren Foutboodschappen worden complexer Beheer layout (= inspringen van code) wordt soms belangrijk OOP wordt (soms) opeens geïntroduceerd
Korte inhoud Waarom leren programmeren? Betekenis techn. werking leren begrijpen? Nut van algoritmisch denken? Leren programmeren in de praktijk Wat zegt onderzoek? Problemen bij overgang blok tekst Vaststellingen uit de praktijk Physical computing Even zelf proberen
Vaststellingen uit de praktijk (1/3) Sommige lkr/organisaties analyseren programmeeroefeningen te weinig en laten lln te veel via trial-and-error werken In begin lkr-gestuurd analyseren van eenvoudige problemen Geleidelijk moeilijker & lln (deel)problemen zelfstandig laten oplossen Lln niet dadelijk aan pc laten beginnen maar eerst redenering (eventueel in groepjes van 2) op papier zetten (bvb. NS-diagram, ) Lln of groepje checken via speeddating hun redenering met die van een of meer andere lln/groepjes Laat lln na x minuten doorschuiven naar een andere pc en verder werken met code van een ander (weliswaar met eigen redenering)
Vaststellingen uit de praktijk (2/3) Anderzijds mag een lln ook fouten maken in zijn/haar analyse zolang de lln de fouten zelf ontdekt en zijn/haar analyse & code aanpast. Bij fouten hebben veel lln de neiging de lkr erbij te halen om de oplossing te vragen Maak ook af en toe fouten als lkr -> betrek de lln in de foutenanalyse Waar zitten we vast? Beschrijf het probleem? Welke delen van de code werken wél/niet? Tips: http://philbagge.blogspot.co.uk/2015/02/eight-steps-topromote-problem-solving.html
Vaststellingen uit de praktijk (3/3) Wanneer is algoritme X beter dan algoritme Y (voor eenzelfde probleem)? Lln komen immers elk met eigen oplossingen Hoe evalueer je een algoritme objectief? Check op juistheid, efficiënte werking en aanpasbaarheid Moeilijk te objectiveren: misschien helpt Dr. Scratch?? http://drscratch.programamos.es/
Vaststellingen uit de praktijk (3/3)
Korte inhoud Waarom leren programmeren? Betekenis techn. werking leren begrijpen? Nut van algoritmisch denken? Leren programmeren in de praktijk Wat zegt onderzoek? Problemen bij overgang blok tekst Vaststellingen uit de praktijk Physical computing Even zelf proberen
Physical computing (1/2) Physical computing, in the broadest sense, means building interactive physical systems by the use of software and hardware that can sense and respond to the analog world. In practical use, the term most often describes projects that use sensors and microcontrollers to translate analog input to a software system, and/or control electro-mechanical devices such as motors, servos, lighting or other hardware. (https://en.wikipedia.org/wiki/physical_computing)
Physical computing (2/2) Physical computing verhoogt de motivatie, maakt programmeren tastbaar, helpt in het verwoorden van de foutenanalyse, enz. Physical computing past binnen STEM en kan gerealiseerd worden via zowel blok- als tekstgebaseerde omgevingen. Kanttekeningen: integratie in de lespraktijk blijkt vrij duur -> hoekenwerk? hardware/software werkt niet altijd even stabiel robuustheid hardware / batterijcapaciteit soms onvoldoende voor lesgebruik
Korte inhoud Waarom leren programmeren? Betekenis techn. werking leren begrijpen? Nut van algoritmisch denken? Leren programmeren in de praktijk Wat zegt onderzoek? Problemen bij overgang blok tekst Vaststellingen uit de praktijk Physical computing Even zelf proberen
Even zelf proberen Hoek 1: PC + Scratch (gratis, Windows/Mac/online) + Webcam Laat de kat miauwen als ze veel beweging ziet of veel geluid hoort Hoek 2: PC + Scratch (gratis, Windows/Mac/online) + Picoboard Laat de kat een vierkant tekenen na een druk op de knop. De snelheid wordt bepaald door de stand van de schuifweerstand Hoek 3: ipad + Tickle (gratis, ios) + Sphero Laat de bal een vierkant rollen en op het einde een andere kleur aannemen via een druk op de knop Hoek 4: ipad + Tynker (gratis, Androïd/iOS) + Parrot rolling spider Laat de drone opstijgen, een vierkant vliegen en landen via 3 knoppen
Even zelf proberen 4 bundels: BUNDEL 1A: introductie grafisch programmeren via programmeerbaar speelgoed & Picoboard BUNDEL 1B: verder bouwen op programmeerstructuren in een grafische omgeving maar met een iets complexer probleem en gebruik maken van een micro + webcam BUNDEL 2: vanuit een gelijkaardige probleemstelling kennismaken met de uitwerking ervan in diverse physical computing omgevingen (zowel grafische als tekstueel geprogrammeerd) BUNDEL 3: zelf aan de slag (grafische + tekstueel) met een selectie van physical computing omgevingen