Gregor Mendel hadde mange hatter: lærer, botaniker, munk og genetikkens far. Men datamaskin hadde han ikke. Vi kan jo lure på om han hadde syntes at det var noe særlig artig med vår tids digitale hverdag.  Kanskje hadde han blitt litt imponert over mulighetene vi i dag har til å bruke datamaskiner til å simulere, utforske og gjøre virtuelle eksperimenter?

En ting er sikkert: Mendel hadde både tid og mulighet til å undre seg. Dette er sentralt i all naturfagundervisning og bør være grunnlaget for hvordan vi bruker datamaskiner i naturfagene.  For å få til dette er det viktig å bruke verktøyene vi har på en måte som underbygger formålene med hvorfor vi bruker dem.

Programmering er et verktøy som kan stimulere til samarbeid, utforsking, kreativitet og dybdelæring.

Men det forutsetter at vi bruker det riktig. Mange elever syns det er vanskelig å komme i gang, og mange syns det er krevende med syntaks og alle detaljene som skal på plass for å få et program til å kjøre.  Hvis vi introduserer for mange konsepter på en gang,  blir arbeidsminnet til elevene fort overbelastet, og alt blir en håpløs suppe av naturfag, programkode og frustrasjon. Det finnes heldigvis metoder for å minimere risikoen for at dette skjer. En slik metode heter PRIMM.

Mann med briller

Hvordan burde vi undervise i programmering?

PRIMM står for Predict, Run, Investigate, Modify og Make, og er en anerkjent måte å undervise programmering på. Metoden tar hensyn til arbeidsminnet og forkunnskapene til elevene, i tillegg til at det lettere lar oss fokusere på målet med aktiviteten, ikke bare programmeringen i seg selv. La oss gå igjennom hva som ligger i metoden med et konkret eksempel om klassisk genetikk, mendelsk arv, fra naturfag på Vg1. 

PRIMM

Første fase i PRIMM er predict. Elevene får her en programsnutt som de skal tolke og forklare, gjerne til hverandre og med penn og papir. De skal ikke kjøre programmet. Dette lar dem aktivere relevante forkunnskaper uten at den kognitive lasten ved å programmere noe fra bunnen av, blir for stor. Dessuten benytter vi programmering som representasjonsform for et naturvitenskapelig fenomen, noe som lar elevene se på det naturfaglige problemet fra en annen vinkel. 

Her er et eksempel:
1) Forklar hva programmet nedenfor gjør uten å kjøre programmet. Hvilke forutsetninger og forenklinger legger vi til grunn for denne simuleringen?

programmeringskode

Allel er alternativ utgave av ett og samme gen. Nye alleler oppstår ved mutasjoner.
Genotype er den informasjonen som ligger i arvematerialet (DNA) til et individ eller en celle
Fenotype er det man faktisk kan observere av egenskaper hos det enkelte individ.

Programmet trekker et tilfeldig allel fra både mor og far, og kombinerer disse til barnets genotype. Dersom genotypen blir bb, får avkommet fenotypen blå øyne. Foreldrene får til sammen fire barn, og dette blir benyttet til å regne ut sannsynligheten for å få blå øyne gitt de gitte genotypene og basert på en enkel modell der øyenfarge bestemmes av kun ett gen. Både forenklingene og antall avkom er begrensninger med modellen. Disse kan danne grunnlag for diskusjon når elevene kjører programmet i trinn 2 (run):

2) Kjør programmet 3–4 ganger. Hva gjør programmet? Stemmer dette med det du trodde? Hvorfor varierer resultatene fra programmet mellom hver kjøring?

Allerede her vil noen elever begynne å eksperimentere med ulike variabler og se hva som skjer, og dette er kjernen i trinn 3 (investigate): 

3) Endre systematisk på N og kjør programmet etter hver endring. Hva forteller resultatene av kjøringene deg? Endre nå systematisk på genotypene til mor og far, og undersøk hva som skjer. Skriv ned det du finner ut og prøv å validere resultatene fra simuleringene ved å lage krysningsskjemaer for nedarvingen.

Oppskriften vi har sett på til nå, følger naturvitenskapelig metode. Først må elevene formulere en hypotese om hva vi får ut av programmet, som vi deretter sjekker og validerer mot gjentatte kjøringer. Resultatene blir så drøftet, før elevene varierer variabler systematisk for å undersøke hypotesene sine nærmere. 

I denne prosessen er det viktig at vi hele tiden stiller viktige konseptuelle spørsmål som ikke dreier seg om programkode, men om naturfag.

For noen vil trinn 1–3 være mer enn nok, men vi bør også utfordre elevene videre. Trinn 4 (modify) lar elevene være litt mer kreative og selvstendige:

4) Modifiser programmet slik at det lagrer den relative frekvensen av blåøyde barn og antall barn i hver sin liste hver gang løkka kjører. Plott den relative frekvensen av blåøyde barn mot antallet barn. 

  • Hva beskriver plottet? 
  • Bruk simuleringen til å diskutere følgende samtale mellom to foreldre med genotype Bb: «Vi har jo fått fire barn – hvorfor har ingen av dem blå øyne? Det er veldig usannsynlig».


Trinn 4 stiller mer krav til selvstendig problemløsning og programmeringsferdigheter enn de foregående trinnene, og derfor må disse spørsmålene og oppgavene bli tilpasset  elevenes faglige nivå i enda større grad enn for de første trinnene. Dersom elevene er klare for ekstra utfordringer, kan de også gå videre til trinn 5, make. Her ber vi dem om å lage et program som gjør noe tilsvarende det de allerede har sett på:


5) Lag et program som simulerer nedarving av en annen, valgfri egenskap.

Vi kan oppfordre de som føler seg trygge på programmering til å lage programmet helt fra bunnen av, mens andre kan bruke programmet de har utforsket i de foregående trinnene som utgangspunkt. Her er det mange muligheter for differensiering, og vi kan gi elevene ulike problemstillinger som de kan leke seg med. For eksempel er recessiv nedarving av sykdommer et enkelt eksempel som likner det første programmet de har sett på, mens egenskaper som avhenger av flere gener, kan være en god oppgave for dem som ønsker å bli utfordret. 

Det som er fint med programmering,
er at alt er mulig!

Så kan vi heller diskutere sammen med elevene i etterkant om det faktisk er realistisk.

La elevene utforske og eksperimentere

PRIMM og tilsvarende måter å utforme aktiviteter på i undervisning med programmering, kan gi elever muligheter til å undre seg over interessante naturfaglige problemstillinger uten å drukne i syntaktisk suppe. Det er slik vi bør bruke programmering i naturfagundervisningen – som en måte å utforske og eksperimentere på, i ekte mendelsk ånd.

Gregor Johan Mendel (1822–1884)
Mendel er grunnleggeren av moderne genetikk. Mendel eksperimenterte med ulike varianter av erteblomster og gjorde krysningsforsøk for å se hvordan planter arver ulike egenskaper.