ÖREBRO UNIVERSITET Grundlärarprogrammet, inriktning 4-6 Matematik Matematik självständigt arbete, avancerad nivå 15 HP VT20
Elevers förståelse för programmering
En fallstudie om elevers förståelse för programmering i årskurs 5Amelie Holfve
Handledare: Andreas Eckert
Students understanding of programming
A case study about students’ understanding of programming in grade 5Abstract
Programming is since 2018, a new subject in the Swedish curriculum. This case study therefore focuses on students’ understanding of introductory programming, to help teachers get a better understanding of how to teach and assess the subject. The theory computational thinking was used as a foundation for identifying the students’ incremental and iterative process as well as their testing and debugging process. It was also used for identifying the students’ understanding of programming concepts. The data for this study was collected through recordings of students’ screens and conversations, while introducing them to programming in Scratch. The results showed that students had some difficulties with some programming concepts. Furthermore, the results showed that the processes were dependant on each other’s development.
Key words: Programming, students, computational thinking
Sammanfattning
Programmering har introducerats som ett nytt delmoment i den svenska läroplanen sedan 2018. Denna fallstudie har därför fokuserat på elevers förståelse för programmering i introducerande undervisning. Detta för att hjälpa lärare att få en bättre förståelse för hur de kan implementera programmering i sin undervisning. Teorin datalogiskt tänkande har använts som grund för analys av datamaterialet, för att identifiera elevers inkrementella och iterativa process samt testa och felsöka processen. Teorin användes också för att identifiera elevers förståelse för programmeringsbegrepp. Insamlingen av datamaterialet utfördes med inspelningar av elevers skärmar och samtal, medan de introducerades till programmering i Scratch. Resultatet visade på att elever hade svårigheter med vissa programmeringsbegrepp. En slutsats var även att programmeringsprocesserna var beroende av varandra för att utvecklas.
Innehållsförteckning
Inledning ... 1
Syfte och frågeställningar ... 1
Disposition ... 2
Litteraturgenomgång ... 2
Programmering ... 2
Programmering i den svenska läroplanen för årskurs 4-6 ... 3
Tidigare forskning ... 3 Teoretisk bakgrund ... 4 Datalogiskt tänkande ... 5 Begreppen. ... 5 Programmeringsprocesser. ... 5 Metod ... 6 Datainsamlingsmetod ... 6
Urval och undersökningskontext. ... 7
Lektionernas innehåll. ... 7
Analysmetod ... 9
Etiska överväganden ... 11
Reliabilitet, validitet och generaliserbarhet ... 11
Resultat ... 11
Övergripande resultat ... 12
Användning av programmeringsbegreppen ... 12
Utveckling av programmeringsprocesserna och deras samverkan ... 14
Diskussion ... 17
Sammanfattning av resultat ... 17
Hur utvecklas elevers användning och förståelse för programmeringsbegrepp i introducerande programmeringsundervisning? ... 17
Hur utvecklas och samverkar den inkrementella och iterativa processen med testa och felsöka processen, av eleverna i introducerande programmeringsundervisning? ... 17
Resultatdiskussion ... 17 Konsekvenser för undervisning ... 19 Metoddiskussion ... 19 Fortsatta studier ... 20 Referenser ... 21 Bilagor ... 24 Bilaga 1 Medgivandeblankett ... 24 Bilaga 2 Elevinstruktion ... 25
1
Inledning
För att stärka den digitala kompetensen i skolan, har programmering införts i den svenska läroplanen sedan 2018 (Skolverket, 2016; Regeringskansliet, 2017). I kursplanen för matematik ligger programmering under ämnesområdet algebra för årskurs 4-6. Undervisningen ska behandla både hur algoritmer kan skapas och användas vid programmering, samt programmering i visuella programmeringsmiljöer (Skolverket, 2019). På grund av att programmering har blivit ett nytt moment i läroplanen, ställer sig lärare frågor kring hur programmering ska läras ut och hur undervisningen ska bedrivas (Zhang & Nouri, 2019). Lärare kan därför få stöd i hur undervisningen ska planeras, när de ser hur eleverna förstår programmeringsmiljöerna och programmeringsinnehållet (Cederqvist, 2019).
Ett sätt att identifiera elevers utveckling och processer och som används alltmer i programmerings- och utbildningssammanhang, är teorin datalogiskt tänkande (Åkerfeldt, Kjällander & Selander, 2018; Wing, 2008). Brennan och Resnick (2012), har utvecklat ett ramverk för att identifiera elevers processer och förståelse för programmeringsbegrepp, när elever använder det visuella programmeringsverktyget Scratch. Detta verktyg används vanligtvis vid programmeringsundervisning i mellanstadiet.
Denna studie kommer att fokusera på att identifiera två av dessa processer; 1) inkrementella
och iterativa processen och 2) testa och felsöka processen. Den kommer även att fokusera på
hur användningen och utvecklingen av begreppsförståelsen kan förstås. Med utveckling menas att gå från att börja med att ändra i någon annans kod till att göra egen kod, i introducerande programmeringsundervisning. Detta kan leda till en större insikt i hur lärare kan identifiera elevers utveckling och lärande i visuella programmeringsmiljöer, med syfte att stödja lärares undervisning och planering av programmering i matematikämnet för årskurs 4-6.
Syfte och frågeställningar
Syftet med denna studie är att undersöka och få mer kunskap om elevers förståelse för begrepp och processer i visuella programmeringsmiljöer. Detta för att kunna synliggöra, identifiera och ge en fördjupad förståelse av programmeringsprocessen hos eleverna, men även vilka svårigheter som uppstår i introducerande programmeringsundervisning.
Frågeställningarna som avses att besvaras:
• Hur utvecklas elevers användning och förståelse för programmeringsbegrepp i introducerande programmeringsundervisning?
2 • Hur utvecklas och samverkar den inkrementella och iterativa processen med processen
testa och felsöka, av eleverna i introducerande programmeringsundervisning?
Disposition
Arbetet inleds med en litteraturgenomgång, för att definiera och specificera programmering och undervisning inom ämnet i årskurs 4-6. Denna del innefattar också tidigare forskning, för att få en inblick i vad aktuell forskning säger om programmering och elevers lärande. Efter litteraturgenomgången kommer en teoretisk bakgrund, där teorin datalogiskt tänkande kommer att beskrivas, eftersom det är grunden för detta arbete. Därefter följer metodavsnittet, där kvalitativ fallstudie som metod beskrivs, även datainsamling, urval, lektioner, analysmetod samt etiska överväganden behandlas. Fortsättningsvis presenteras resultatet av fallstudien, det vill säga analysen av det insamlade datamaterialet. I den avslutande delen kommer en först en sammanfattning av huvudresultatet, sedan en resultatdiskussion, vilket fortsätter med konsekvenser för fortsatt undervisning och metoddiskussion. Avslutningsvis beskrivs exempel på fortsatta studier.
Litteraturgenomgång
I detta avsnitt introduceras programmering och hur det uttrycks i läroplanen för årskurs 4-6. Det avslutas med en del om tidigare forskning, för att belysa vikten av hur programmeringsundervisning bedrivs och några viktiga faktorer som tidigare forskning har konstaterat.
Programmering
Programmering innebär att man genom algoritmer skapar instruktioner till en dator. En algoritm kan definieras som stegvisa instruktioner, som hjälper till att lösa problem och uppgifter. Det definierar för datorn således hur en handling ska gå till (Nygårds, 2015; Brookshear, 2012). Det har utvecklats olika programspråk för programmering. Det finns både textuella och visuella programspråk. Det första programspråket som utvecklades för barn (1966), var LOGO. Detta blev ett nytt sätt att undervisa matematik och var inspirerat av konstruktivismens lärandeteori samt MIT:s forskning om artificiell intelligens (Solomon, et al., 2020). En efterföljare till LOGO som främst används idag för elever i mellanstadiet, är Scratch som utvecklades av MIT år 2007. Programmet scratch använder grafiska visualiseringar av
3 algoritmer, som också kallas blockprogrammering (Zhang & Nouri, 2019; Åkerfeldt, Kjällander & Selander, 2018).
Programmering i den svenska läroplanen för årskurs 4-6
I det centrala innehållet i kursplanen för årskurs 4-6 i matematik, ligger programmering i avsnittet för algebra och beskrivs såhär: ”Hur algoritmer kan skapas och användas vid programmering. Programmering i visuella programmeringsmiljöer.” (Skolverket, 2019, s. 57). För att utveckla det vidare så beskriver Skolverkets (2017) kommentarmaterial i ämnet matematik för årskurs 4-6, att eleverna ska kunna använda sig av enklare program för att skapa algoritmer. Det innebär att eleverna ska sätta ihop en instruktion, genom att dra grafiska element till rätt plats. Det vill säga, använda sig av visuella programmeringsmiljöer. Det beskrivs som att det kan ge eleverna möjlighet att styra en dator, beräkna medelvärden eller sortera tal i storleksordning.
Programmering är kopplat till delområdet algebra i kursplanen. Det beskriver Olteanu och Olteanu (2018) som en transfereffekt. Eleverna får på så sätt använda sig av sina algebraiska kunskaper, för att tolka och ge instruktioner i programmeringsprocessen. Även kommunikations- och resonemangsförmågan används, när eleverna får kommunicera och diskutera matematiska begrepp under tiden som de programmerar. På så vis finns det möjligheter att använda sina matematiska kunskaper och förmågor i programmering.
Tidigare forskning
Eftersom programmering för grundskoleåldern är relativt nytt i många länders läroplaner, har det de senaste åren bedrivits ny forskning kring undervisning i programmering och dess effekter. Det har dock visat sig att det råder meningsskiljaktigheter kring vad som är viktigt vid programmeringsundervisning.
Kalelioglu & Gülbahar (2014) gjorde en undersökning kring vilka effekter som programmeringsundervisning i Scratch kunde ha på elever i årskurs 5. Det som undersöktes var elevernas problemlösningsförmågor, när de fick introduceras till blockprogrammering och begreppen loopar, villkor och operatorer. Deras resultat visade dock inte på några förbättringar av elevers problemlösningsförmåga. Slutsatsen som drogs var därför att det behövs mer forskning kring hur programmeringsmiljöer ska implementeras.
Kürşat Erümit (2020) studerade lärares synsätt under tre olika programmeringsaktiviteter i Scratch samt vilka effekter aktiviteterna hade på elevers reflekterande och problemlösningsförmåga. Lärarna hävdade att eleverna blev mer medvetna om ”steg för steg”
4 problemlösning och förståelse för att det finns flera sätt att lösa problem. I motsats till Kalelioglu & Gülbahars (2014) studie, kom Kürşat Erümit (2020) fram till att den grupp med elever som fick programmera matematikspel, ökade sitt reflekterande och sin problemlösningsförmåga. De andra två aktiviteterna däremot, som innebar programmering av animationer, gjorde inte det. En lärare nämnde också hur viktigt det var att eleverna jämförde sina programmeringsprojekt för att hitta och använda olika lösningar på problem.
Csizmadia, Standl & Waite (2019) undersökte elevers lärande vid implementering av 21 olika programmeringsaktiviteter med en matris för utvärdering och bedömning. De kom fram till att aktiviteterna i säg inte var det viktiga, utan lärarens genomförande av undervisningen var av större vikt, det vill säga lärandekontexten. Grover, Jackiw och Lundh (2019) beskriver här vikten av hur man introducerar vissa programmeringsbegrepp, såsom loopar och variabler. Även vilken betydelse introduceringen har för elevers lärande. Deras resultat visade på att varken förkunskaper i matematik, kön eller årskurs hade betydelse för inlärning, utan introduceringen av begreppen var viktigast innan själva programmeringsaktiviteterna. I kontrast till detta visade Harlow, Dwyer, Hansen, Iveland och Franklin (2018) i sin studie, där de implementerade en blockbaserad programmeringsmiljö, att de elever som inte hade lärt sig vissa matematiska begrepp ännu, hade svårare att förstå programmeringen. Deras resultat visade därför på att programmeringsförmågor kan vara beroende av elevers tidigare matematikkunskaper. Även att den kognitiva förmågan har en avgörande roll vid inlärning hävdar Strawhacker och Bers (2018) i sin studie av programmeringsinlärning. De menar även på att kognitiva förmågor kan utvecklas med hjälp av programmeringsundervisning i yngre åldrar.
Kwon och Cheon (2019) undersökte elevers processer i programmering med Scratch. De introducerade begreppen loopar, villkor, data och mönster och undersökte samtidigt deras utveckling av programmen. Det som kom fram var att eleverna hade svårigheter med villkor och operatorer i programmen, samt att de behövde testa sina program mycket oftare för att ha någon chans att kunna felsöka och hitta problemet.
Teoretisk bakgrund
I denna del kommer teorin datalogiskt tänkande att beskrivas, eftersom det är den teorin som ligger till grund för kategoriseringen och analysen av datamaterialet i denna studie.
5
Datalogiskt tänkande
Mycket forskning kring matematik och programmering inriktar sig på elevernas problemlösningsförmåga. En teori som däremot fokuserar på just elevernas programmeringsprocess är datalogiskt tänkande. Det råder dock meningsskiljaktigheter kring hur teorin ska tolkas. På grund av att datalogiskt tänkande används på olika sätt och har olika definitioner (Zhang & Nouri, 2019), så har jag har valt att använda mig av Brennan och Resnicks (2012) ramverk för datalogiskt tänkande. Det består av tre dimensioner, varav två av dem är lämpliga att använda i denna studie för att analysera elevers användning av datalogiskt tänkande vid programmering i visuella programmeringsmiljöer. Dessa har valts eftersom de är utvecklade specifikt för att kunna analysera elevers projekt i Scratch. Dessa två dimensioner som kommer att användas innefattar begrepp och processer, som elever använder under programmeringen.
Begreppen. Brennan och Resnick (2012) framhäver viktiga programmeringsbegrepp i sin studie, som elever introduceras till i programmering med Scratch. Dessa är enligt författarna också användbara då de kan överföras till andra programmeringssammanhang.
De begrepp som används är sekvenser, loopar, parallellism, villkor, data, operatorer och event. Sekvenser är instruktioner eller individuella steg, som kan utföras av en sprite eller datorn. Vid loopar programmeras en sekvens som är tänkt att repeteras ett flertal gånger, för att inte behöva programmera samma sekvens flera gånger. Parallellism är däremot sekvenser av instruktioner som kan ske samtidigt. Med villkor finns möjligheten att programmera flera utfall, exempelvis vid programmering av matematikspel, så kan rätt svar ge ett utfall medan ett felaktigt ger ett annat utfall i spelet. Begreppet data innebär att kunna spara, lagra och uppdatera data, genom variabler. Det kan sedan användas för att räkna poäng eller att kunna sätta variabler som blir olika slumpmässiga tal i ett matematikspel. Matematiska operatorer kan föra in olika räknesätt och funktioner i programmeringen, såsom tecknen för likhet, större än, mindre än, addition, multiplikation etc. Till sist, event kan innebära en startknapp eller att man ska klicka på någonting för att en händelse ska starta (Brennan & Resnick, 2012).
Programmeringsprocesser. Att bara se användning av programmeringsbegreppen, ser Brennan och Resnick (2012) som otillräckligt. Därför används en till dimension för att kunna se elevers processer i konstruktionen av program. Det innebär att gå från vad eleverna använder för begrepp vid programmering i Scratch, till hur de utvecklar strategier för att programmera på ett mer fungerande sätt. Det vill säga, hur utvecklas deras användning av processerna. I detta fall innebär utveckling att identifiera elevers processer i början när de ska ändra i någon annans kod till att sedan göra egen kod.
6 Den första programmeringsprocessen är den inkrementella (steg för steg) och iterativa
(upprepa) processen. Det innebär att ett programmeringsprojekt inte är en rak process där allt
sker enligt en plan, utan snarare en adaptiv process. Det vill säga att eleverna programmerar i små steg, testar programmet och sedan upprepar denna strategi för att bygga vidare baserat på tidigare erfarenheter och nya idéer. Såsom den inkrementella och iterativa utvecklingen, baseras den andra processen testa och felsöka, på att programmering inte sker felfritt enligt en plan. Denna process innebär därför att elever använder sig av strategier för att identifiera problem i programmet och hur de ska felsöka och sedan testa programmet igen. Den tredje processen är
återanvändning och remixing, vilket innebär att kunna bygga vidare eller återanvända kod som
redan gjorts. Det gör så att elever kan få idéer och göra mer komplicerade program, än vad de annars kunnat göra. Det finns en sådan funktion i Scratch, där man kan dela sina projekt och visa programmets kodning för andra. Den fjärde och sista processen är abstraktion och
modularisering. Det förklaras som att eleverna ska kunna bygga något större med hjälp av små
delar, det vill säga använda flera sprites och rader av kod. Man kan på så sätt bygga på en och samma program, men ha flera event, såsom hur programmet ska se ut och vad det ska göra (Brennan & Resnick, 2012).
De fyra programmeringsprocesserna beskrivs som essentiella av Brennan och Resnick (2012). Processerna som undersöks i denna studie är elevernas inkrementella och iterativa process samt processen testa och felsöka. Det innebär att undersöka hur dessa två processer utvecklas under de introducerande programmeringslektionerna och deras samverkan med varandra.
Metod
I denna del beskrivs metoden som använts vid denna studie, det vill säga en kvalitativ fallstudie, urval, lektionsinnehåll, datainsamlingsmetoden och metoden för analys. Avsnittet avslutas med etiska överväganden samt studiens reliabilitet, validitet och generaliserbarhet.
Datainsamlingsmetod
För att få svar på frågeställningarna och kunna synliggöra elevernas programmerings-process, valdes en kvalitativ fallstudie som metod. En fallstudie innebär att undersöka ett enskilt fall på en viss plats och i detta fall innebar det att undersökningen skedde på en enskild skola i en specifik klass (Bryman, 2018). Det som gjorde fallstudien kvalitativ, var att undersökningen fokuserade på både vad som skedde, men också varför det skedde. Det vill säga hur elevernas
7 programmeringsprocess i detta sammanhang kan förstås. Fallstudiens fördelar är att den fokuserar på samspel, förhållanden och processer snarare än resultatet och slutprodukten (Denscombe, 2014).
Vid fallstudier kan flera olika metoder användas för datainsamling. Metoden beror på vilka sammanhang eller omständigheter samt vilken specifik situation (Denscombe, 2014). I detta fall valdes skärminspelningar av elevernas datorer för att se processen i programmering, samt ljudupptagning av elevers diskussioner för en ökad förståelse om vad som sker och varför.
Urval och undersökningskontext. Undersökningen gjordes på 23 elever i skolår 5. Skolor som jag redan kände till tillfrågades för att hitta en passande klass. Att klassen har tillgång till datorer var en förutsättning för studien. Det var även viktigt att eleverna hade haft väldigt lite eller ingen programmeringsundervisning, eftersom studiens syfte var att undersöka introducerande programmeringsundervisning.
En annan utgångspunkt var att modulen (som beskrivs i nästa avsnitt) var anpassad för elever i årskurs 5 och 6, därför föll valet på en klass i årskurs 5. Eleverna hade skilda programmeringskunskaper, några har redan arbetat med Scratch på egen hand innan medan majoriteten inte hade det. Det delades även ut en medgivandeblankett till vårdnadshavare, vilket avgjorde vilka elever i klassen som fick delta i studien, vilket blev totalt 20. I och med att klassläraren kände sig osäker i ämnet, höll både jag och läraren i genomgångarna tillsammans. På så sätt blev det också en deltagande observation.
Alla elever satt antingen i grupper om två eller tre, eftersom elevernas diskussioner skulle spelas in satt ingen själv. Alla bänkar var riktade mot tavlan. Eleverna uppmuntrades till att ställa frågor och diskutera med varandra som första utväg och sedan fråga läraren om hjälp. Det var alltid två lärare i rummet som kunde hjälpa eleverna.
Lektionernas innehåll. Fallstudien baserades på en lektionsserie på 4 lektioner och utfördes inom loppet av två veckor. Jag använde mig av modulen ”Datalogiskt tänkande i
virtuella skapande lärmiljöer – Programmering i Scratch.” (Eckert, Nilsson, Ottosson &
Johansson, 2020) och anpassade den utifrån klassen som deltog i studien. Anpassningarna som gjordes var för att eleverna tog längre tid på sig att utföra aktiviteterna, än vad som var tänkt i modulen. På grund av det, användes inte lektion 4 i modulen, utan lektion 1-3 delades upp på 4 lektioner.
Dessa lektioner valdes för att de är uppbyggda så att eleverna introduceras till programmeringsbegrepp i förberedande aktiviteter som sedan ledde dem in till att programmera ett eget matematikspel. Lektionerna valdes även för att de berör en majoritet av de begrepp och processer som Brennan & Resnick (2012) använder i sitt ramverk.
8 Lektion 1 handlade om att testa någon annans kod och göra små ändringar. Detta blev en introducering till programmering i Scratch med eleverna. Det bestod av en uppgift som kan synliggöra för eleverna hur stegvis programmering kan utföras och hur de kan testa sig fram. De fick en sträng med kod, som ritade ut en kvadrat i scenen, där de sedan fick instruktioner om att ändra i koden för att göra kvadraten större, göra en triangel, sedan en annan månghörning (Se bild 1).
Bild 1. Bild 2.
I lektion 2 fortsatte vi med att ändra i andras koder, där eleverna presenterades för ett upprepade mönster i form av en snöflinga, vilket var tänkt att introducera hur loopar och utdata fungerar. De fick testa att ändra i koden så att det blev ett annat upprepade mönster (se bild 2). Den andra uppgiften i lektion 2 handlade om att introducera villkor och operatorer. De fick bland annat en uppgift att ändra i villkorssatsen, för att få programmet att reagera på ett annat sätt. Sedan gick vi igenom vilka begrepp och block som vi berört i en helklassdiskussion. Vi gick igenom vad de olika blocken har för betydelse och deras olika färger. På så sätt gick vi igenom de begrepp de använt sig av under lektion 1 och 2; loopar, operatorer, villkor, indata, utdata och variabler för att de ska kunna användas i nästa lektion.
9
Bild 3.
I lektion 3 introducerades eleverna till uppgiften att göra ett eget matematikspel. Till skillnad från tidigare lektioner skulle eleverna nu programmera ett program från grunden. Det visades ett exempel på ett multiplikationsspel för att exemplifiera för eleverna. Till denna lektion fanns också en elevinstruktion som delades ut (se bilaga 2). Den beskriver steg för steg hur de tar sig framåt i att programmera ett spel. Lektion 4 inleddes med två exempel av program varav det ena räknar ut ett tal åt spelaren, medan det andra får spelaren att räkna själv. Sedan fick de diskutera vilket av dessa som var ett spel. Därifrån påmindes eleverna om att de ska programmera ett matematikspel och att tänka stegvis (ändra en sak i taget och testa).
Analysmetod
För att analysera datamaterialet genomfördes en kvalitativ analys, som innefattade att systematiskt organisera, bryta ner och kategorisera det insamlade materialet. I och med kategoriseringen gjordes en syntes för att hitta och urskilja betydelsefulla mönster (Fejes & Thornberg, 2015). Vilket tidigare nämnts, användes en specifik definition och ramverk av datalogiskt tänkande som är utvecklat av Brennan och Resnick (2012). Detta för att kunna urskilja elevers förståelse för olika delar inom programmering och deras användning av det, det vill säga processen. Begreppen som användes beskriver vad eleverna lär sig, medan processen visar på hur de lär sig.
Analysen delades in i två steg, genom att först organisera och kategorisera datamaterialet och sedan syntetisera för att hitta mönster med hjälp av teorin. I första delen av analysen tittade och lyssnade jag igenom alla inspelningarna för att få en övergripande bild av datamaterialet.
10 Sedan valdes vissa delar av varje inspelning ut för vidare analys och för att kunna svara på forskningsfrågorna. Dessa inkluderingskriterier var:
• Varje nytt programmerings uppgift/moment som eleverna ska arbeta med. • Elever diskuterar och/eller hjälper varandra med programmeringen. • Elever har svårigheter med någonting.
Vissa delar valdes därför bort, för att analysera det som var relevant för undersökningen. Det var när elever diskuterade annat än programmering. Sedan fanns det också stunder där eleverna satt tysta, då analyserades skärminspelningen för att se vad för process eleven var inne i, vilket då kunde beskrivas. Det kunde till exempel vara när en elev använde sig av villkor-blocket och testade sig fram tills det blev rätt.
Den andra delen av analysen innebar att kunna urskilja likheter och skillnader i elevers tillvägagångssätt, för att syntetisera och urskilja betydelsefulla mönster. Här användes Brennan & Resnicks (2012) ramverk, vilket resulterade i dessa tre kategorier:
• Användning av programmeringsbegreppen.
• Utveckling av den inkrementella och iterativa processen. • Utveckling av processen testa och felsöka.
Användning av programmeringsbegreppen innebär inte att de behöver prata om begreppen utan även deras användning och förståelse för hur det fungerar i Scratch. Det vill säga, använder funktionerna i programmet och urskiljer vad som sker när de använder olika block. Vilka svårigheter uppstod med begreppen och vad var lättare? Alla begrepp användes dock inte, utan de som analyserats var loopar, villkor och operatorer.
Ett sätt att urskilja utveckling i elevernas programmeringsprocesser jämfördes elevernas tillvägagångssätt i projekten under de två första inledande lektionerna med de två sista. Detta för att se hur de utvecklades från att använda någon annans kod till att göra egen kod. Det kunde exempelvis innebära att en elev under första lektionen ändrade för mycket i koden och sedan felsöka. Sedan när eleven skulle programmera egen kod, hade hen lärt sig att det inte gick att felsöka om man ändrat för mycket. Det ledde till att en strategi kunde identifieras, att eleven testade med jämna mellanrum istället. Då valdes också skärmbilder från Scratch för att illustrera den utvecklingen.
11
Etiska överväganden
Vetenskapsrådets forskningsetiska principer har fyra huvudkrav: Informationskravet, samtyckeskravet, konfidentialitetskravet och nyttjandekravet. Informationskravet innebär att deltagarna i undersökningen får all information om vad som kommer att ske och vilket syfte som studien har. De får också information om att det är helt frivilligt att delta och att det går att dra sig ur när som helst. Samtyckeskravet innebär att få samtycke från deltagaren att medverka i studien, vilket i detta fall var barn under 15 år. Därför fick vårdnadshavare skriva på medgivande, att deras barn fick vara med. Konfidentialitetskravet betyder att deltagarnas medverkan är anonym och att de inte kommer att vara identifierbara. Nyttjandekravet innebär att det insamlande datamaterialet inte kommer att delas med någon annan (Vetenskapsrådet, 2002). Alla dessa krav berördes i medgivandeblanketten, som delades ut till alla elever och vårdnadshavare i klassen. Det diskuterades också i helklass innan blanketten delades ut.
Reliabilitet, validitet och generaliserbarhet
Reliabiliteten avser metodens replikerbarhet, det vill säga om undersökningen kan göras om och leda till samma resultat. Vid kvalitativa fallstudier är detta dock svårt att bevisa, eftersom en stor del av undersökningens grund vilar på en viss social kontext (Bryman, 2018). Det som däremot har gjorts för att öka reliabiliteten är att alla delar i undersökningens process tydligt har redovisats och motiverats, från datainsamlingsmetod till analysmetod. Detta kan också kopplas till undersökningens generaliserbarhet, om studien kan generaliseras till andra situationer (Bryman, 2018). Det är också är problematiskt att bevisa, eftersom fallstudien undersöker en viss specifik situation. Det vill säga i en annan klass eller på en annan skola hade resultatet kunnat bli helt annorlunda.
Validiteten däremot, innebär att metoden som använts, faktiskt mäter det som avses (Eriksson Barajas et al., 2013). Detta har säkerställts genom att frågeställningarna att urskilja elevers utveckling av programmeringsprocessen och deras användning av programmeringsbegrepp, är direkt kopplat till teori- och metodavsnittet. Frågeställningarna har därför varit vägledande genom hela arbetets gång.
Resultat
I detta avsnitt presenteras resultatet och analysen av studien. Detta inleds med ett övergripande resultat, för att få en inblick. Sedan beskrivs analysens resultat, vilket innefattar elevers användning av programmeringsbegrepp men också elevers utveckling av den
12 inkrementella och iterativa processen samt processen testa och felsöka. För att stärka resultatet har också skärmbilder av elevers programmeringsprojekt presenterats vid varje del.
Övergripande resultat
De två första lektionerna var väldigt lika varandra och den mesta av tiden och resurserna gick till att de skulle lära sig begrepp och hur programmering i Scratch fungerar. Under de två sista lektionerna, började majoriteten av eleverna få en grundläggande förståelse för begreppen.
Det visade sig dock att det var svårare för dem att använda vissa begrepp i sina egna projekt, även om de förstod innebörden av dem under de första två lektionerna. Under dessa lektioner kunde även en början av den inkrementella och iterativa processen att identifieras, det vill säga att eleverna utövade programmering steg för steg och kunde utveckla projekten vidare utifrån de erfarenheter de fått från tidigare lektioner. Processen testa och felsöka kunde också identifieras när eleverna under de senare lektionerna kunde använda strategier för att felsöka i sina projekt.
Användning av programmeringsbegreppen
De begrepp som nämnts i Brennan och Resnicks (2012) studie var sekvenser, loopar, parallellism, villkor, data, operatorer och event. Varav några av dem var mer relevanta för just dessa lektioner, vilket berodde på hur uppgifterna och elevinstruktionen var konstruerad. Det berodde även på att dessa lektioner var av introducerande karaktär. De som specifikt har studerats är loopar, villkor och operatorer.
13 Loopar hade de flesta förstått innebörden av under de första två lektionerna, när de testade att ändra i koden för de upprepade mönstret. Det visade sig dock att eleverna hade svårt att använda dem i sina egna projekt. Det fanns exempel på när elever lade till block, som blev överflödiga istället för att ändra i de redan existerande blocken. Bild 4 och 5 är exempel på elever som förstått att det ska vara ett matematikspel och förstått både villkor och operatorer, men inte använt loopar. De skapar istället väldigt långa block.
Operatorer var likt loopar, lättare under de första två lektionerna och svårare under de senare två lektionerna, eftersom de skulle ligga inuti ett annat block. Det visade sig under andra omständigheter också, att block som skulle ligga i andra block var problematiskt. På bild 6 syns svårigheten i att lägga block i varandra. En slutsats att dra från detta är att elever kan förstå innebörden av begreppen och vad dessa kan innebära, men att det svåra var istället själva användningen och förståelsen för hur de ska användas i programmet.
Villkor och villkorssatser däremot, var svåra under de första aktiviteterna. Detta beskrev eleverna under helklassdiskussionen, när vi diskuterade kring den sista uppgiften under andra lektionen som skulle introducera villkor. Detta hade också med att göra att de låg block inuti varandra (se bild 9). Under de sista två lektionerna var de däremot lättare och eleverna kunde använda sig av dem när de programmerade sina spel. Det visas även på bild 4 och 5, samt 7 att eleverna förstår hur ett villkor kan göra så att spelet ger olika utfall beroende på hur man svarar.
14
Utveckling av programmeringsprocesserna och deras samverkan
Denna del handlar om hur elevernas utveckling av den inkrementella och iterativa processen samt processen testa och felsöka. Den första processen innebär det att ett programmeringsprojekt inte är en sekventiell process, snarare en adaptiv process där elever får testa sig fram i små steg för att bygga vidare och utveckla sina program. Det vill säga, att eleven har flera idéer om vad som ska ske i programmet under tidens gång, utvecklar detta, testar stegvis och sedan upprepar denna procedur. Den andra processen innebär att identifiera problem i programmet och hur eleverna utvecklas och börjar använda strategier för att felsöka och testa programmet igen (Brennan & Resnick, 2012).
Ett inledande resultat över elevers processer var att under de första två lektionerna, så ändrade eleverna i flera block på en gång, innan de testade om det fungerade. Det ledde till att de fick börja om hela processen, eftersom när de ändrat för mycket på en och samma gång, kunde de inte identifiera problemet. Bild 8 är ett exempel på när eleven har ändrat för mycket och märker att det inte fungerar. Eleven har ändrat i både stegen och vinklarna, så att någon vinkel blir 50 och ett block med steg blir 90. När eleven sedan försöker ändra tillbaka blandar eleven ihop blocken, det vill säga grader och steg. Då får eleven börja om från början. Detta bidrar också till att eleven inte kan felsöka problemet, när hen inte gjort det stegvis. Den inkrementella och iterativa samt processen testa och felsöka, påverkar därför varandra. Det beror på att den stegvisa programmeringen krävs, för att kunna testa och felsöka programmet under tidens gång.
För ett fåtal var det däremot lättare att testa sig fram och de förstod nästan direkt hur de skulle ändra i koden. En elev beskriver hur den ändrade i blocken för att få en triangel. Eleven hade först testat att byta graderna till 80 grader, men efter det bytte hen till 120 och så blev det rätt- Detta kan också ha berott på att eleven visste mer om det matematiska innehållet som uppgiften berörde.
15 Bild 8. Bild 9.
Under lektion 3 hade de flesta elever förstått innebörden av att programmera steg för steg, för att inte tappa bort sig i programmet. Detta berodde på att de under tidigare lektioner insett, att när de ändrat för mycket, så gick det inte att gå tillbaka i programmet (se bild 9). En slutsats är därför att när eleverna inser att de inte kan felsöka, så har de baserat på tidigare erfarenheter (i och med de första två lektionerna) insett vikten av den stegvisa programmeringen.
Den inkrementella och iterativa processen var dock svår att identifiera såhär tidigt, eftersom eleverna inte kommit så långt i sina programmeringsprojekt ännu. Däremot att de utvecklat ett mönster för att programmera stegvis och använda sig av dessa erfarenheter från tidigare lektioner kunde identifieras. Exemplet från bild 10-12 är en elev som efter varje bild testar sitt projekt genom att klicka på flaggan, på så sätt kunde eleven utveckla spelet och hitta rätt block.
16 Bild 10. Bild 11. Bild 12.
En slutsats att dra från detta är att den inkrementella och iterativa processen inte är helt färdigutvecklad för de flesta elever efter 4 lektioner, men att grunden för att kunna utveckla den finns där. De hade däremot förstått innebörden av att stegvist programmera, för att samtidigt kunna testa och felsöka. Vad bild 10-12 också visar är att eleven testade programmet efter varje gång, som hen ändrade i koden. Strategier för att testa och felsöka, hade därför utvecklats under dessa lektioner. Det vill säga, när eleven tänker stegvis blir det en strategi under processen testa och felsöka.
Ett fåtal hade däremot visat mer användning av den inkrementella och iterativa processen. När en elev som kommit längre under lektion 3 programmerade utifrån sina egna idéer, kunde denna process identifieras. Även om det inte var ett matematikspel, använde sig eleven av erfarenheterna som den fått från tidigare lektioner och byggde vidare på sitt program. Eleven testade sig fram steg för steg och hittar rätt operatorer och villkor. Eleven beskrev också olika mål med uppgiften och fortsatte exempelvis genom att lägga till att sprite-figuren ska röra sig när rätt svar skrivs in.
Det berodde på att de introducerande uppgifterna var relativt styrda, med en elevinstruktion. Däremot när den fick programmera sina egna tankar och idéer, så sker den processen med att ha mål och testa sig fram. Slutsatsen att dra från detta är att dessa introducerande uppgifter kan leda till att elever vid fortsatt programmering, kan nå den inkrementella och iterativa processen. Det vill säga, det är viktigt att ändå undersöka uppgifter som stärker dem i fortsatt utveckling, även om de flesta under dessa lektioner bara var i början av att nå processen.
17
Diskussion
Nedan följer en sammanfattning av huvudresultatet utifrån fallstudiens resultat och analys. Sedan diskuteras resultatet kopplat till den tidigare forskningen. Därefter diskuteras studiens konsekvenser för fortsatt undervisning i programmering och efter det diskuteras metodvalen. Avsnittet avslutas med exempel på fortsatta studier.
Sammanfattning av resultat
Syftet med denna fallstudie var att undersöka elevers förståelse av programmerings-begrepp och processer i Scratch, kopplat till teorin datalogiskt tänkande. Detta för att få en djupare förståelse och hjälpa lärare i undervisningen av programmering.
Hur utvecklas elevers användning och förståelse för programmeringsbegrepp i introducerande programmeringsundervisning? Ett generellt resultat är att elevers förståelse för innebörden av begreppen operatorer och loopar kunde identifieras under de första två lektionerna. Det som däremot visade sig vara svårt var användningen av operatorer i sina egna programmeringsprojekt, på grund av att blocken skulle ligga i varandra. Villkor och villkorssatser däremot, tyckte eleverna var svårt att förstå under de första två lektionerna, medan de lättare kunde använda dem i sina matematikspel och kunde programmera flera utfall.
Hur utvecklas och samverkar den inkrementella och iterativa processen med testa och felsöka processen, av eleverna i introducerande programmeringsundervisning? Inledningsvis började eleverna med att ändra i flera block samtidigt, innan de testade om programmet fungerade. Processen utvecklades dock under lektionerna, när de insåg att det inte gick att felsöka programmet för att de ändrat för mycket. På så sätt utvecklas testa och felsöka processen genom att eleverna testar stegvis, baserat på de erfarenheter de fått från tidigare lektioner. Processen ”testa och felsöka” och den ”inkrementella och iterativa” processen, är därför beroende av varandra. Fortsättningsvis kan det konstateras att de flesta eleverna var i början av att använda den inkrementella och iterativa processen efter dessa 4 lektioner, genom att tänka stegvis. Det visade sig däremot att de elever som fortsatte testa egna idéer, visade större förståelse för processen. Det berodde på att de kunde uttrycka och sätta upp egna mål med projektet och kunde därför utveckla det vidare utan att styras av elevinstruktionen.
Resultatdiskussion
Enligt vissa studier har det visat sig vara ett problem att elever inte utvecklar matematiska förmågor vid programmeringsundervisning (se exempelvis Kalelioglu & Gülbahar, 2014). Denna studie visar att uppgifter i programmering bör vara utformade, så att de inte styr eller
18 begränsar elevernas kreativitet för mycket. I studien ser vi till exempel att när eleverna fick fortsätta programmera utöver lektionsplaneringen, visade de på större användning av den inkrementella och iterativa processen. Det innebär att lärare måste tänka på att enbart styra eleverna i den riktning som leder till att de får använda sina egna förmågor och utvecklas. Det innebär att inte styra dem för mycket, så att de inte kan ge uttryck i deras egna förmågor. Detta styrks också av Csizmadia et al., (2019), vars resultat visade på att det var lärarens undervisning som påverkade elevers lärande, inte programmeringsaktiviteterna som användes.
I kontrast till detta beskriver Kürşat Erümit (2020) att de elever som fick programmera matematikspel (till skillnad från de som enbart programmerade animationer), ökade sitt reflekterande och sin problemlösningsförmåga. Därför kan det vara relevant att även se över utformningen av uppgifterna, så att eleverna också får chans att utveckla sina matematikförmågor, eftersom programmering tillhör matematikämnet i läroplanen.
En annan utgångspunkt är att flera studier har visat på att elever har svårigheter för olika begrepp inom programmering, men också att introduceringen av begreppen är av stor betydelse för elevers lärande och utveckling (se exempelvis Grover et al., 2019; Kwon & Cheon, 2019). För att koppla det till elevers svårigheter under de lektioner som studerades i denna studie, så visade resultatet på hur eleverna hade problem med att hitta rätt plats för blocken. Detta är ett exempel på hur planeringen och genomgångarna kan utvecklas. Det innebär att tydligare gå igenom hur blocken ska placeras, för att öka elevers förståelse och utveckling i programmering i ett tidigare skede. Det kan bidra till att eleverna förstår innebörden av begreppen tidigare och på så sätt få lättare att använda sig av programmeringsprocesserna.
Flera tidigare studier nämner betydelsen av introduceringen programmeringsaktiviteterna. I denna studie introducerades programmering genom att först ändra in någon annans kod till att sedan programmera egna program. Detta resulterade i att eleverna redan förstått att de skulle testa och felsöka med jämna mellanrum, för att inte tappa bort sig i ett tidigt skede. Detta hade annars kunnat blivit ett problem enligt Kwon och Cheons studie (2019), där ett av resultaten visade på att eleverna behövde testa och felsöka oftare.
Ett annat resultat var att den inkrementella och iterativa processen, var påverkad av processen testa och felsöka. På så sätt finns det potential att planera lektioner som stärker båda processerna tillsammans, för att samtidigt synliggöra dem på ett bättre sätt för läraren. Detta eftersom läraren sedan ska bedöma elevernas förmågor. På grund av att väldigt många studier nämner att introduceringen av programmering är av stor betydelse, är det där som resurserna bör sättas. Det kan innebära att man tidigt i undervisningen berättar för eleverna om hur viktigt
19 det är att tänka stegvis, definiera mål med programmet och att felsöka med jämna mellanrum. Detta för att ge dem en större chans för vidare utveckling inom programmering.
Konsekvenser för undervisning
Denna studie hade som syfte att undersöka och få mer kunskap om elevers förståelse och utveckling inom visuella programmeringsmiljöer, för att stödja lärares undervisning och planering av programmeringsundervisning. Förhoppningsvis kan resultatet i denna studie, hjälpa lärare i sin undervisning. Både genom att fler svårigheter har identifierats samt hur elevers processer kan utvecklas och deras samband mellan varandra. Ett exempel är att man som lärare bör känna till dessa processer och planera undervisningen på ett sådant sätt som uppmuntrar till användning av processerna samt utveckling av dem. Hur de båda är beroende av varandra är i detta fall av stor betydelse för elevers utveckling. Det kan ge stöd i att lärare tidigare kan exemplifiera och tydliggöra processerna för eleverna. Att studien också identifierat elevers svårigheter kring vissa av programmeringsbegreppen, kan ge lärare stöd i hur de bör planera undervisningen för att lära ut och introducera begreppen på bästa sätt. Det kan innebära att tydligare gå igenom de olika blockens betydelser samt placeringen av dem i Scratch.
Sammanfattningsvis finns det många delar inom programmeringsundervisning som kan utvecklas för att elever ska ta till sig undervisningen på bästa sätt; Lärarens roll, introduceringen av begreppen och själva programmeringsuppgifterna. Förhoppningsvis är denna studie ett steg i rätt riktning för en fortsatt utveckling av programmeringsundervisningen i den svenska skolan.
Metoddiskussion
Kvalitativa fallstudier kan vara begränsade, eftersom de undersöker en viss social kontext, vilket är svårt att upprepa vid ett senare tillfälle (Bryman, 2018). Denna begränsning var exempelvis att lektionerna i modulen anpassades utifrån klassrumssituationen och undervisningsmiljön, vilket kan ha påverkat resultatet. Detta eftersom vissa delar ur modulen togs bort och reviderades.
En svårighet var också, eftersom undersökningens syfte var att förstå elevers processer, så hade komplettering med elevintervjuer gett ett större underlag att transkribera och styrka resultatet och analysens argumentationer. Det hade kunnat ge eleverna en större chans att resonera kring vad de gjorde under programmeringen och hur de förstod begreppen. Detta saknas från resultatet för att få ytterligare förståelse för hur och varför frågorna.
En annan faktor har varit tiden att göra denna studie. Det insamlade datamaterialet blev totalt 58 inspelningar av elevers samtal och skärmar, av varierande längd mellan 40-60 minuter.
20 Den stora mängden kan ha bidragit till att något relevant resultat har missats, trots att analysmetoden varit väldigt grundlig.
Fortsatta studier
På grund av att denna studie inriktade sig på den inkrementella och iterativa processen samt processen testa och felsöka, kan det vara relevant att undersöka flera av de processer som finns i Brennan och Resnicks (2012) ramverk. Detta eftersom resultatet i denna studie visade på att processerna kan påverka varandra på olika sätt och då kan studier av ytterligare processer bidra till en ännu större förståelse för detta. Därför är det relevant att undersöka dessa sammanhang.
Det kan också vara väsentligt att undersöka hur processerna utvecklas under en längre tid. På så sätt även insamla mer datamaterial till hur och varför det utvecklas, för att få ett bredare underlag. Det kan också vara rimligt att använda sig av en annan kvalitativ metod, educational
design research. Användningen av den, skulle kunna utveckla fler metoder för att skapa bra
lärandemiljöer för eleverna för att kunna utveckla förståelse för både begrepp och utvecklandet av processerna.
21
Referenser
Brandell, G., & Pettersson, A. (Red.) (2011). Matematikundervisning: vetenskapliga
perspektiv. Stockholm: Stockholms universitetsförlag.
Brennan, K., & Resnick, M. (2012). New Frameworks for Studying and Assessing the
Development of Computational Thinking. Proceedings of the 2012 annual meeting of the
American Educational Research Association, Vancouver, Canada.
Brookshear, J. G. (2012). Computer science – an overview. Hämtad från: http://larrr.com/wp-content/uploads/2014/08/ComputerS.pdf
Bryman, A. (2018). Samhällsvetenskapliga metoder. Stockholm: Liber.
Cederqvist, A. (2019). Pupils’ ways of understanding programmed technological solutions when analysing structure and function. Education and Information Technologies, 25, 1039-1065. doi: 10.1007/s10639-019-10006-4
Csizmadia, A., Standl, B., & Waite, J. (2019). Integrating the Constructionist Learning Theory with Computational Thinking Classroom Activities. Informatics in Education,
18(1), 41–67. doi: 10.15388/infedu.2019.03
Denscombe, M. (2014). The good research guide: for small-scale social research projects. Maidenhead, England: McGraw-Hill/Open University Press.
Eckert A., Nilsson, P., Ottosson, E., & Johansson, P. (2020). Datalogiskt tänkande i virtuella
skapande lärmiljöer – Programmering i Scratch. Hämtad 2020-02-14 från
http://digimath.se/datalogiskt-tankande-i-virtuella-skapande-larmiljoer-programmering-i-scratch/
Eriksson Barajas, K., Forsberg, C., & Wengström, Y. (2013). Systematiska litteraturstudier i
utbildningsvetenskap. Vägledning vid examensarbeten och vetenskapliga artiklar.
Stockholm: Natur & Kultur.
Fejes, A., & Thornberg, R. (Red.) (2015). Handbok i kvalitativ analys. Stockholm: Liber. Grover, S., Jackiw, N., & Lundh, P. (2019). Concepts before coding: non-programming
interactives to advance learning of introductory programming concepts in middle school.
Computer Science Education, 29, 106-135. doi: 10.1080/08993408.2019.1568955
Harlow, D. B., Dwyer, H. A., Hansen, A. K., Iveland, A. O., & Franklin D. M. (2018). Ecological Design-Based Research for Computer Science Education: Affordances and Effectivities for Elementary School Students. Cognition and Instruction, 36(3), 224-246. doi: 10.1080/07370008.2018.1475390
22 Kalelioglu, F., & Gülbahar, Y. (2014). The Effects of Teaching Programming via Scratch on
Problem Solving Skills: A Discussion from Learners’ Perspective. Informatics in
Education, 13(1), 33–50.
Kjällander, S., Åkerfeldt, A., & Petersen, P. (2016). Översikt avseende forskning och
erfarenheter kring programmering i förskola och grundskola. Hämtad från:
https://studylibsv.com/doc/564617/%C3%B6versikt-avseende-forskning-och-erfarenheter-kring
Kürşat Erümit, A. (2020). Effects of different teaching approaches on programming skills.
Education and Information Technologies, 25, 1013-1037. doi: 10.1007/s10639-019-10010-8
Kwon, K., & Cheon, J. (2019). Exploring problem decomposition and program development through block-based programs. International Journal of Computer Science Education in
Schools, 3(1), 1-14. doi: 10.21585/ijcses.v3i1.54
Nygårds, K. (2015). Koden till digital kompetens. Stockholm: Natur & kultur.
Olteanu, C., & Olteanu, L. (2018). Kommunikation i visuella programmeringsmiljöer. Hämtad från:
https://larportalen.skolverket.se/LarportalenAPI/api-v2/document/name/P03WCPLAR094740
Regeringskansliet. (2017). Stärkt digital kompetens i skolans styrdokument. Hämtad från:
https://www.regeringen.se/493c41/contentassets/acd9a3987a8e4619bd6ed95c26ada236/i nformationsmaterial-starkt-digital-kompetens-i-skolans-styrdokument.pdf
Skolverket. (2016). Redovisning av uppdraget om att föreslå nationella it-strategier för
skolväsendet – förändringar i läroplaner, kursplaner, ämnesplaner och examensmål.
Hämtad från: https://www.skolverket.se/getFile?file=3668
Skolverket. (2017). Kommentarmaterial till kursplanen i matematik: reviderad 2017. Stockholm: Skolverket.
Skolverket. (2019). Läroplan för grundskolan, förskolan och fritidshemmet 2011: reviderad
2019. Stockholm: Skolverket.
Solomon, C., Harvey, B., Kahn, K., Lieberman, H., Miller, M. L., Minsky, M., … Silverman, B. (2020). History of LOGO. Proc. ACM Program. Lang, 4, 66 pages. doi:
10.1145/3386329
Strawhacker, A., & Bers, M. U. (2018). What they learn when they learn coding: investigating cognitive domains and computer programming knowledge in young children. Educational Technology Research and Development, 67(3), 541–575. doi: 10.1007/s11423-018-9622-x
23 Vetenskapsrådet. (2002). Forskningsetiska principer inom humanistisk-samhällsvetenskaplig
forskning. Stockholm: Vetenskapsrådet.
Wing, J. (2008). Computational thinking and thinking about computing. Philosophical
Transaction of the Royal Society A, 366, 3717-3725. doi: 10.1098/rsta.2008.0118
Zhang, L., & Nouri, J. (2019). A systematic review of learning computational thinking through Scratch in K-9. Computers & Education, 141, 25 pages. doi:
10.1016/j.compedu.2019.103607
Åkerfeldt, A., Kjällander, S., & Selander, S. (2018). Programmering: introduktion till digital
24
Bilagor
Bilaga 1 Medgivandeblankett
Medgivandeblankett
Hej!
Jag heter Amelie Holfve och är lärarstudent på Örebro Universitet. Jag håller nu på att skriva mitt examensarbete, där syftet är att undersöka elevers lärande i programmering med Scratch. För att kunna göra detta, behöver jag samla in material i form av ljudinspelningar och dator-skärmsinspelningar med elever i en klass under ca 4 matematiklektioner. Detta kommer att ske mellan v. 17-19.
Med detta brev ber jag er vårdnadshavare om tillåtelse att ert barn deltar i undersökningen. Alla elever kommer att garanteras anonymitet och ingen kommer att nämnas vid namn. Det kommer inte gå att urskilja vilken skola eller klass som eleven går i och materialet som samlas in kommer inte att finnas tillgängligt för någon annan forskning eller bearbetning. Det är helt frivilligt att delta och det går att dra sig ur när som helst under undersökningen. Jag ber därför er som vårdnadshavare att skriva under detta brev och skicka tillbaka så fort som möjligt.
[ ] Som vårdnadshavare ger jag tillstånd att mitt barn deltar i undersökningen.
[ ] Som vårdnadshavare ger jag inte mitt tillstånd att mitt barn deltar i undersökningen. ___________________________________________________________________________ Elevens namn ___________________________________________________________________________ Vårdnadshavares underskrift/er ___________________________________________________________________________ Datum
Om ni har frågor angående undersökningen, kan ni kontakta mig: amelieholfve@gmail.com
25
Bilaga 2 Elevinstruktion
Instruktion Scratch
Till att börja med (om du inte redan gjort det):a. Logga in på Scratch.com med de uppgifter du använde senaste lektionen, så att du får tillgång till vårt klassrum.
b. Skapa ett nytt projekt, kalla det för ”[Ditt namn] Lektion 2”. T.ex. Per Lektion 2 c. Dela ditt projekt
d. Klicka på ditt användarnamn uppe i höger hörn, välj ”Min klass”, klicka sedan på ”Lektion 2”. Lägg nu till ditt projekt med knappen ”Lägg till projekt”
e. Nu är du redo att börja med lektionens uppgift.
Ditt och andras projekt finns nu tillgängligt för alla i klassen. Här kan du ev. hitta lösningar på problem du stöter på. Tänk på att alla kan se in i ditt program, så lägg inte in något som någon kan ta illa upp av.
Vet du inte hur du ska börja?
Gör programmet inte som du vill? Finns det en bugg?
1) Input, output och enkla variabler v Få sprajten att säga något i en pratbubbla
v Fortsätt sedan genom att få sprajten att fråga spelaren någonting (tips: leta under ”Känna av”)
26 v Få sprajten att svara detsamma som spelaren skriver in i rutan (tips: leta efter blocket
”svar”)
2) Operationer
Du ska nu programmera din sprajt så att den gör ett test. Scratch kan testa om ett tal är större än, mindre än eller lika med ett annat tal. Bestäm vad du vill att sprajten testa.
v Få sprajten att ställa en till fråga till spelaren där svaret är ett tal. (t.ex ”kan du ett tal som är mindre än 7?”)
v Ta fram rätt operator som passar med svaret.
v Få sprajten att ”säga" om resultatet av testet du skapat.
Tips: Hinner du inte längre se svaret på den första frågan? Pröva att lägga till att programmet väntar en liten stund efter ”säg”, eller använd blocket ”säg i 2 sekunder”.
3) Villkorade satser
I uppgiften innan så säger sprajten automatiskt True eller False. Du ska nu bestämma vilka svar sprajten säger. Detta gör du med hjälp av en villkorssats. Sätt samman följande villkorssats bredvid ditt befintliga program och testa hur den fungerar genom att skriva olika siffror i den tomma rutan.
När du känner att du förstår hur villkorssatsen fungerar kan du byta ut det sista ”säg”-blocket mot detta och anpassa det så det fungerar ihop med ditt program.
27 Tips: Ofta när man programmerar så testar man mindre delar av sin kod, så som du precis gjorde, innan man sammanfogar det med resten av koden.
4) Loopar/Rekursion
För att få programmet att bli mer likt ett spel så ska det inte ta slut. Fundera över vilken del av ditt program som måste repeteras för att detta ska ske.
v Få sprajten att repetera sin kod automatiskt.
5) Variabler (Data)
Du ska göra ditt program mer likt ett spel, där spelaren får poäng när hen svarar rätt på din matematikfråga.
v Skapa en ny variabel. Denna har inget värde, så det först du behöver göra är att sätta den variabeln till ett startvärde.
v Se till att din variabel påverkas beroende på om spelaren svarar rätt eller fel. Notera att du kan påverka dina variabler på två sätt, antingen kan du göra så att den bestämmer ett värde (sätt variabel till…), eller ändra det befintliga värdet (ändra variabel med…). Testa vad som passar bäst i din situation.
v Testa att istället för att öka/minska din variabel med ett hela tiden, få den att öka/minska med ett slumptal. Slumptal är ett grönt block.
6) Fördjupningsuppgifter
v (Kopplat till uppgift 1) Just nu så svarar sprajten det som spelaren själv svarat i första frågan. Utforska hur du kan utveckla detta med hjälp av blocket Förena så att det blir ett mer naturligt svar från sprajten.
28 v (Kopplat till uppgift 2) Just nu så handlar det alltid samma siffra i ditt test, utforska hur du
kan använda blocket Slumpa tal mellan för att göra spelet mer spännande.
Tips: Du kan behöva skapa en till variabel för att få det att fungera fullt ut i ditt spel.
v (Kopplat till uppgift 3) Utforska olika operationer, se om du t.ex. kan fråga spelaren ”Vad blir 7*8?”, och sedan utnyttja multiplikationsblocket tillsammans med lika-med-blocket i din villkorssats.
v (Kopplat till uppgift 5) Skapa två nya variabler och sätt dem till slumptal. Undersök hur du kan få in dessa två i den matematikfråga som sprajten frågar spelaren.