og samtidig få inspirasjon, tips og eksempler på hvordan programmering kan brukes i matematikkundervisningen.
Programmering har kommet inn i skolen for fullt, og ansvaret er særlig lagt til matematikkfaget. Men hvilken rolle skal programmeringen ha? Skal matematikken brukes til å lære programmering, eller skal programmering brukes til å lære matematikk? Ja, takk, begge deler, sier forfatterne og viser deg hvordan. Først får du en grundig innføring i blokkprogrammering med det populære blokkprogrammeringsverktøyet Scratch. Det kreves ingen forkunnskaper, og allerede etter første kapittel vil du kunne lage enkle programmer til å løse ulike oppgaver. Resten av boka er viet konkrete eksempler og tips til hvordan du lykkes med blokkprogrammering i undervisningen, blant annet ved å tilpasse undervisning, oppgaver og aktiviteter til kompetansemålene i programmering på de ulike trinnene •
undervise matematikkfaglige tema som geometri og algebra med blokkprogrammering som verktøy
•
inkludere blokkprogrammering i undervisning av andre fag
Boka er skrevet for lærerstudenter og matematikklærere i grunnskolen, men alle med interesse for blokkprogrammering i skolen vil finne noe nyttig her.
Kloss for kloss
•
Øistein Gjøvik og Joakim Høyland
Denne boka er til alle matematikklærere som vil lære blokkprogrammering
Øistein Gjøvik og Joakim Høyland
Kloss for kloss
Blokkprogrammering for lærere
Øistein Gjøvik er universitetslektor ved Institutt for lærerutdanning, NTNU. Joakim Høyland jobber dels som universitetslektor ved Institutt for lærerutdanning, NTNU, og som lærer ved Charlottenlund ungdomsskole.
ISBN 978-82-15-06001-9
9788215060019_omslag.indd 1
28.04.2022 09:36
KLOSS FOR KLOSS
9788215060019_Gjøvik og Høyland_Kloss for kloss.indd 1
25.04.2022 12:55
9788215060019_Gjøvik og Høyland_Kloss for kloss.indd 2
25.04.2022 12:55
Øistein Gjøvik og Joakim Høyland
KLOSS FOR KLOSS Blokkprogrammering for lærere
U N I V E R S I T E T S F O R L AG E T
9788215060019_Gjøvik og Høyland_Kloss for kloss.indd 3
25.04.2022 12:55
© Universitetsforlaget 2022 ISBN 978-82-15-06001-9 Materialet i denne publikasjonen er omfattet av åndsverklovens bestemmelser. Uten særskilt avtale med rettighetshaverne er enhver eksemplarfremstilling og tilgjengeliggjøring bare tillatt i den utstrekning det er hjemlet i lov eller tillatt gjennom avtale med Kopinor, interesseorgan for rettighetshavere til åndsverk. Utnyttelse i strid med lov eller avtale kan medføre erstatningsansvar og inndragning og kan straffes med bøter eller fengsel. Bilder i starten av hvert kapittel: 1: Vasilyev Alexandr / Shutterstock.com; 2: Sunny studio / Shutterstock.com; 3: X.TIAN/Shutterstock.com; 4: Sunny studio / Shutterstock.com; 5: Gorodenkoff/Shutterstock.com Andre bilder i boka: Figur 1.20: Bildet tilhører United States Department of Defense, Naval Surface Warfare Center. Hentet fra nettsiden til National Museum of American History, i tråd med deres betingelser. Figur 1.35: Bildet er offentlig tilgjengelig. Figur 3.2: Foto av Øistein Gjøvik. Babylons algoritmer: Charles Tilford, https://www.flickr.com/photos/charlestilford/2552654321 Boka er utgitt med støtte fra Kunnskapsdepartementet ved Lærebokutvalget for høyere utdanning. Henvendelser om denne utgivelsen kan rettes til: Universitetsforlaget AS Postboks 508 Sentrum 0105 Oslo www.universitetsforlaget.no Omslag: Mette Gundersen Sats: ottaBOK Trykk og innbinding: 07 Media – 07.no Boken er satt med: ITC New Baskerville Std 10,5/14
9788215060019_Gjøvik og Høyland_Kloss for kloss.indd 4
ED
79
07
M
NO - 1470
RKET TRY K ME RI KE
MIL JØ
Papir: 100 g Arctic Matt
IA – 2041
03
25.04.2022 12:55
Innhold Introduksjon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Blokkprogrammering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Relevans, dybdelæring og sammenheng . . . . . . . . . . . . . . . . . . . . . . Undervisning med, gjennom og i programmering . . . . . . . . . . . . . . Bokas oppbygning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11 11 12 13 14
Kapittel 1 Lær deg Scratch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Blokkprogrammering i Scratch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kom i gang med Scratch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Oppsummering av terminologien . . . . . . . . . . . . . . . . . . . . . . . . . Det første først . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Oppstartsklossen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bevegelser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Løkker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Koordinater . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Skilpaddegeometri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Variabler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operatorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Algoritmisk tenkning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Input fra brukeren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Synlige og usynlige figurer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tester og vilkår . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Litt mer avansert bruk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mine klosser – eller funksjoner . . . . . . . . . . . . . . . . . . . . . . . . . . . Lister . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Meldingstjenesten – flere figurer . . . . . . . . . . . . . . . . . . . . . . . . . Figuranimasjoner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lyd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sekundklokka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lik og del! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Noen triks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Øvingsoppgaver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16 17 19 21 22 23 24 26 26 28 31 33 35 37 39 39 42 42 45 47 48 49 50 51 52 56
9788215060019_Gjøvik og Høyland_Kloss for kloss.indd 5
25.04.2022 12:55
Innhold
Kapittel 2 Å undervise i Scratch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programmeringsrelaterte kompetansemål i LK20 . . . . . . . . . . . . . . 2. trinn: Lage og følge regler og trinnvise instruksjoner i lek og spill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hva kan du gjøre? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Geometristafett på papir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tenk på . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. trinn: Lage og følge regler og trinnvise instruksjoner i lek og spill knyttet til k oordinatsystemet . . . . . . . . . . . . . . . . . . . . . Hva kan du gjøre? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tenk på . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. trinn: Lage algoritmer og uttrykke dem ved bruk av variabler, vilkår og løkker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hva kan du gjøre? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tenk på . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5. trinn: Lage og programmere algoritmer med bruk av variabler, vilkår og løkker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hva kan du gjøre? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tenk på . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6. trinn: Bruke variabler, løkker, vilkår og funksjoner i programmering til å utforske geometriske figurer og mønster . . . Hva kan du gjøre? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tenk på . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7. trinn: Bruke programmering til å utforske data i tabeller og datasett . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hva kan du gjøre? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8. trinn: Utforske hvordan algoritmer kan s kapes, testes og forbedres ved hjelp av programmering . . . . . . . . . . . . . . . . . . . . . . . Hva kan du gjøre? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tenk på . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9. trinn: Simulere utfall i tilfeldige forsøk og b eregne sannsynligheten for at noe skal inntreffe, ved å bruke programmering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hva kan du gjøre? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tenk på . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10. trinn: Utforske matematiske egenskaper og sammenhenger ved å bruke programmering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hva kan du gjøre? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tenk på . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Didaktiske grep – undervisning i programmering . . . . . . . . . . . . . . Lage lærerkonto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Progresjon av prosjekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tutorials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bruke ferdiglagde kodetimeopplegg . . . . . . . . . . . . . . . . . . . . . .
66 67 68 69 71 72 73 73 76 77 77 78 79 79 79 82 82 83 84 84 87 87 87
88 88 92 92 92 95 96 96 96 97 98
6
9788215060019_Gjøvik og Høyland_Kloss for kloss.indd 6
25.04.2022 12:55
Innhold
Gi elevene noen klosser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vis elevene det ferdige programmet . . . . . . . . . . . . . . . . . . . . . . . Start med et halvferdig program . . . . . . . . . . . . . . . . . . . . . . . . . . Lage flytdiagram og så program . . . . . . . . . . . . . . . . . . . . . . . . . . Instruksjonsvideo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Forutsi kode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rett opp kode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bruke Scratch cards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Gallerier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Levere inn elevarbeid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PRIMM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hvor mye og hvor ofte? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Språket i Scratch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Parprogrammering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vurdering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Særlige utfordringer fra matematikken . . . . . . . . . . . . . . . . . . . . Strukturen i prosjekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Et læringsløp gjennom programmering . . . . . . . . . . . . . . . . . . . . . . Overganger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Valg av programmeringsspråk . . . . . . . . . . . . . . . . . . . . . . . . . . . .
98 99 99 100 100 100 101 101 102 103 103 105 105 106 107 107 109 110 111 112
Kapittel 3 Undervisning med og gjennom programmering . . . . . . . . . Geometri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Inspirert av Turtle Confusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . Klasserommet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lage kunstverk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arealkalkulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Forholdet mellom areal og sidekant . . . . . . . . . . . . . . . . . . . . . . . Den problematiske sirkelen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Glidere med desimaltall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rotasjoner ved stempling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Simulere naturlig rulling av ball . . . . . . . . . . . . . . . . . . . . . . . . . . Sannsynlighet og statistikk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Betinget sannsynlighet – gjett baksida . . . . . . . . . . . . . . . . . . . . . Betinget sannsynlighet – Monty Hall . . . . . . . . . . . . . . . . . . . . . . Eksperimentell sannsynlighet . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tallære . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Gjette på et tall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Matematikkprogrammer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operatorer og matematiske oppgaver . . . . . . . . . . . . . . . . . . . . . Potenser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Brøk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Primtall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Matematikkspill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
114 115 115 115 116 117 120 120 122 122 123 124 124 125 126 127 127 127 128 129 130 131 132 7
9788215060019_Gjøvik og Høyland_Kloss for kloss.indd 7
25.04.2022 12:55
Innhold
Konvertering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Planfigurer med variable lengder . . . . . . . . . . . . . . . . . . . . . . . . . Eva Ballstad og håndballgeometri . . . . . . . . . . . . . . . . . . . . . . . . . Fotballbane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figurtall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
132 133 133 136 138 138
Kapittel 4 Idébank for andre fag og tema . . . . . . . . . . . . . . . . . . . . . . . . Undervisning med og gjennom programmering i andre fag og fagområder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Intervjue og utvikle for klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . Akvarium . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lage julekort/bursdagskort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bruke Scratch som presentasjonsverktøy . . . . . . . . . . . . . . . . . . . Legg inn multiple choice-spørsmål . . . . . . . . . . . . . . . . . . . . . . . . Hjelp til brettspill eller andre spill . . . . . . . . . . . . . . . . . . . . . . . . Telefonrabbel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ohms lov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Idégenerator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Writing prompts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scratch Story Cubes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Webkameraet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fylker på norgeskartet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Strekrobot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Robotplenklipper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Versjoner av spill du har spilt på brett eller papir . . . . . . . . . . . . Funksjonsbokstaver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Korona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Oversettelsesprogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kildesortering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
140 141 141 141 142 142 143 144 144 145 146 146 147 148 149 150 151 152 152 153 154 155 155
Kapittel 5 Micro:bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hva er micro:bit? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Micro:bit med Scratch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . «Ballanse» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Innføring i micro:bit med MakeCode . . . . . . . . . . . . . . . . . . . . . . . . Komme i gang med MakeCode . . . . . . . . . . . . . . . . . . . . . . . . . . . Vis noe på skjermen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overføre programmet til micro:bit . . . . . . . . . . . . . . . . . . . . . . . . Input og output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Digital sensor – lys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bruke micro:bit som en mikrokontroller . . . . . . . . . . . . . . . . . . . . . . Lyskryss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
156 157 158 159 161 163 164 166 168 169 171 171
8
9788215060019_Gjøvik og Høyland_Kloss for kloss.indd 8
25.04.2022 12:55
Innhold
Micro:bit i matematikk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Digital terning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Gangespill med micro:bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Micro:bit i naturfag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sender og mottaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ubitlogger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Forslag til flere prosjekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
175 176 176 176 177 178 179
Tillegg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Litteraturforslag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Løsningsforslag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Referanser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
9788215060019_Gjøvik og Høyland_Kloss for kloss.indd 9
25.04.2022 12:55
9788215060019_Gjøvik og Høyland_Kloss for kloss.indd 10
25.04.2022 12:55
Introduksjon Med de nye læreplanene i LK20 (Fagfornyelsen) kommer programmering inn i skolen for fullt. Elevene skal få programmeringsfaglig kompetanse og forstå grunnleggende algoritmisk tenkning. Det er særlig matematikkfaget som har fått ansvaret for dette, men hvilken rolle skal programmeringen ha i faget? Skal matematikken brukes til å lære programmering, eller skal programmeringen brukes til å lære matematikk? Dette har vært et underkommunisert tema under innføringen av programmering i skolen. Og svaret er, som det ofte er: litt av begge deler. Som lærer vil du noen ganger lage program som elevene kan bruke i arbeidet med matematikken, mens du andre ganger vil at elevene skal lære å lage program selv. Det kan være utfordrende å vite når du skal gjøre det ene eller det andre. Med denne boka håper vi å gjøre det litt lettere for deg å planlegge bruken av programmering i undervisningen.
Blokkprogrammering Om elevene skal jobbe med blokkprogrammering eller tekstprogrammering, er en stadig tilbakevendende diskusjon i utdanningssystemet. Blokkprogrammering betyr at kommandoene man programmerer med, er klosser som settes sammen. I tradisjonell (tekstbasert) programmering skriver man derimot tekstkommandoer. Læreplanen (LK20) legger ingen føringer i valget av programmeringstype i grunnskolen, men legger opp til bruk av tekstbasert programmering i videregående skole. Vi antar at det blir mest blokkprogrammering på barne- og mellomtrinnet, mens ungdomstrinnet vil oppleve å ligge imellom. Det kan se ut til at de fleste ungdomsskolene hittil har valgt å bruke tekstbasert programmering. Det er vår oppfatning at ungdomsskolelærere bør beherske begge deler for å være i stand til å lage en god overgang for elevene. Parallelt med at matematikken blir mer symbolbasert, kan man legge opp til at programmeringsundervisningen også blir det. Fordelen med blokkprogrammering er at man kan vektlegge strukturen i programmet i stedet for å skrive kommandoene helt nøyaktig. Da kan programmering bli et tilgjengelig medium for barn og andre som er nybegynnere i faget. For å oppnå en god overgang til tekstbasert programmering er det avgjørende at blokkprogrammeringen 11
9788215060019_Gjøvik og Høyland_Kloss for kloss.indd 11
25.04.2022 12:55
Introduksjon
legges opp slik at elever lærer programmeringsprinsipp de får bruk for i senere sammenhenger. Det finnes flere typer blokkprogrammeringsmiljø, men i denne boka har vi valgt å bruke et som heter Scratch. Scratch er et blokkprogrammeringsspråk som har eksistert siden 2007 og har millioner av brukere verden over. I Norge er det mange skoler som allerede har tatt Scratch i bruk, lenge før LK20 kom med sitt forsterkede fokus på programmering. Denne boka skal gi deg nok å holde på med for å komme godt i gang med Scratch. Det finnes mange måter å lære seg Scratch på: Noen liker å se en film på YouTube, andre liker å ta det trinn for trinn med ei pdf-fil eller ei bok. Det kan høres litt gammeldags ut å bruke det mest analoge vi har, til å lære seg noe så digitalt som programmering, men har du bare én skjerm til rådighet, vil det bli mye skifting mellom vinduer og faner om du ikke har materialet tilgjengelig i papirformat.
Relevans, dybdelæring og sammenheng Introduksjonen av programmering i de nye læreplanene har ikke skjedd uten en viss debatt. Ifølge Vidje (2019) har hensikten med revisjonen av læreplanen vært: 1. Det elevene og lærlingene lærer, skal være relevant. Samfunnet og arbeidslivet endrer seg med ny teknologi, ny kunnskap og nye utfordringer. Vi trenger barn og unge som reflekterer og er kritiske, utforskende og kreative. 2. Elevene og lærlingene skal få mer tid til dybdelæring. Mange av læreplanene har vært for omfattende. For å legge gode rammer for dybdelæring kan vi ikke bare fylle på med nytt innhold. Vi må gjøre tydelige prioriteringer. 3. Det skal bli bedre sammenheng i og mellom fagene, og de forskjellige delene av læreplanverket skal henge bedre sammen. Her kan vi merke oss hovedpoengene relevans, dybdelæring og sammenheng. Noe av kritikken mot innlemmelsen av programmering, spesielt i matematikkfaget, har vært at det ikke er relevant for å lære matematikk, og at det forhindrer muligheten til dybdelæring, da det nødvendigvis må bli mindre tid til hvert tema, om ikke noe av tematikken blir tatt helt ut av faget. Nå når temaet har blitt satt inn i læreplanen på nesten alle årstrinn, må vi se på hvordan vi fortsatt kan sikre oss relevans, dybdelæring og sammenheng. At programmering er en relevant ferdighet, kan vi se i sammenheng med såkalte 21th century skills, det vil si ferdigheter i å håndtere moderne verktøy og problemstillinger:
12
9788215060019_Gjøvik og Høyland_Kloss for kloss.indd 12
25.04.2022 12:55
Undervisning med, gjennom og i programmering
What we are seeing is not a revolution in education. It is better understood as a shift in how we recognize the importance of developing generic skills and competencies during basic and secondary education. We are making explicit our expectations of education in terms of these generic outcomes. The point of education has always been to equip students to function effectively in society. As our society has changed, we are re-visiting this expectation, and focusing more explicitly on the particular skills and competencies that have been highlighted as essential for functioning in our technological world (Binkley et al., 2012, s. 8).
Det er mange gode grunner til at elever bør lære seg programmering. Programmering er godt egnet for å hjelpe elevene med å utvikle logisk tenkning og problemløsningskompetanse. I tillegg blir mer og mer av samfunnet digitalisert, og da bør vi ha kunnskap om hvordan teknologien fungerer, for å være gode, kritiske, demokratiske borgere. Økt kompetanse i programmering vil gjøre oss bedre rustet til å forstå blant annet hvordan algoritmene styrer mye av det vi ser og gjør på internett og i sosiale medier. I tillegg har programmeringskunnskap en praktisk nytteverdi om man skal jobbe med å lage en blogg eller ei webside, bruke teknisk programvare og mer. Dermed får elever, også de som ikke skal jobbe videre med matematikken senere i livet, nytte av kunnskapen de tilegner seg gjennom programmering. Aktiviteten å programmere har den egenskapen at du virkelig må forstå både de små detaljene og de lange linjene. Når du er helt avhengig av å lage instruksjoner som ned til minste detalj skal løse en oppgave, må du forstå hele problematikken inngående. Når det gjelder sammenheng i faget og på tvers av fag, ser vi også at programmering kan spille en rolle. Innad i matematikkfaget kan programmering brukes i arbeid der elevene må ta i bruk kunnskap fra flere fagområder samtidig. Det tverrfaglige aspektet ved programmering gir også gode muligheter til å knytte sammen fag på andre måter enn før. Der matematikk gjerne enten har vært utelatt fra samarbeid eller blitt redusert til å «lage søylediagrammet til slutt», kan programmering åpne opp for tverrfaglig samarbeid i langt flere prosjekt.
Undervisning med, gjennom og i programmering Et viktig moment vi ønsker å legge ekstra vekt på i denne boka, er de forskjellige rollene programmering kan ha i matematikk (og andre fag). Er hensikten at elevene skal lære seg de programmeringstekniske målene i lære planen? Da bør de for eksempel jobbe med program som skaper behov for at de lager løkker eller variabler. Dette kan vi kalle undervisning i programmering. Kanskje vil elevene lage en kalkulator som regner ut areal av kjente 13
9788215060019_Gjøvik og Høyland_Kloss for kloss.indd 13
25.04.2022 12:55
Introduksjon
geometriske figurer. Eller skal de øve seg på matematiske begrep som vinkel eller gangetabellen? I så fall kan lærerne enten lage oppgaver der elevene må jobbe frem forståelse for disse begrepene når de programmerer, eller de kan lage program der elevene kan øve seg på disse tingene ved å bruke det ferdige produktet. Dette kan vi kalle henholdsvis undervisning gjennom og med programmering. Som du ser, er det komplisert å ta slike avgjørelser, og det krever at lærere har satt seg godt inn i programmeringsspråkenes muligheter og begrensninger. På samme måte som vi kan ha flere hensikter med å skrive (gjerne kalt skrivehandlinger), kan vi tenke oss flere programmeringshandlinger. Vi foreslår følgende kategorisering av programmeringsaktivitet i skolen som hjelp til å tenke på undervisningsvirksomheten vår (se tabell 1.1). Tabell 1.1. Undervisning i, med og gjennom programmering Undervisning i programmering
Undervisning med programmering
Undervisning gjennom programmering
Hva er det?
– Å lære seg å bruke løkker, variabler, funksjoner osv. – Å lære seg flere programme ringsspråk, med styrker og svakheter.
– Læreren lager et program som øver eleven i multiplikasjons tabellen. – Eleven lager et program som kan brukes til å finne arealer av kjente figurer når man har behov for det i geometrien.
– Å utforske vinkler ved å prøve seg frem i programmeringsspråk. – Å utforske sammenhenger mellom variable størrelser og areal.
Tenk på
Hvordan kan man legge til rette slik at behovet for funksjoner eller variabler oppstår naturlig?
Hva må eleven kunne om disse matematiske ideene i forkant?
Er det læreren eller eleven som bør lage programmet?
Det er her verdt å merke seg at elevene kan ha ulik oppfatning av disse handlingene. Det kan hende at en elev tenker at aktiviteten er å tegne et kvadrat, mens læreren har til hensikt å innføre begrepet løkker. En programmeringshandling for lærere kan altså være annerledes enn programmeringshandlingen for en elev.
Bokas oppbygning Det første kapittelet handler om å lære seg Scratch. Kanskje har du allerede en del kompetanse i Scratch, og da kan du vurdere om du trenger å bruke så mye tid på denne delen. Kapittel 2 handler om aspekter ved det å undervise i Scratch-programmering. Vi har valgt å kalle det å undervise i programmering. I tredje kapittel skal vi gå dypere inn i kompetansemålene slik de står i matematikkplanen, og se hvordan vi kan jobbe med disse målene. Dette har vi valgt å kalle å undervise med og gjennom programmering. K apittel 4 handler om hvordan vi kan bruke Scratch-programmering også i andre fag 14
9788215060019_Gjøvik og Høyland_Kloss for kloss.indd 14
25.04.2022 12:55
Bokas oppbygning
og tema, for eksempel hvordan Scratch kan brukes som presentasjonsverktøy, uavhengig av fag og tematikk. Det femte og siste kapittelet handler om hvordan vi kan programmere en mikrokontroller, i vårt tilfelle en micro:bit. Her skal vi ikke bruke Scratch, men heller det mer egnede MakeCode. Vi har tatt med mange eksempel du kan jobbe med og studere på egen hånd. I Scratch har du mulighet til å lage samlinger av program i gallerier. Programmene og eksemplene det vises til i denne boka, er samlet i dette galleriet: scratch.mit.edu/studios/29047167. De fleste prosjektene vi behandler i boka, kan du også finne med direkte lenke til prosjektet. Lenkene har ganske lik adresse, kun tallene på slutten er ulike. Disse tallene er det viktig å skrive inn helt riktig for å komme til rett prosjekt. Du finner også lenke til prosjektene på bokas hjemmeside www.universitetsforlaget.no/kloss-forkloss, som holdes oppdatert i tilfelle det blir endringer i lenkene i løpet av bokas levetid. Her finner du også oppgaveark som er omtalt i boka. Boka er skrevet for å brukes med versjon 3 av Scratch.
15
9788215060019_Gjøvik og Høyland_Kloss for kloss.indd 15
25.04.2022 12:55
Kapittel 1
Lær deg Scratch
K A PIT TEL 1
Lær deg Scratch I dette kapittelet får du en innføring i programmeringsmiljøet Scratch. Har du lite eller ingen erfaring med Scratch, er det fint å begynne her. Du møter noen grunnleggende program meringsprinsipp og får lære hvordan du lager egne prosjekt i Scratch.
16
9788215060019_Gjøvik og Høyland_Kloss for kloss.indd 16
25.04.2022 12:55
Blokkprogrammering i Scratch
Blokkprogrammering i Scratch Scratch skiller seg fra tekstbasert programmering ved at det er et såkalt blokkprogrammeringsspråk1. Det betyr at i stedet for å skrive inn kommandoer med tastaturet kan du bygge sammen blokker av kommandoer som kjøres etter hverandre, ovenfra og ned. Selv om denne typen programmering heter blokkprogrammering, kan det variere om vi kaller de fargerike brikkene du ser i figur 1.1, for blokker eller klosser. Inne i Scratch blir disse på engelsk kalt block, mens de har navnet klosser på norsk. Vi velger å bruke det norske ordet klosser i denne boka. Klossene vi kan bygge med i Scratch, er fargekodet og formkodet, slik at vi etter hvert blir flinkere til å identifisere rett kloss ut fra farge. De er også gruppert i kategorier etter funksjonalitet. For eksempel er alle klossene som skifter utseendet på en figur, gruppert i en lilla kategori.
Figur 1.1. Skjermdump av Scratch IDE
Det du ser i figur 1.1, er det som kalles Scratch IDE (Integrated Development Enviroment), det vil si programmeringsmiljøet Scratch. Utviklingen av et Scratch-prosjekt skjer inne i dette programmeringsmiljøet. Hele mil1
Vi bruker fet skrift for å utheve viktige begrep, Courier font for å vise til at det skal klikkes, og «anførsels tegn» for det som skal skrives. Klosser blir referert til med ’fet skrift og enkle anførselstegn’.
17
9788215060019_Gjøvik og Høyland_Kloss for kloss.indd 17
25.04.2022 12:55
Kapittel 1
Lær deg Scratch
jøet ligger på internett (scratch.mit.edu), og det er ikke behov for å laste ned noe. Det er imidlertid mulig å laste det ned for offline bruk. I blokkprogrammering er det slik at vi ikke kan sette sammen klosser som ikke hører sammen. Det vil si at vi kan utfolde oss friere uten å tenke på at vi må skrive den nøyaktige syntaksen (rettskrivingen av kommandoene), slik vi må i tekstbaserte programmeringsspråk. Slik er Scratch et godt programmeringsspråk for nybegynnere, og likevel kraftig nok til at du vil lære deg sentrale og viktige programmeringsteknikker, og kanskje også kunne lage noen program som løser problem – både reelle og oppdiktede. Scratch har altså mye av funksjonaliteten til et vanlig tekstbasert programmeringsspråk, men også noen begrensninger. Det er viktig å være klar over at Scratch ikke er laget for å være et kraftig og effektivt programmeringsspråk, men for å introdusere barn og andre for programmering med et brukervennlig og lett brukergrensesnitt der man relativt raskt får til å lage engasjerende programmeringsprosjekt. Teknikkene vi lærer oss gjennom Scratch, er hjørnesteiner i andre programmeringsspråk, som for eksempel C++, C#, Python og JavaScript. Arbeid med Scratch vil dermed kunne forberede elevene på det programmeringsspråket de vil møte i for eksempel videregående skole. I skrivende stund kan det se ut til at de fleste videregående skoler kommer til å bruke Python. Det finnes mange kommandoer vi kan bruke ved hjelp av klossene i Scratch. Vi kan arbeide med blant annet variabler, funksjoner og løkker – som alle er sentrale tema i LK20 og i all programmering. I Scratch kan vi arbeide med matematiske begrep som geometri, aritmetikk, variabler og funksjoner, og med litt oppfinnsomhet kan også statistikk, sannsynlighet og andre faglige tema være aktuelle. I tillegg kan vi koble til forskjellige mikrokontrollere (gjerne kalt duppeditter!), som for eksempel maskiner og roboter fra LEGO Mindstorms og micro:bit, om vi ønsker å programmere med fysiske objekter. Scratch er et av de mest kjente blokkprogrammeringsspråkene, men det finnes også andre. Noen eksempel er Snap (snap.berkeley.edu/snap/snap. html), som ligner på Scratch, Alice (alice.org), som er noe mer avansert enn Scratch, og MakeCode (makecode.microbit.org), som er et eget blokkprogrammeringsspråk for å kontrollere en micro:bit. Snap er nok ikke like bearbeidet og brukervennlig, men skal virke bra på nettbrett. Det er vel uansett slik at det er mindre knoting involvert når man programmerer med en datamaskin enn med et nettbrett. Scratch på mobil blir fort ganske håpløst, selv om de ferdige programmene du lager, faktisk kan virke ganske bra på en mobiltelefonskjerm. Har du et nettbrett, kan du også prøve med Scratch- appen, men vår mening er iallfall at det ikke blir helt det samme. Det finnes imidlertid mer egnede apper for blokkprogrammering også for mobiler og nettbrett. En heter PictoBlox og er basert på Scratch-klosser, en annen mulighet er ScratchJr, en forenklet Scratch-utgave for de minste (scratchjr.org). En versjon laget spesielt for iPad er Pyonkee, som også er basert på Scratch og kompatibel med Scratch-prosjekt (softumeya.com/pyonkee/en/). 18
9788215060019_Gjøvik og Høyland_Kloss for kloss.indd 18
25.04.2022 12:55
Kom i gang med Scratch
I denne boka skal vi holde oss til Scratch slik vi bruker det på datamaskiner, men vi nevner disse variantene med tanke på at det er en god del skoler som bruker nettbrett og kanskje vil utforske mulighetene som finnes der. Som alle web-baserte produkter kan Scratch finne på å endre utseende over årenes løp. Hvis du skal bruke det i undervisning i klassen din, er det derfor viktig å sjekke på forhånd om du kjenner til den gjeldende versjonen av programmet. Det er for eksempel skrevet flere bøker og introduksjoner til Scratch 2, og selv om de sentrale ideene er de samme, er det forskjeller både i oppsettet av miljøet og i hvilke klosser som er tilgjengelige.
Scratch er i seg selv faktisk et program som er laget i et annet programme ringsspråk, kalt Squeak (squeak.org).
Kom i gang med Scratch Gå aller først inn på scratch.mit.edu og registrer deg som bruker, om du ikke allerede har gjort det. Det er ikke nødvendig å installere noe. Som sagt er det imidlertid mulig å laste ned Scratch for bruk offline: Det kan jo være at det finnes situasjoner der du ønsker å ikke være avhengig av å være tilkoblet internett når du skal jobbe med programmering. På startsida finner du mange ressurser og veiledninger, vi skal ikke henge oss opp i det nå. Du kan klikke litt rundt på sida og lese mer om Scratch ved en senere anledning. Når du er klar til å prøve å programmere, trykker du på Programmering eller Create, avhengig av om du har valgt å bruke sida på norsk eller engelsk. Da kommer du inn på programmeringssida som vist i figur 1.2. Vi bruker skjermbilder fra den norske versjonen i denne boka. Du kan se de tilgjengelige klossene i forskjellige farger til venstre (markert med grønn ramme i figur 1.2). Klossene er kommandoer, eller instruksjoner, som forteller hva som skal skje i programmet ditt. Ved å klikke på sirklene helt til venstre (markert med oransje ramme) kan du navigere hurtigere gjennom kategoriene av klosser. Scratch finnes på mange språk, og du kan endre det ved å trykke på globusen øverst til venstre (markert med rød pil). Du kan velge norsk (både bokmål og nynorsk) eller et annet språk. I flerspråklige klasserom kan man eventuelt la elever velge språk eller målform selv. Det kan være lurt å gjøre seg kjent med navnet på klossene på de forskjellige språkene man skal la elevene bruke, for noen av oversettelsene kan være inkonsekvente.
Sjekk om klossene har de navnene du forventet deg, dersom du skal bruke flere språk i undervisningen!
19
9788215060019_Gjøvik og Høyland_Kloss for kloss.indd 19
25.04.2022 12:55
Kapittel 1
Lær deg Scratch
Figur 1.2. Skjermbilde av Scratch IDE – brukergrense snittet.
Program kalles prosjekt i Scratch.
Midt på skjermen (det røde feltet i figur 1.2) har du det store, blanke området der du slipper klossene og pusler dem sammen til et skript. Vi kaller dette skriptområdet, og det er her programmeringen skjer ved at du lager blokker/skript. En figur kan ha én eller flere skript. Det er også mulig å programmere interaksjon mellom flere figurer, som vi skal se senere i boka. I figur 1.2 ser vi bare én figur (Sprite 1), en katt kalt Scratchy, som står på scenen (feltet i den blå rammen) til høyre. Scenen viser resultatet av hele prosjektet ditt når det kjøres. Selv om det du driver med nå, er programmering, og det du lager, er et program, kalles dette et prosjekt i Scratch. Et prosjekt består både av programmet du har laget, og instruksjoner som hører til, kommentarer m.m. En figur kan også kalles sprite (uttalt på engelsk). Det er mange nye begrep som det er viktig å lære seg, og vi har derfor oppsummert dem til slutt i dette delkapittelet.
Bruk punktum som desimalskilletegn!
20
9788215060019_Gjøvik og Høyland_Kloss for kloss.indd 20
25.04.2022 12:55
og samtidig få inspirasjon, tips og eksempler på hvordan programmering kan brukes i matematikkundervisningen.
Programmering har kommet inn i skolen for fullt, og ansvaret er særlig lagt til matematikkfaget. Men hvilken rolle skal programmeringen ha? Skal matematikken brukes til å lære programmering, eller skal programmering brukes til å lære matematikk? Ja, takk, begge deler, sier forfatterne og viser deg hvordan. Først får du en grundig innføring i blokkprogrammering med det populære blokkprogrammeringsverktøyet Scratch. Det kreves ingen forkunnskaper, og allerede etter første kapittel vil du kunne lage enkle programmer til å løse ulike oppgaver. Resten av boka er viet konkrete eksempler og tips til hvordan du lykkes med blokkprogrammering i undervisningen, blant annet ved å tilpasse undervisning, oppgaver og aktiviteter til kompetansemålene i programmering på de ulike trinnene •
undervise matematikkfaglige tema som geometri og algebra med blokkprogrammering som verktøy
•
inkludere blokkprogrammering i undervisning av andre fag
Boka er skrevet for lærerstudenter og matematikklærere i grunnskolen, men alle med interesse for blokkprogrammering i skolen vil finne noe nyttig her.
Kloss for kloss
•
Øistein Gjøvik og Joakim Høyland
Denne boka er til alle matematikklærere som vil lære blokkprogrammering
Øistein Gjøvik og Joakim Høyland
Kloss for kloss
Blokkprogrammering for lærere
Øistein Gjøvik er universitetslektor ved Institutt for lærerutdanning, NTNU. Joakim Høyland jobber dels som universitetslektor ved Institutt for lærerutdanning, NTNU, og som lærer ved Charlottenlund ungdomsskole.
ISBN 978-82-15-06001-9
9788215060019_omslag.indd 1
28.04.2022 09:36