Har tidligere skrevet litt om hvordan en kan komme i gang med programmering i klasserommet i dette blogginnlegget Å komme i gang med koding i klasserommet Denne gangen skal jeg snakke litt om ulike måter å undervise på som jeg har prøvd ut og gjort meg erfaringer med.
Ingen av disse metodene er den endelige løsningen på å undervise i programmering, men det er viktig å variere undervisningen og variere mellom de ulike metodene. Har lagt ved noen eksempler på hvordan jeg har jobbet med noen av metodene. Ønsker du flere, ta kontakt via kontaktskjema.
Pair Programming
Dette er en arbeidsmetode som også brukes i arbeidslivet, der to og to arbeider sammen på en enhet. Den ene styrer mus og tastatur, mens den andre forteller hva som skal kodes og kontrollerer at den andre rett. Underveis i arbeidet bytter elevene arbeidsoppgaver, slik at begge får erfaring med begge rollene.
Fordelen med denne måten å jobbe på er at en styrker samarbeid mellom elevene. En får situerte og gode samtaler mellom elevene, og forskning viser at elevene får økt forståelse og ferdigheter i programmering.
Ulempen kan være elever som ikke bidrar og blir gratispassasjerer.
Denne videoen fra code.org viser hvordan pair-programming med barn kan foregå.
Elementer en skal tenke på i forbindelse med pair programming er f.eks. gruppedynamikk, sosialt samspill, hvilke oppgaver som gis og hvordan de presenteres, språket som brukes mellom elevene og hva en ønsker å lære gjennom øktene.
Live koding
Live-koding kan enkelt forklares som modellering, der læreren koder sammen med elevene. Læreren koder steg for steg, forklarer underveis og elevene kopierer koden. Metoden kan enkelt utvides kognitivt med å spørre elevene underveis hva de tror blir neste steg i koden.
Fordelen med denne metoden er at de aller fleste elevene kommer helskinnet gjennom oppgaven, uten alt for mye en-til-en veiledning.
Ulempen med metoden er at denne måten å jobbe på kan være lite kognitivt utfordrende. Dette gjør at det kan være vanskelig å måle elevenes læring og forståelse for koding gjennom aktivitetene. Derfor blir det viktig at læreren er nøye med hvilke oppgaver og eksempler en bruker når en skal undervise med metoden.
Å kode et eksempel sammen, som elevene senere kan kopiere, modifisere eller utvikle er et godt eksempel på oppgaver som kan fungere.
NB! For elever som er pinlig nøyaktige, kan metoden være veldig tidkrevende.
PRIMM
PRIMM er en engelsk forkortelse for en metode som jeg finner veldig spennende. Den krever en del forberedelse, men elevene syntes det var en annerledes arbeidsmåte. De ulike bokstavene står for forbokstaven i de ulike stegene som metoden består av:
P – Predict
Elevene får presentert en kode, og enten i par eller alene, skal de lese gjennom koden og prøve å forutsi hva koden kommer til å gjøre.
R – Run
Det neste steget er å kjøre koden. Dette kan gjøres på flere måter. Enten kan få elevene tilgang til programmet, eller læreren kjører programmet sammen med elevene.
I – Investigate
Neste steg er å undersøke koden. Finne ut hvilken kode som er brukt, hvordan strukturen er osv. Her er det viktig å lage gode spørsmål til elevene, for å sette fokus på det du som lærer ønsker at de skal lære.
M – Modify
La elevene få modifisere koden til å gjøre endringer på koden. Enten for at den skal gjøre noe annet, for at den skal bli mer effektiv eller rett og slett bedre.
M – Make
Det siste steget handler om å la elevene få bruke det de har lært til å utvikle koden eller bruke den i et annet program.
Har brukt denne metoden noen ganger i forbindelse med programmering i Scratch, og opplevde at elevene syntes metoden var annerledes og artig å jobbe med. Vi brukte den blant annet når vi skulle lage en rentekalkulator.

Steg-for-steg
Steg-for-steg kan enklest beskrives som å lese en oppskrift over hva som skal gjøres og hvordan det skal gjøres, og kopiere dette. Det krever en del lesing fra eleven for å komme i mål, og noe grunnleggende forståelse i det programmet som skal brukes. Men det er enkelt å komme i gang med, og de aller fleste kommer i mål uten større vanskeligheter.
På https://oppgaver.kidsakoder.no finner du mange slike steg-for-steg oppgaver. Disse gir god lesetrening og de fleste elevene kommer som sagt i mål. Noen av oppgavene mangler noe informasjon som gjør at elevene må tenke selv for å komme i mål, i tillegg til at mange av oppgavene også inneholder muligheter for videreutvikling av programmene for de som synes det blir for lett.

Noen vil si at denne typen oppgaver mangler kognitiv utfordring, og at ikke alle elevene lærer så mye av oppgavene. De mangler kanskje rom for kreativitet, men kanskje er det like mye opp til læreren å legge til rette for dette som en del av oppgaven.
Pseudokoding
Pseudokoding er kode skrevet med et dagligdags språk som i all hovedsak forklarer hva som skal skje i programmet. Jeg bruker det ofte som et planleggingsverktøy sammen med elevene, slik at de vet hva som skal skje i programmet vi skal lage. På denne måten kan vi skape struktur og oversikt før vi begynner å programmere. Vi kan finne ut hvilke variabler vi trenger, hvor vi må legge inn en løkke og eventuelle vilkår. Kanskje ser vi allerede her hvilke blokker som trengs.

Noen elever synes det er vanskelig å pseudokode. Derfor gjør jeg det alltid felles sammen med elevene, for å bygge felles forståelse av både programmet og hva vi trenger når skal kode det. Det er utfordrende for dem i begynnelsen, men det er kognitivt utviklende og bygger forståelse.
Feilsøking
Feilsøking er en artig måte å arbeide med koding på. En tar utgangspunkt i fungerende kode, og informerer elevene om hva som er tenkt skal skje. Før elevene får tilgang på programmet eller koden, legger en inn små feil eller mangler. En kan begynne enkelt med å gi elevene et program der gjerne bare koden er satt i feil rekkefølge eller det er en skrivefeil. Senere kan en utelate kode eller bare gi elevene tilgang på koden, uten å sette den i rekkefølge.

La elevene lete gjennom koden og prøve å forutsi hva som kommer til skje. La dem deretter prøve å finne feilene, rette dem og tilslutt se om programmet fungerer som forventet.
Å drive med feilsøking kan være tidkrevende. Det krever grunnleggende ferdigheter i algoritmisk tenkning, og noen elever vil bruke lang tid til å finne feilene. Spesielt sliter en del av dem med å se at rekkefølgen på koden ikke alltid er korrekt. Men det er kognitivt utviklende og lett å vurdere.
Analog koding
Analog koding (unplugged coding) er et uttrykk som brukes om kodeaktiviteter hvor en primært ikke bruker datamaskinen. Det kan brukes for å arbeide med algoritmisk tenkning og de metoder og prinsipper som er en del av koding.
Å arbeide med analog koding kan være veldig verdifullt for å bedre forståelsen av prinsipper og metoder innen koding, da en fysisk tilnærming gir en annen vinkling en om en bare sitter og koder ved en datamaskin. Det å være den eller det som blir kodet, er spennende og annerledes, og ofte opplever jeg at slike aktiviteter skaper en annen stemning i klassen med mye latter og god kommunikasjon mellom elevene. Mange av oppgavene velger jeg å gi til par eller grupper av elever for å også trene elevenes samarbeidsevner.
Til arbeid med analog koding, trenger en ofte artefakter som en sjelden forbinder med koding. I tillegg til blyant og papir, vil typiske analoge oppgaver kreve artefakter som pappkrus, kritt, lego-klosser, post-it lapper og lignende.
Jeg har ofte benyttet denne filmen som et eksempel på analog koding, for å barn og voksne til å forstå viktigheten av rett kode, logiske sekvenser og hvor dum en datamaskin egentlig er. Det er lett å lage lignende oppgaver, som passer til gruppen og situasjonen. F.eks lage eggedosis, klippe en stjerne osv.
Fullfør koden
Dette er en metode hvor du som lærer gir elevene litt av koden, og så er det opp til elevene å fullføre koden. Du kan også gi elevene hele koden, men i bruddstykker, slik at de må pusle den sammen og kanskje også modifisere koden slik at den fungerer slik den skal. Dette kan være en grei metode å bruke om en enkelt kan dele et utgangspunkt for programmet med elevene, som f.eks i MakeCode for Micro:bit og lærerkonto i Scratch.
I dette kodeeksempelet gir jeg elevene noe eksempelkoder de kan ta utgangspunkt i for å lage en arm på et snøfnugg. Elevene kan teste dem ut, sette dem sammen på ulike måter, og gjøre endringer på koden utfra eget ønske.

Fordelen med denne metoden er at elevene har store forutsetninger for å lykkes, og samtidig sette sitt personlige preg på koden.