Didaktisk grunnlag

Silhuett av to hender som holder en puslespillbrikke. Silhuetten er dekket av tall.
Arbeidsmetodikk i og med programmering er nytt for mange matematikklærere. I denne artikkelen beskriver vi noen erfaringer og presenterer noen anbefalinger.

Etter en kursrekke i programmering fikk Matematikksenteret disse to typiske tilbakemeldingene:

  • Flott at det ikke er så voldsomt masse oppdrag i løpet av dagen, men at vi får bruke tid på de få ulike oppgavene vi får.
  • Tips til hvordan vi kan gå fra det analoge til det digitale.

Disse erfaringene fra lærere på kurs er det vel verd å merke seg når elevene skal lære seg programmering. Det tar tid å sette seg inn i måten å tenke på. Algoritmisk tenking har fått en sentral plass i læreplanen for matematikk: I læreplanen er algoritmisk tenkning synliggjort fordi dette er en viktig problemløsningsstrategi. Når elevene bruker programmering til å utforske og løse problemer, kan det være et godt verktøy for å utvikle matematisk forståelse. (UDIR)

Eksempel som viser mulig oppstart for elever og lærere som er ukjente med programmering:

Eksemplet er hentet fra det første av fire seminarer om programmering med en gruppe lærere. Gruppene ble valgt tilfeldig ved loddtrekning med en kortstokk. Deltakere som fikk samme tall på kortet dannet en gruppe.

Analogt arbeid

Gruppene får ark med en figur og skal lage en beskrivelse av hvordan figuren er. Beskrivelsen skal være slik at en som ikke har sett figuren kan tegne den.

Tavle som viser læreres arbeid med å lage en algoritme på whiteboard

Tavle som viser læreres arbeid med å lage en algoritme på whiteboard

Bildene viser to av gruppearbeidene. Beskrivelsen ble laget av gruppen som fikk tegningen. Figurene ble tegnet av en gruppe ut fra beskrivelsen, og begge tegningene samsvarte svært godt med figurene de to gruppene hadde fått utlevert.

Kursholderne ber alle gruppene se på disse to beskrivelsene og finne likheter og forskjeller mellom dem. Det danner utgangspunkt for en samtale om forskjellen på en trinnvis beskrivelse (algoritme) som kan oppfattes av et menneske (for eksempel “se ut som en trapp) og en beskrivelse som liker mer på det et programmeringsspråk kan oppfatte.

Fra det analoge til det det digitale

Læreren gir en svært kort introduksjon til programmeringsspråket Scratch. Deltakerne blir bedt om å studere mulighetene med kodeblokkene i gruppen “Bevegelse” og finne blokker som er egnet til å tegne figurene.

To PC-skjermer hvor lærere arbeider med programmering i Scratch

Programkoden til de som er helt ukjente med programmering (eks. pc-en til venstre) gir mulighet til å introdusere begrepet optimalisering ved å la deltakerne studere kodeblokkene i gruppen “Styring” som blant annet inneholder blokken “Gjenta”.

Ambisiøs Matematikkundervisning

Eksemplet viser hvordan undervisningen kan legges opp slik at den tilfredsstiller flere av de tydelige kjennetegnene som går igjen i en ambisiøs matematikkundervisning:

  1. Elevene arbeider med oppgaver og aktiviteter som fremmer resonnering og problemløsning.
  2. Elevene har mange muligheter til å samarbeide, og deltar i matematiske samtaler.
  3. Elevene utvikler egne løsningsstrategier.
  4. Læreren etablerer et positivt affektivt klassemiljø ved å behandle elevene med respekt, lytte til ideene deres og verdsette deres faglige bidrag.
  5. Læreren fremmer dybdelæring og forståelse i matematikk.
  6. Lærere kommer med konkrete og konstruktive tilbakemeldinger som utfordrer elevene.
  7. Feil anses som en del av læringsprosessen.

Matematikksenteret anbefaler å bruke prinsippene i kombinasjon med PRIMM som er en anbefalt struktur på undervisningsopplegg i programmering.

PRIMM

PRIMM står for Predict-Run-Investigate-Modify-Make. Metoden kan bruke både i analogt arbeid med flytskjema og programmer skrevet i blokk- eller tekstbasert programmeringsspråk. Beskrivelsene under er knyttet til programmeringsspråk. Undervisningsopplegg kan inneholde ett eller flere av de fem trinnene i PRIMM.

Les mer om PRIMM

Predict

Elevene blir presentert for et ferdig eller delvis ferdig program, og de skal tolke programmet og forutsi hva vil det vil gjøre. Dette er en analog aktivitet der elevene diskuterer koden i par eller grupper på tre og skriver hva koden gjør når den blir kjørt. Denne starten på et undervisningsopplegg skiller seg fra beskrivelsen i eksemplet med figurene. Der gikk deltakerne rett på en faglig diskusjon. Selve programmeringen kunne kursdeltakerne gjøre uten nærmere instruksjon fordi kommandoene de skulle bruke i programmeringen er så intuitive at en forklaring er unødvendig. I opplegg som følger trinnene i PRIMM forutsetter man at elevene får et program der de kjenner de fleste kommandoene. Programmet bør bare inneholde ett eller to nye begrep.

Run

Eleven får nå lage og kjøre programmet digitalt. Her spiller læreren en sentral rolle. Elevene må bli utfordret på å sette ord på hvordan koden fungerer og om den passer til det elevene har forutsatt. Læreren leder denne faglige samtalen.

Investigate

Hensikten med den utforskende fasen er å gi elevene mulighet til å utvikle kodeforståelse.

I programmering snakker man om fire nivåer på kodeforståelse:

  • Atomisk: hele eller deler av en kodelinje
  • Blokk: grupper av sammenhengende kodelinjer som er knyttet nær til hverandre
  • Relasjon: kodelinjer som ikke henger sammen, men likevel er relatert til hverandre
  • Makro: oversikt over hele programmer eller større delprogram – avhengig av størrelsen på programmet

Læreren blir anbefalt å bruke fire typer aktiviteter for å gi elevene god anledning til å utvikle denne forståelsen:

  • Spore: elevene ser på variabler i en del av en kode og sporer verdien til variablene gjennom hele programmet. Aktiviteten utfordrer elevene på logisk tenking.
  • Forklare: elevene blir utfordret på å forklare et program på hvert av de fire nivåene i kodeforståelse.
  • Kommentere: Elevene får et program. Til hver linje eller blokk i programmet skriver elevene en kommentar som forteller hva linjen eller blokken gjør.
  • Feilsøking: Elevene får et program som de skal undersøke nøye. Programmet kan inneholde en feil eller unødvendige koder.

Modifisere

Eleven får et program som skal endres slik at det utfører en annen tilsvarende oppgave.

Eksempel:
Programsnutt fra Scratch

Gjør nødvendige endringer i programmet slik at det tegner en likesidet trekant.

Lage

Elevene får et problem de selv skal lage koden til. Programmet skal bruke kjente strukturer og begrep. Slike oppgaver gir elevene anledning til å konsolidere og anvende det de har lært i en kjent setting. Elevene må selv designe en algoritme som løser problemet.

 

Kilder

Digital Scotland. What is PRIMM? Lastet fra https://primmportal.com 19. Mai 2022

Fojcik M. K., og Refvik, K. A. S.; Programmeringsstrategier i matematikk. Presentasjon fra verksted på Novemberkonferansen 2021.

Matematikksenteret: Mestre Ambisiøs Matematikkundervisning. Lastet fra matematikksenteret.no 10. juni 2022.

UDIR. Hva er nytt i matematikk? Lastet fra udir.no 1. juni 2022.