Enkel programmering til mattetimen

Morten Munthe, mattelærer ved Oslo Handelsgymnasium har god erfaring med å starte enkelt. Les rådene og se om du kan bruke oppskriften hans i din egen klasse. 

Målet med å bruke programmering som verktøy i klasserommet må være at det bidrar til faglig forståelse. Spørsmålet er hvordan programmering kan legge til rette for at elevene utforsker og diskuterer i de ulike fagene. 

Dette er utfordrende, men vi skal se på et eksempel på prosessen med å lage et undervisningsopplegg der diskusjon og utforsking er viktige elementer. Eksemplet er tatt fra Matematikk 1T, men ideene bak kan brukes i flere fag. 

Programmering i Matematikk 1T

Et godt programmeringsopplegg starter med en enkel inngang (lav terskel), med mål om at alle elevene får til noe, slik at alle kan føle mestring og forhåpentligvis bli motivert. 

Målet er at alle elever får til noe.

Gjennom utforsking og diskusjon kan vi finne ulike måter å endre og utvide programmet på. Dette kan gjøre på flere måter og nivåer. Et eksempel er gjennom PRIMM-modellen (predict, run, investigate, modify, make) der tanken er at elevene først diskuterer hva som kommer til å skje når de kjører programmet (predict), deretter kjøre programmet (run). Deretter skal de utforske programmet (investigate) ofte gjennom å gjøre mindre endringer (modify). Til slutt kan de gjøre større endringer (modify) og lage ny kode (make) for eksempel gjennom å utvide programmet til å gjøre nye utregninger. Dette legger til rette for tilpasset undervisning.

Utforskende matematikk

I eksempelet er målet å lage et program som finner faktorene til et polynom knyttet til følgende kompetansemål i matematikk 1T:

Mål for opplæringa er at eleven skal kunne forklare polynomdivisjon og bruke det til å omskrive algebraiske uttrykk, drøfte funksjonar og løyse likningar og ulikskapar

1. Forenkle oppdraget

For at programkoden skal være enkel i starten gjør vi noen forenklinger av oppdraget. Vi antar først at alle faktorene til polynomet er heltall. Da kan vi løpe gjennom en valgt mengde heltall og sjekke om de er faktorer til polynomet. Før vi starter med å lage programmet kan spørsmål til klassediskusjonen være: «hvilke tall er det fornuftig å sjekke for, hvilket intervall?», «hvordan kan vi sjekke om et tall er en faktor til polynomet?» og «når vi finner en faktor, hvordan skal programmet gi oss denne informasjonen?»

For at elevene ikke skal sitte fast kan man gi litt hjelp i form av skjelettkode, der elevene skal fylle inn egen kode der det står spørsmålstegn (???). 

Denne koden er kort og ganske enkel. Samtidig åpner koden for diskusjon rundt hvilke forutsetninger man har gjort underveis. 

2. Kan du forbedre koden?

Mulige spørsmål i en videre diskusjonen er: «hva er svakhetene ved koden?», «er det noen polynomer koden ikke fungere for?», og «hvordan kan vi endre koden slik at den fungerer for flere/alle polynomer?». Det kan også være hensiktsmessig å diskutere fordeler med å tegne grafen til polynomet, spesielt for koblingen mellom faktoriseringen og nullpunktene.

Det er viktig å åpne opp for ulike strategier for utforsking som kan fremme matematisk forståelse. 

Hvis vi for eksempel ønsker å gjøre utskriften penere kan koden endres som vist under

3. Utvider koden

Videre kan man utforske alle reelle løsninger. For eksempel, kan egenskapen være at funksjonsverdien ofte skifter fortegn ved nullpunkter? Elevene kan da diskutere hvordan man kan bruke dette til å finne alle reelle nullpunkter til en funksjon. 

Hvordan finne alle reelle løsninger? 

Og ikke minst, er det noen begrensninger? Et eksempel på kode (uten tegning av grafen) er:

4. Diskuter med elevene

En diskusjon i etterkant kan ta opp svakheter med koden, når den ikke fungerer, og hva vi kan gjøre for å forbedre koden. Å diskutere forbedringer i koden betyr ikke alltid at elevene skal gjennomføre kodingen, det er viktigere at de beskriver endringene de ønsker å gjøre. 

Hva gjør vi for eksempel med en polynomfunksjon der nullpunktet tangerer -aksen? Koden for å håndtere dette er mer komplisert, men man kan likevel diskutere hva programmet må lete etter eller sjekke for. 

Diskusjonen kan dermed gå mot andre mulige strategier, for eksempel å lede elevene inn mot at en måte å sjekke for ekstremalpunkter er å se på endring av fortegnet til stigningstallet til tangenten. Her kobles flere konsepter i 1T sammen.

Kanskje flere elever vil se koblingen mellom ulike deler av pensum.

Alle elever skal få til noe i programmering

Det er selvsagt flere strategier man kan bruke, men grunnen til at jeg liker denne oppbygningen av koden og undervisningen er at den starter med en ganske enkel ide og tilsvarende enkel kode før man utvider videre. Dette gjør at koden og undervisningen har lav inngangsterskel, med gode muligheter for å utvide etter ønske og behov.

Referanser

Datasettet og koden som er brukt i dette undervisningsopplegget er delt opp i to deler og fordelt utover skoleåret:

https://www.edudata.no/notebook/polynomial-division-i

https://www.edudata.no/notebook/polynomial-division-ii

Lær deg grunnleggende programmering i matematikk og naturfag for videregående

I Aschehoug univers har du tilgang til grunnleggende kurs i programmering. Kurset passer for både lærere og elever som trenger opplæring i programmering.

For deg som har tilgang til Aschehoug univers. Logg inn med Feide

Digitale ressurser i Matematikk 1T

Se terminprøver, fullstendige løsninger til alle oppgaver, kapittelprøver, interaktive oppgaver, alternative undervisningsmetoder, verktøyopplæring og mye mer som letter planleggingen og gjennomføringen av undervisningen i Matematikk 1T. 

For deg som ikke har tilgang til Aschehoug univers.

Bestill prøvelisens

Hvordan bruke programmering i undervisningen i naturfag?

Se oppskrift på hvordan arbeide med programmering i naturfag i videregående. Simuler og utforsk virtuelle eksperimenter med klassen på 1-2-3.

Elever lærer programmering med sjakk

Bruk sjakk som et eksempel for å få elever til å tenke kreativt og arbeide med utforskning og problemløsning i informasjonsteknologi på videregående.

Terminprøver klare til bruk

Terminprøvene er tilgjengelig for matematikk, fysikk, kjemi, norsk, tysk og engelsk. Det følger også med en fasit som viser utregninger og hvordan besvare spørsmålene på prøvene.

Undervisningstips for å engasjere elevene

Last ned ferdig tilpassede figurer og maler og få tips til aktiviserende og utforskende læring med Aktivt klasserom.