Aktivitetsbank Matematikundervisning med digitala, åk 7-9 Ulrihca Malmberg, Maria Johansson, Ulrica Dahlberg
Matematik Grundskola åk 7-9 Modul: Matematikundervisning med digitala Aktivitetsbank till modulen Matematikundervisning med digitala Ulrihca Malmberg, Södra Latins gymnasium, Maria Johansson, Luleå tekniska universitet & Ulrica Dahlberg, NCM Introduktion till aktivitetsbanken I denna aktivitetsbank finns exempel på aktiviteter som kan utvecklas och varieras. Rubrikerna i aktiviteterna är följande och, i de flesta fall, återfinns de i varje aktivitet: Innehåll, termer och begrepp indelas i två punkter, första punkten innehåller exempel på aktivitetens matematiska fokus och den andra punkten exempel på aktivitetens programmeringstekniska fokus Gemensamt förslag till vad ni i klassen kan arbeta gemensamt med i aktiviteten Arbeta enskilt/arbeta i par förslag på vad eleverna kan arbeta med enskilt eller i par Förslag på diskussionsfrågor förslag till diskussionsfrågor när ni summerar aktiviteteten och har en helklassdiskussion Utveckling förslag på hur ni kan använda aktiviteten för att utmana elever eller använda på nästa lektion Exempel på kod här visas ett exempel på hur uppgiften kan lösas med kod i något programspråk Referens varifrån idén till aktiviteten kommer Hur ni som lärare sedan väljer att arbeta med aktiviteten är naturligtvis upp till er. Fler exempel på aktiviteter finns också i modulen under moment B. Med tanke på elevernas olika erfarenheter behöver aktiviteter anpassas. Ibland kan ni med fördel titta på aktivitetsbanken för andra stadier än denna för att få idéer. I aktiviteterna används främst två verktyg, Scratch och Python. Det går naturligtvis att använda andra verktyg och andra programspråk, om det passar er bättre. Scratch är ett exempel på blockprogrammering och Python på textprogrammering. Scratch kan användas på alla stadier medan Python passar på högstadiet och gymnasiet. Scratch Scratch är webbaserat och fungerar i alla webbläsare. Inom kort kommer en ny version av programmet att lanseras, en version som även passar för lärplattor. Då kommer nya länkar att läggas upp här. https://larportalen.skolverket.se 2 (18)
Länken till Scratch hemsida: http://scratch.mit.edu Uppe i menyn finns Tips och där finns handledning till när man ska skapa ett så kallat projekt i Scratch. Genom att följa instruktionerna får man guidning. För dem som vill läsa instruktioner finns på Internetstiftelsens webbplats information om hur programmet fungerar och stöd för att komma igång med Scratch: https://www.iis.se/docs/kom-igang-med-scratch.pdf Det finns många youtube-klipp som visar hur olika kommandon fungerar, och hur man kommer igång med programmering. Ett exempel: Python Sökord på youtube: "lär dig programmera scratch" Ett av de klipp som kommer upp är från Internetstiftelsen: https://www.youtube.com/watch?v=kf0iuhwb4bw Python kan köras webbaserat på till exempel http://repl.it eller laddas ner från www.python.org och köras lokalt på datorn. För nybörjare finns flera olika introduktionskurser att starta med för att få de mest grundläggande begreppen introducerade. Bland annat: Coderdojo: http://gnarp.se/python/ Från Malmö stads satsning "Matematisk programmering i Python": https://sites.google.com/skola.malmo.se/programmeringsfortbildning/startsida När man sedan vill lära sig ett speciellt begrepp eller kommando finns det också på youtube. Ett exempel: Sökord på youtube: "loop python" Ett av de klipp som kommer upp är från Khan academy: https://www.youtube.com/watch?v=9lgykiq_hu0 ÄÉ https://larportalen.skolverket.se 3 (18)
Förflyttning Parprogrammering I denna aktivitet ska elever parvis skapa ett program som konstruerar en bild. Aktiviteten genomförs helt utan digitala verktyg och kan användas som en introduktion till felsökning av program. Innehåll, termer och begrepp Geometriska begrepp, rörelse Stegvisa instruktioner, felsökning Gemensamt Dela in eleverna i par. Paren ställer sig på ena sidan av klassrummet eller skolgården. På andra sidan rummet placeras en bild till varje par, alla par ska ha samma bild. Bilden kan exempelvis vara en geometrisk figur. Parens uppgift är att skriva ner kod/instruktioner till ett program som talar om hur figuren kan konstrueras. Instruktionerna som behövs kan ni tillsammans komma överens om. Ni kan också titta på de instruktioner som används i aktiviteten "Förflyttning Programmering av rutmönster" som återfinns i aktivitetsbanken för åk 4-6. Gå tillsammans igenom reglerna för aktiviteten: En i paret går fram och tittar på bilden och skriver ner den första instruktionen till ett program som ska konstruera figuren. Eleven går tillbaka och ställer sig. Den andra eleven går fram och tittar på bilden och på den instruktion som den förra skrev, lägger till en instruktion och går tillbaka och så fortsätter aktiviteten med samma procedur. Den elev som är framme och tittar på bilden felsöker också och ser om någon instruktion ska ändras och rättar i så fall till den. Varje elev ska bara justera ett instruktion, vilket innebär att även resten av programmet kan behöva justeras. Det blir den andra i paret som får fortsätta att felsöka och rätta till kommande instruktion om så behövs. Det är tillåtet att diskutera programmet med den andra eleven i paret och planera hur de ska gå vidare. Aktiviteten kan genomföras flera gånger med bilder av ökande svårighetsgrad. Förslag på diskussionsfrågor i helklass Vad skiljer era instruktioner åt? Vilka "buggar" i felsökningen hittade ni? Skulle instruktionerna kunna förbättras på något sätt? https://larportalen.skolverket.se 4 (18)
Vilka fler instruktioner skulle ni vilja tillföra för att göra smidigare instruktioner? Utveckling Rita en figur på tavlan och låt eleverna göra instruktioner till bilden. Be dem byta instruktioner och felsök varandras instruktioner. Diskutera och jämför elevernas instruktioner. En annan idé är att läraren har skrivit instruktioner till rita en figur. Elevernas uppgift blir att försöka rita enligt koden och därefter se om den stämmer med förlagan. Stämmer den inte kan ni felsöka och resonera om hur man bör rita eller skriva om kod. Referenser Idén är hämtad från code.org. https://larportalen.skolverket.se 5 (18)
Geometri Generalisera en lösning 1 Vridningar och vinklar I denna aktivitet får eleverna konstruera regelbundna månghörningar och skapa hörnen genom att vända/vrida. De ska få möjlighet att upptäcka sambandet mellan vridningen och den uppkomna vinkeln, och mellan antalet vridningar och vridningens storlek. I en given kod får de försöka förstå hur antalet hörn i figuren påverkar vridningens storlek. Innehåll, termer och begrepp Polygon, månghörning, vridning, vinkel, grader, vinkelsumma Loop Gemensamt Börja med att låta eleverna rita en kvadrat genom att använda de två enkla instruktionerna gå och vänd i Scratch. (Det går också att använda ett annat blockprogrammeringsprogram, då heter motsvarande kommando eventuellt något annat). Ni kan antingen göra det tillsammans på en gemensam skärm eller så gör eleverna detta på sina egna skärmar. Om eleverna gör varsin kvadrat får ni bestämma om kvadraten ska ha samma eller om storleken kan variera. Låt eleverna upptäcka mönstret och diskutera hur man skulle kunna förenkla programmet. Introducera och pröva att använda kommandot "repetera", det vill säga loop. Använd "repetera" och skapa en liksidig triangel. Låt eleverna experimentera och pröva sig fram. https://larportalen.skolverket.se 6 (18)
- Hur mycket måste pennan vända? - Vänder ni den mer eller mindre än när ni ritade kvadraten? I vilken figur vände pennan mest /var vridningen störst? Vilken figur har de minsta innervinklarna? Jämför vinkeln inuti och vridningsvinkeln i de två figurerna. Vad ser ni? Låt eleverna få fundera ut och prova hur mycket pennan ska ändra riktning om vinkeln i figuren ska bli 60º, 150º, 30º. Arbeta i par Använd "repetera" för att skapa en triangel, en kvadrat, en regelbunden sexhörning och så vidare. Skapa olika regelbundna polygoner med hjälp av nedanstående illustration: Vad kan 360/6 betyda? Varför skriver man så tror du? Förslag till diskussionsfrågor i helklass Hur stor är den sammanlagda vridningen i varje figur? Försök att förklara varför. Vilken figur har de minsta vinklarna? Största vinklarna? Varför är det sista kommandot i loopen med, "vänd 360/ (svar) grader"? Förklara sambandet. Vilken relation är det mellan vridningen och den uppkomna vinkeln? https://larportalen.skolverket.se 7 (18)
Geometri Generalisera en lösning 2 Summan av vridningar och vinkelsumman I denna aktivitet får eleverna konstruera regelbundna månghörningar och undersöka relationen mellan antalet hörn och vinklarnas storlek. Detta kan sedan utvecklas till en undersökning om vinkelsumman. Aktiviteten bygger på 7-9 Geometri Generalisera en lösning 1. Innehåll, termer och begrepp Polygon, regelbunden månghörning, vinkel, vridning, vinkelsumma Loop Gemensamt Repetera det eleverna gjorde Geometri Generalisera en lösning 1. Hur konstruerar man en regelbunden polygon? Hur skapar man hörnen? Arbeta i par Använd samma program som i aktiviteten "Vridning och vinklar" för att skapa en triangel, en kvadrat, en regelbunden sex-hörning och så vidare... Undersök sambandet mellan antalet hörn och innervinklarnas storlek. Förslag till diskussionsfrågor i helklass Vilken figur har de minsta vinklar? Största vinklarna? Hur ser den figur ut som har de största vinklarna ni kan tänka er? Vilken vinkelsumma har triangeln, kvadraten, sexhörningen... Finns det något samband mellan antalet hörn och vinkelsumman? Väck tanken på att det kan finnas ett generellt uttryck. Utveckling Försök att hitta ett generellt uttryck för vinkelsumman i en månghörning. Försök också att förklara och, i en figur, visa detta samband. https://larportalen.skolverket.se 8 (18)
Tid Omvandlingsmaskin I denna aktivitet får eleverna arbeta med enhetsomvandlingar av tidsenheter. Programmeringen består av textprogrammering i Python. Om eleverna inte arbetat med textprogrammering kan aktiviteten användas i någon blockprogrammeringsmiljö eller göras utan digitala verktyg med så kallad pseudokod, det vill säga kod bestående av skrivna instruktioner. Innehåll, termer och begrepp Enhetsomvandlig av tidsenheter, olika matematiska operationer Pseudokod Gemensamt Diskutera gemensamt hur man omvandlar mellan olika tidsenheter, från dagar till timmar, från timmar till minuter och så vidare. Diskutera också vilka eventuella kommandon ni kommer att behöva för att skriva kod i Python vid sådana uträkningar. Arbeta i par Försök att sätta upp en generell regel för hur man går från tid i timmar, minuter och sekunder till enbart sekunder. Tänk er att ni ska göra ett program som gör denna tidsomvandling. Om ni matar in antal timmar, minuter och sekunder ska programmet ta fram det totala antalet sekunder. Hur skulle en sådan instruktion kunna utformas? Skriv ner en stegvis instruktion med ord. Försök omvandla er instruktion till en kod i Python. Förslag till diskussionsfrågor i helklass Vilka matematiska operationer måste finnas med? Om vi i stället matar in antal sekunder och vill få antal timmar och minuter, vad behöver vi då ändra? Hur skulle instruktionen behöva ändras om vi vill omvandla från år till sekunder? https://larportalen.skolverket.se 9 (18)
Exempel på kod Här är ett exempel på kod. Det rödmarkerade är kodförklaringar. # Omvandlar tid i sekunder till antal timmar, minuter och sekunder print("programmet omvandlar tid i sek till timmar, min och sek") sekunder = int(input("ange antal sekunder: ")) timmar = sekunder // 3600 # "//"" ger heltalskvoten vid division sekunder = sekunder % 3600 # "%" ger resten vid division. Variabeln "sekunder" uppdateras. minuter = sekunder // 60 sekunder = sekunder % 60 print(timmar, "timmar,", minuter, "minuter,", sekunder, "sekunder") https://larportalen.skolverket.se 10 (18)
Geometri Pythagoras sats I denna aktivitet får eleverna göra ett matematiskt verktyg som räknar ut den tredje sidans längd i en rätvinklig triangel då man vet de andra två sidorna. Beroende på eleverna förkunskaper kan uppgiften begränsas så att man anger de två kateternas sidor och får reda på hypotenusans längd. Innehåll, termer och begrepp Pythagoras sats, kvadratrötter, formelskrivning, koordinatsystem, punkter Matematiska operatorer, matematikbiblioteket Gemensamt Diskutera vad Pythagoras sats handlar om. Arbeta enskilt eller i par Hur beräknar man längden på hypotenusan om man vet att längden på de båda kateterna är 3 cm och 6 cm långa? Skriv ner instruktioner till hur du gör. Hur blir instruktionen om det är andra längder på kateterna? Försök att generalisera. Hur beräknas den tredje sidan om du vet längden på hypotenusan och en annan sida? Skriv ner instruktioner. Försök omsätta dina instruktioner till kod som frågar efter kateternas längder och beräknar hypotenusans längd. Förslag till diskussionsfrågor i helklass Hur skiljer sig era instruktioner åt? Vilka typer av matematikproblem eller uppgifter kan detta verktyg användas till? Hur kan koden modifieras/ändras så att den löser andra typer av problem, till exempel att beräkna avstånd mellan två punkter? Utveckling Hur programmerar man för att: ange hypotenusan och en katet och beräkna den andra kateten ange koordinater för två punkter och beräkna avståndet mellan dessa kunna välja om man ska ange kateter eller hypotenusan som input https://larportalen.skolverket.se 11 (18)
programmet ska kunna ge två olika svar ett svar om de två indata är kateternas längder, ett svar om en av dem är hypotenusans längd Exempel på kod Följande kod kan kopieras och köras på exempelvis websidan repl.it. Det rödmarkerade är kodförklaringar. from math import * katet_1 = float(input("ange längden på den första kateten: ")) katet_2 = float(input("ange längden på den andra kateten: ")) hypotenusan = round(sqrt(katet_1 **2 + katet_2 ** 2),2) # Beräknar hypotenusan print("hypotenusans längd är:", hypotenusan,"l.e") Följande kod är en utveckling där avståndet mellan två punkter beräknas. # Programmet beräknar avståndet mellan två punkter from math import * print("programmet beräknar avståndet mellan två punkter som du anger koordinaterna för") x_1 = float(input("ange x-koordinaten för den första punkten: ")) y_1 = float(input("ange y-koordinaten för den första punkten: ")) x_2 = float(input("ange x-koordinaten för den andra punkten: ")) y_2 = float(input("ange y-koordinaten för den andra punkten: ")) avstånd = round(sqrt((x_1 - x_2) **2 + (y_1 - y_2)** 2),2) # Beräknar avståndet (hypotenusan) print("avståndet mellan punkterna är:", avstånd, "l.e.") När elever tolkar koden kan några hjälpfrågor eventuellt behövas: Varför fungerar denna kod? Analysera koden matematiskt vad är det för matematik som sker? Spelar det någon roll om den första x-koordinaten är större eller mindre än den andra x-koordinaten? Varför/varför inte? https://larportalen.skolverket.se 12 (18)
Samband och förändring Linjära funktioner Hyra bil Då man hyr en bil finns en information om hur mycket man ska betala. Vad ligger bakom denna tablå? Denna aktivitet går ut på att eleverna själva ska programmera en sådan till en biluthyrningsfirma. Den exempelkod som ges i slutet av aktiviteten är programmerad i Python, men det går givetvis med vilket programspråk som helst. Innehåll, termer och begrepp Formelskrivning, linjära funktioner, definitionsmängd, värdemängd Villkor, matematiska operatorer Gemensamt Diskutera vilka parametrar som bestämmer vad man ska betala då man hyr en bil. Arbeta i par Hitta på en prismodell för biluthyrning, där kostnaden beror på hur långt man åker. Den ska ha en given startkostnad och ett km-pris Räkna ut priset i några exempel Finn en generell regel som visar sambandet mellan åkta km och pris Skriv ett program som snabbt räknar ut kostnaden för olika sträckor. Använd er egen funktion. Förslag på diskussionsfrågor i helklass Vad är likt och vad är olikt i klassens olika modeller? Hur ska frågorna i form av indata vara formulerade så att det blir ett så smidigt verktyg som möjligt för biluthyraren? Utveckling Lägg in definitionsmängd och/eller värdemängd i er programkod (hyrbil.py) Skapa olika hyrkategorier och olika prismodeller beroende på körsträcka Ta fram jämförpriser mellan olika alternativ Exempel på kod Följande kod kan kopieras och köras på exempelvis websidan repl.it. I koden finns definitionsmängd medtagen (se ovan under rubriken Utveckling). Det rödmarkerade är kodförklaringar. https://larportalen.skolverket.se 13 (18)
# Ger pris för att hyra en bil och varnar om man ligger över eller under tillåten körsträcka. print("programmet beräknar hyrkostnaden för en bil") print("startavgiften är 300 kr och km-kostnaden 5 kr") körsträcka = float(input("ange önskad körsträcka i km: ")) if körsträcka < 5: print("minsta tillåtna körsträcka är 5 km") elif körsträcka > 500: print("maximalt tillåten körsträcka är 500 km") else: pris = 300 + 5 * körsträcka print("kostnaden för att hyra bilen i", körsträcka, "km är", int(pris),"kr") https://larportalen.skolverket.se 14 (18)
Tal Summera tal utan digitalt verktyg Den här aktiviteten handlar om att summera tal, och att försöka hitta strategier för att göra detta på ett så enkelt sätt som möjligt. Denna matematikuppgift påstås matematikern Gauss ha fått av sin lärare då han gick i skolan. Läraren ville hålla Gauss sysselsatt en längre stund men han löste uppgiften på mycket kort tid, genom att använda den metod att beräkna summan av en aritmetisk talserie som denna aktivitet vill belysa. Aktiviteten kan göras utan användning av digitala verktyg. Innehåll, termer och begrepp Summor av heltal Algoritm, stegvisa instruktioner Gemensamt Be eleverna att försöka summera alla tal mellan 1 och 200. Låt dem göra det på en relativt kort tid, någon minut. Efteråt kan klassen diskutera frågor som: Kan någon ge en summa? Ñr det någon som inte ens försöker för att det är för svårt? Någon som har en strategi men inte lyckas på den korta tiden? Vilka olika strategier använde de? Om ingen har upptäckt möjligheten att addera talpar som ger summan 201, så led in dem på den strategin genom några frågor: Vad är 200 + 1? Vad är 199 + 2? Vad är 198 + 3? Hittar ni ett mönster? Hur många av dessa par kommer vi att ha? Vilket är det sista paret vi hittar? (100 + 101) Det betyder att vi har 100 par med summor. Om vi har 100 par med summan 201, vad blir då den totala summan, det vill säga vad är 100 * 201? Arbeta i par Hur kan vi beräkna summan av de 100 första talen? De 300? De 1000? Hur beräknar vi summan av 1+2+3+4...+2000? Hur kan vi beräkna summan av talen 1-20000? Skriv en stegvis instruktion till hur dessa summor sa beräknas. https://larportalen.skolverket.se 15 (18)
Förslag på diskussionsfrågor i helklass Jämför olika instruktioner? Vad är lika oberoende av vilka tal som summeras? Vad är olika? Referens Idén till aktiviteten kommer från code.org. https://larportalen.skolverket.se 16 (18)
Sannolikhet Kasta tärningar I denna aktivitet får eleverna testa olika metoder att bestämma hur sannolikt det är att få lika/samma utfall? då två tärningar kastas. I programmeringen används slumpbiblioteket som kan importeras så att slumpundersökningar kan genomföras i programmet. Innehåll, termer och begrepp Experimentell sannolikhet, utfallsdiagram Slumpbiblioteket i Python, villkor, loop Gemensamt Börja med att fråga: Hur stor chans är det att få lika på båda om man kastar två tärningar? Låt sen eleverna kasta två tärningar var ett bestämt antal gånger och registrera antalet kast där tärningarna visar lika. Sammanställ klassens resultat. Diskutera skillnader mellan andelen av elevernas olika resultat och klassens resultat. Hur många kast vill ni göra för att vara säkra på resultatet? Gå tillsammans igenom hur slumpbiblioteken i Python kan anropas, se under rubriken "Exempel på kod" (import randint). Arbeta i par Fundera på hur resultatet skulle kunna bestämmas teoretiskt. Skriv kod som "slår tärningar". Jämför att kasta fysiska tärningar, det teoretiska resultatet samt det experimentella med dator. Förslag på diskussionsfrågor i helklass Vilka slutsatser kan ni dra? Vilka brister och fördelar är det med de olika metoderna? Diskutera begreppen experimentell och teoretisk sannolikhet. Vad är det för beräkning programmet levererar? Vilka slutsatser kan ni dra när alla olika resultat jämförs? Utveckling Skriv kod för liknande frågeställningar, till exempel att få en given summa. Det program ni har gjort som slår tärningar kan användas som ett verktyg och kombineras men andra små program till ett större program. Det kan byggas ut så att programmet kan göra många olika typer av undersökningar, till exempel kast med flera tärningar eller andra typer av experimentella sannolikhetsundersökningar. https://larportalen.skolverket.se 17 (18)
Exempel på kod Följande kod kan kopieras och köras på exempelvis websidan repl.it. Det rödmarkerade är kodförklaringar. # Beräknar experimentell sannolikhet att två tärningar visar samma summa from random import randint # importerar slump-kommandon AntalLika = 0 # Nollställer räknare print("programmet ger sannolikheten att två tärningar visar samma antal prickar") AntalKast = int(input("ange antal kast: ")) for i in range(antalkast): tärning_1 = randint(1,6) tärning_2 = randint(1,6) if(tärning_1 == tärning_2): AntalLika = AntalLika + 1 sannolikhet = round((antallika/antalkast) * 100,1) print("sannolikheten för att båda tärningarna visar samma är",sannolikhet,"%.") https://larportalen.skolverket.se 18 (18)