Matematik Grundskola åk 4-6 Modul: Matematikundervisning med digitala verktyg II Del 3: Programmering med matematik Programmering med matematik Ola Helenius, NCM, Morten Misfeldt, Aalborg universitet och Peter Nyström, NCM I grundskolans kursplan för matematik anges att undervisning i ämnet matematik ska ge eleverna möjligheter att utveckla kunskaper i att använda digitala verktyg och programmering för att kunna undersöka problemställningar och matematiska begrepp, göra beräkningar och för att presentera och tolka data (Skolverket, 2017). Där betonas programmeringens roll som verktyg för matematisk verksamhet. För att konstruera och beskriva stegvisa instruktioner (åk 1-3) och skapa algoritmer vid programmering i visuella och andra programmeringsmiljöer (åk 4-6 och 7-9) är matematik också användbart, och att tänka matematiskt hjälper den som ska skapa program. En viktig del i skapandet av program är felsökning, eftersom det ofta smyger sig in fel som gör att instruktioner eller algoritmer inte fungerar som man tänkt. Effektiva felsökningsförfaranden utnyttjar systematiska och undersökande metoder för att hitta fel i program och utnyttjar därmed viktiga matematiska kompetenser. Matematiska begrepp, procedurer och resonemang är med andra ord användbara när man vill få datorprogram att fungera. Matematik är dessutom ett kompakt och effektivt språk som kan beskriva kvantitativa och rumsliga fenomen med en logisk struktur, på ett sätt som ofta relativt enkelt kan omvandlas till kod, som kan tolkas av en dator. En utmaning i matematikundervisningen handlar alltså om att synliggöra den matematik som är ändamålsenlig när eleverna skriver program. Syftet med denna text är att visa hur lärare kan organisera undervisning med programmering på ett sådant sätt att eleverna kan få använda den matematik de redan kan för att skapa mer ändamålsenliga algoritmer. Programmering som en beskrivning av en situation Mycket av den matematik som eleverna lär sig i grundskolan är användbar i programmering, eftersom den kan användas för att beskriva världen, och många programmeringsuppgifter bygger på en matematisk modell av världen. Matematisk modellering finns dessutom med som en del av kunskapskraven i matematik för åk 7-9. Väl genomtänkta programmeringsuppgifter kan erbjuda goda möjligheter att utveckla matematisk modellering. Oberoende av om man konstruerar ett spel i Scratch, programmerar en robot eller skapar en simulering är det nödvändigt att bygga upp en god förståelse för den situation som ska programmeras. Om till exempel någon eller något ska röra sig behöver vi fundera ut hur. Ska den röra sig fram och tillbaka, upp och ned, i cirklar, i olika hastighet? De aspekter av situationen som vi vill ha med i vårt program måste operationaliseras, det vill säga uttryckas på ett sätt som andra datorer förstår. Vi måste välja ett sätt att representera riktningar, lägen och hastigheter. Om vi vill göra stegvisa instruktioner som en annan människa ska tolka måste vi också på motsvarande sätt välja lämpliga https://larportalen.skolverket.se 1 (7)
representationer. På detta sätt påminner programmeringsuppgifter om matematisk modellering, där man beskriver vissa utvalda aspekter av en situation med matematisk terminologi. Ett konkret exempel är att programmera en robot så att den följer en på förhand given bana. Den här roboten har fyra hjul med en motor till det högra hjulparet och en annan till det vänstra hjulparet. Den går framåt eller bakåt om båda motorerna driver åt samma håll och den svänger om den ena motorn är på och den andra av, eller om motorerna driver åt olika håll. Robotens rörelser kan programmeras till exempel genom att man anger hur många varv som motorn ska rotera och åt vilket håll den ska rotera. Uppgiften att programmera roboten skulle kunna lösas så här: 1. Eleverna börjar med att undersöka hur långt roboten förflyttar sig på ett motorvarv. Detta kan de antingen göra genom att mäta hur långt roboten förflyttar sig på ett motorvarv (se figur 1) eller genom att mäta hjulets diameter och beräkna vilken sträcka ett motorvarv motsvarar. 2. På motsvarande sätt bestämmer de hur många grader roboten vrider sig när de två motorerna snurrar åt varsitt håll. 3. När eleverna har bestämt hur långt roboten förflyttar sig på ett motorvarv och hur mycket den svänger på ett motorvarv, har de tillräcklig information för att skapa en modell av hur roboten rör sig. 4. Roboten kan nu programmeras att följa en bana utgående från en algoritm som består av en följd av ett antal kör-framåt-och sväng-instruktioner. Figur 1. Elever mäter hur långt roboten kör på ett varv. Denna programmeringsuppgift kan göras både med visuella och andra programspråk och den kan enkelt omvandlas till stegvisa instruktioner som inte kräver någon dator. https://larportalen.skolverket.se 2 (7)
Matematik och programmering För att få en tydligare uppfattning om hur matematikinnehållet och programmeringsaktiviteter ömsesidigt kan stärka varandra, kan vi jämföra de två. Vilka aspekter av matematik och matematiskt arbete är viktiga i programmering och tvärtom? Vilka överlapp finns det mellan matematiskt tänkande och datalogiskt tänkande? Några exempel på hur programmering och matematik samspelar har indentifierats av forskare och behandlas i två forkningsartiklar (Ejsing-Duun & Misfeldt, 2016; Misfeldt & Ejsing-Duun, 2015). Dessa exempel presenteras nedan. Algoritmer och matematik: Vid programmering arbetar eleverna med algoritmer i betydelsen systematiska beskrivningar av problemlösningsstrategier som bygger på samband mellan orsak och verkan, samt på stegvisa beskrivningar av händelseförlopp. Algoritmiskt tänkande handlar dels om att få maskiner att utföra sådana algoritmer, dels om att undersöka och konstruera sådana systematiska beskrivningar. Det har stora likheter med det som i kursplanerna beskrivs som att välja och använda matematiska metoder för att göra beräkningar och lösa rutinuppgifter samt att föra och följa matematiska resonemang. Matematiken i kod och modeller: De flesta program bygger på en modell av världen, och modellen är eller kan bli matematisk. Att programmera kan därför bli en slags matematisk modelleringsuppgift. Sådana modeller kan handla om geometriska förhållanden och rörelser, exempelvis beskrivna med koordinatsystem, eller förhållanden som kan beskrivas med algebra (uttryckas med en formel), och därmed ingå i ett datorprogram. I allmänhet handlar det om matematik inom många olika områden. Matematiskt tänkande och kunnande kan utvecklas genom programmering: Eleverna kan utveckla matematik och matematiskt tänkande när programmering används som ett verktyg för att lösa matematiska problem. Val och utformning av programmeringsuppgifter har stor betydelse för elevernas möjligheter att använda den matematik de känner till, och även för lärarens möjlighet att tillföra ny matematik som kan vara relevant för programmeringen. Läraren kan orkestrera en undervisningssituation som ger goda förutsättningar för att synliggöra matematiken i programmeringen. När man använder programmeringsuppgifter i matematikundervisningen är det bra att vara uppmärksam på de möjligheter till matematiklärande som uppstår i elevernas arbete. Det är inte riktigt samma sak som att på förhand själv fundera ut vilken matematik som är lämplig för att modellera det problem eller den situation som ska programmeras. I elevernas arbete kan nämligen annan matematik dyka upp, och kanske tolkar de inte heller själva situationen eller problemet likadant som läraren. Det är inte alltid på förhand möjligt att planera vilka möjligheter till samspel mellan matematik och programmering som ska dyka upp, men ändå viktigt att vara beredd på att fånga dessa och veta vad man ska göra med dem. Om man på förhand tänker igenom programmeringsuppgiften och vilken matematik som kan uppkomma, ökar möjligheterna att hitta och använda dessa möjligheter till samspel. Sådana förberedelser är en viktig del av en genomtänkt orkestrering av klassrumsarbetet. https://larportalen.skolverket.se 3 (7)
Att undervisa för att stödja samspelet mellan matematik och programmering Det finns en rad olika sätt att orkestrera undervisningen så att matematik och programmering kan stödja varandra. En möjlighet är att läraren identifierar matematiken i elevernas aktiviteter, synliggör den och uppmuntrar eleverna att uttrycka sig om matematiken. Läraren kan be eleverna att förklara sina idéer och vad de önskar göra så noggrant att det är möjligt att hjälpa dem att se de matematiska relationerna. Läraren kan också låta eleverna själva förklara matematiken som finns i deras arbeten. Det kan exemplevis handla om storlek, läge och förflyttningar. En annan möjlighet är att utveckla elevernas pågående programmeringsarbete genom att erbjuda och tillföra matematiska formuleringar eller representationer. Det kan ske genom spontana snabbgenomgångar med enskilda elever eller grupper av elever. En tredje väg är att tänka igenom och utforma programmeringsuppgifterna så att de ger många möjliga relationer till matematik. Läraren kan i sin planering tänka igenom vilka olika sätt eleverna kan ta sig an uppgifterna samt hur läraren kan stötta elever på olika sätt. En fjärde möjlighet är att säkerställa att relationerna mellan matematik och programmering diskuteras i klassen. Läraren kan samla några elever eller hela klassen kring en elevs dator och låta eleven förklara det matematiska innehållet, alternativt själv förklara. Läraren kan också samla ett antal elevarbeten för en gemensam genomgång i klassen. Aktiviteter som exempel på samspel mellan matematik och programmering Möjligheterna till samspel mellan matematik och programmering illustreras i nedanstående två exempel på klassrumsaktiviteter. Båda exemplen handlar om instruktioner, algoritmer och programmering i spelsammanhang. Spel är en av de huvudkategorier av digitala lärresurser som identifierats i forskningsöversikten Digitala lärresurser i matematikundervisning från Skolforskningsinstitutet (Skolforskningsinstitutet, 2017). Lärresurser som utnyttjar spelmekanismer för att förmedla ett ämnesinnehåll bygger på uppdrag, utmaningar, belöningar och tävlingsmoment. Spel och lekar är också ett område där stegvisa instruktioner och algoritmer för programmering har en naturlig plats och utvecklingen av spel är ett område som engagerar många elever. Exempel 1 Sänka skepp Följande exempel är hämtat från artikeln Læringsmålstyret undervisning og målforståelser statiske og dynamiske mål (Misfeldt & Tamborg, 2016). Det visar hur matematiska möjligheter i programmeringsuppgifter kan utvecklas och hur viktigt det är att vara öppen och fånga dessa möjligheter. I detta exempel arbetade eleverna undersökande och uppgiften var att utveckla en variant av spelet sänka skepp. Läraren hade planerat förloppet och föreställt sig att eleverna skulle sätta upp regler för de spel som de skulle konstruera. Bra regler skulle vara ett tecken på att eleverna hade utvecklat sin förmåga att kommunicera matematik. Lärarens mål med https://larportalen.skolverket.se 4 (7)
lektionen var alltså att eleverna skulle formulera bra regler. Tecken på lärande skulle vara 1) att spelet kunde spelas med vägledning av en elev från den grupp som hade formulerat reglerna, 2) att spelet kunde spelas med en kombination av stöd av en person från gruppen och av nedskrivna regler, samt 3) att spelet kunde spelas av en annan grupp med hjälp endast av nedskrivna regler i form av en guide. Under arbetets gång visade det sig emellertid att elevernas arbete med uppgiften tog en vändning som läraren inte hade förutsett. Eleverna blev mycket engagerade i att utveckla matematiska innovationer i spelet, bland annat en x-laser som rensar en hel rad och kvadrantbomber som rensar en kvadrant och andra exempel baserade på matematik. Läraren accepterade detta uppfinningsrika sätt att angripa spelet Sänka skepp, och valde att förändra delar av det ursprungliga målet för lektionen. Det ändrades till att eleverna genom utveckling och utprövning av ett spel skulle lära sig att orientera sig i ett koordinatsystem. Läraren reviderade också sin uppfattning om vilka tecken på lärande som skulle kunna observeras i den här uppgiften. Han satte fokus på 1) att eleverna konstruerade spelregler som gav möjligheter att orientera sig i koordinatsystemet, 2) att eleverna själva anpassade och utvecklade gemensamma idéer till sina egna samt 3) att eleverna undersökte och reflekterade över reglernas betydelse för spelets gång. Läraren uttryckte efter lektionen osäkerhet om huruvida det var korrekt att ändra målen, och även vad som räknades som tecken på lärande. Men aktiviteten fungerade och överlämnades till en kollega som arbetade med den i parallellklassen. Detta visar att arbete med programmering kan kräva en mer flexibel inställning från lärarens sida än traditionell matematikundervisning, där det vanligen är lättare för läraren att förutsäga en lektions utfall. Eleverna fick möjlighet att uppleva att den kunskap de hade om koordinatsystemet gav dem en tydlig struktur och utvidgade ramarna för vad de kunde göra när det gäller att utveckla spelets regler. På detta sätt skapades också motivation för eleverna att lära sig begrepp relaterade till koordinatsystem. Arbetet med spelregler bidrog till att eleverna reflekterade över olika spelscenarier samt hur dessa skulle undersökas och planeras. Därmed utvecklades elevernas tänkande i att hitta alternativa lösningar. Det är också värt att uppmärksamma de didaktiska överväganden som läraren gjorde. Exemplet visar nämligen hur matematiska ansatser och metoder som utvecklas bland eleverna kan plockas upp av läraren och användas för att berika undervisningen. Samtidigt illustreras att det då kan det bli nödvändigt att justera planering och mål efterhand. Lektionen kan helt enkelt ta en annan matematisk bana än vad som först var tänkt. Läraren såg att det var några elever som tolkade uppgiften på ett sätt som var matematiskt meningsfullt och som hjälpte eleverna i arbetet. Läraren riktade de andra elevernas uppmärksamhet till arbetet i denna grupp. Därefter spred sig gruppens idé och läraren kunde diskutera koordinatsystemet i detalj med hela klassen samlad. Läraren använde en orkestrering där han visar en elevs skärm för resten av klassen och diskuterar det som finns https://larportalen.skolverket.se 5 (7)
på skärmen för att påverka de andra elevernas lösning av uppgiften. Detta visade sig vara synnerligen effektivt och omvälvande för denna matematiklektion. Exempel 2 Programmera spel Detta exempel är hämtat från Programmering af robotenheder i grundskolen (Misfeldt & Ejsing- Duun, 2015) och visar hur en lärare skapar en snabbgenomgång i algebra för att eleverna behöver det i sina programmeringsuppgifter. I detta projekt var ett viktigt syfte att lärarna i sin undervisning skulle utnyttja elevernas arbeten. Elevernas uppgifter skulle inte bara resultera i ett svar eller att uppgiften blev mer eller mindre korrekt utförd, utan det som eleverna producerade skulle användas som utgångspunkt för den fortsatta undervisningen. Eleverna i exemplet gick i femte klass och fick i uppgift att programmera spel. De använde lärplattor och programmet Hopscotch. Med dessa elever blev det uppenbart att deras idéer om spelet och hur man vanligen interagerar med spel på lärplattor genererade många intressanta diskussioner och skapade inlärningsmöjligheter. Oliver försökte till exempel flytta sin figur genom att luta lärplattan. Han bad de andra om hjälp och då frågade Ally honom Varför tabbar du inte bara? Hon föreslog att Oliver skulle arbeta med en enklare typ av kommando för att få en liknande funktion, men Oliver svarade: Därför att det är ett spel, Ally. Det ska vara roligt liksom. Digitala spel är en naturlig del av många elevers vardag. Det sätt man vanligen interagerar med spel är lika internaliserat hos barnen som annat i vardagen. De förutsätter helt enkelt att sådant som nedräkning, poängsystem, att styra med pilar, att styra med fingrarna på skärmen eller att luta själva lärplattan är något som ska ingå i ett spel. Detta genererar en speciell typ av motivation hos eleverna när de ska konstruera sina egna spel. I det här fallet kunde läraren aktivt bygga på detta hon insåg att många av elevernas önskemål beträffande spelen kunde fångas upp med begreppet variabler. Trots att eleverna inte hade kunskap om variabler (ett matematiskt begrepp som ansågs ligga över deras nivå ) deltog hälften av klassen med stort intresse när läraren visade hur man använder variabler och koordinatsystem för att konstruera en styrfunktion med pilar. Detta exempel visar att stark motivation kan finnas i att designa ett spel eleverna vill att det ska bli på ett visst sätt och de vill inte kompromissa om det. Detta innebär både en möjlighet att lära och en tänkbar svårighet, då eleverna lätt blir besvikna när de inte kan konstruera det de så gärna vill. Dessutom visar exemplet att matematik och programmering möts i arbetet och att det är lärarens agerande som skapar detta möte. Läraren observerade först att några elever arbetade med problem som alla kunde hantera genom att de införde ett visst matematisk begrepp, nämligen variabler. Detta inkluderar sådan matematik som kan modellera positioner, rörelser och kommandon för att skapa rörelser. Därefter tog hon ett tydligt didaktiskt grepp när hon med utgångspunkt från just dessa elevers arbeten genomförde en mer eller mindre spontan snabbgenomgång. Denna var främst riktad till de elever som hade problem med figurstyrningen, men hölls på ett sådant sätt att alla som var intresserade kunde lyssna. Det läraren gör här är alltså att fånga upp vissa fenomen som har med spelkonstruktionen att göra och rikta intresset för dessa fenomen till ett intresse för https://larportalen.skolverket.se 6 (7)
variabler och koordinatsystem. Sättet på vilket läraren gör detta får också effekten att antalet elever som är uppmärksamma på just detta problem vidgas från några få till nästan hela klassen. Referenser Ejsing-Duun, S., & Misfeldt, M. (2016). Programmering af robotenheder i grundskolen. Læring og Medier 8(14). Misfeldt, M., & Ejsing-Duun, S. (2015). Learning Mathematics through Programming: An Instrumental Approach to Potentials and Pitfalls. I K. Krainer, & N. Vondrová (Red.), CERME9: Proceedings of the Ninth Congress of the European Society for Research in Mathematics Education (sid. 2524-2530). Prague, Czech Republic: Charles University in Prague, Faculty of Education and ERME. Misfeldt, M., & Tamborg, A. L. (2016). Læringsmålstyret undervisning og målforståelser statiske og dynamiske mål. Cursiv, (19), 113-139. Skolforskningsinstitutet. (2017). Digitala lärresurser i matematikundervisningen: Delrapport skola. Solna: Skolforskningsinstitutet. Skolverket. (2017). Läroplan för grundskolan, förskoleklassen och fritidshemmet 2011: reviderad 2017 https://larportalen.skolverket.se 7 (7)