Programmering | www.statped.no

Hva er programmering?

Begrepsavklaring

Begrepene koding og programmering brukes om hverandre i skolen. Det har derfor oppstått forvirring og uenighet om begrepene. En forklaring på ulik begrepsbruk er at det engelske ordet «coding» direkte oversatt til norsk blir «koding». Programmering "rommer mer" enn koding og i LK20 brukes derfor programmering.  

Denne temasiden handler om å utforske, skape og bruke programmering som en problemløsningsmetode for alle elevene i en klasse. Derfor bruker vi, i likhet med UDIR, programmering som begrep. 

Når du skal i gang med å programmere sammen med elevene, kan det være lurt å ha det klart for seg hva som skiller de to begrepene. På denne siden finner du derfor en kort begrepsavklaring og en ordliste med flere sentrale programmeringsbegreper. 

Programmering 

Programmering handler om å bryte komplekse problemer ned til mindre problemer og deretter gi en fullstendig og nøyaktig beskrivelse av fremgangsmåten for løsningen av problemet. Definisjonen er lett overførbar til situasjoner i dagliglivet. Vi møter ofte komplekse problemer, og vi løser dem ved å bryte dem ned i mindre og mer håndterlige deler. Finner vi ikke løsningen ved første forsøk, prøver vi en gang til. 

Koding

Koding er instruksjonene du legger inn, som enten tekst eller blokk, for å utføre en handling på datamaskinen. Å legge inn selve koden og utvikle programmer, er en del av prosessen med å programmere. Koding handler derimot ikke om å planlegge, feilsøke, rette opp feil og samarbeide slik som begrepet programmering rommer. Du kan derfor ikke bruke koding som et synonym til programmering.   

Ordliste   

Programmeringsspråk

Programmeringsspråk er en betegnelse for et kunstig språk som benyttes for å styre og kontrollere en datamaskin. Selve språket har, akkurat som andre språk, et eget utvalg av ord og regler for "grammatikken" (syntaks). Datamaskinen er ikke i stand til å tolke innholdet slik vi mennesker kan. Programmeringsspråket må derfor være helt presist for at datamaskmaskinen skal forstå hvilke handlinger den skal utføre.

Abstraksjon

Når man abstraherer noe skjuler man detaljer som er unødvendige for den oppgaven som skal løses. Et annet ord for dette er å forenkle. Et t-bane-kart er for eksempel en abstraksjon av den virkelige og kompliserte verden. En kalender er en abstraksjon av din tid.  

Algoritme

En algoritme er en oppskrift av bestemte instruksjoner som beskriver steg for steg hvordan man kommer frem til løsningen av et problem, eller for å gjennomføre en oppgave. Trinnene i en strikkeoppskrift er en algoritme. I programmering brukes algoritmer til å beskrive løsninger til vanlige oppgaver. Søkemotoren Google bruker søkealgoritmer for å sortere resultatene.   

Algoritmisk tenkning

Algoritmisk tenkning er en problemløsningsmetode. Den innebærer at du tilnærmer deg problemer på en systematisk måte, både når du formulerer hva du ønsker å løse og når du foreslår mulige løsninger. Datamaskiner kan ikke tenke algoritmisk, det er det bare mennesker som kan. 

Feilsøking (Debugging)

Når man oppdager en feil og retter opp feil (bugs) i programmet/koden, kalles det feilsøking. Du som programmerer møter i hovedsakelig på to typer bugs. Den første er syntaksfeil. En slik bug oppstår når du som programmerer staver feil eller glemmer et semikolon. Den andre type bug er logisk feil, der koden ikke gjør som den skal.  

Løkker

 Løkker, eller looper, er kodelinjer som repeteres om og om igjen. Når vi programmerer, så ønsker vi ofte å gjenta identiske instruksjoner i programmet vårt, uten å måtte skrive koden om igjen. Da bruker man løkker. Du kan spesifisere hvor mange ganger du vil løkken skal gjenta seg. Eller kanskje du ønsker en løkke som går i all evighet? Slike løkker kalles «infinite loops».  

Funksjoner

 En funksjon er et sett av instruksjoner som til sammen utfører en oppgave. Noen programmeringsspråk kaller det i stedet en metode. Det er lurt å lage en funksjon om du skal gjenta oppgaven flere ganger underveis i programmet.   

Sekvens

En sekvens er en serie beskrivelser som følger hverandre i riktig rekkefølge. I en sekvens må man følge hvert skritt i riktig rekkefølge. 
 

Programmeringsverktøy

Det finnes mange ulike typer utstyr som egner seg for programmering i barnehage og skole. Når du skal velge utstyr bør du tenke på hva som passer til elevenes alder, oppgavene og faget det skal brukes til. Se også etter hvilken type programmeringsspråk og alternative betjeningsløsninger utstyret er kompatibelt med.  
 
I mange tilfeller må vi bruke det utstyret barnehagen, skolen eller kommunen allerede har kjøpt inn. Heldigvis er mesteparten av utstyret fleksibelt og kan anvendes på mange forskjellige måter, med ulik vanskelighetsgrad og med ulike programmeringsspråk. Programmeringsutstyret vi anvender i barnehage og skole kan vi dele inn i tre grupper: 

  • programmeringsroboter 
  • microkontroller 
  • programmering på skjerm 

Programmeringsroboter  

Programmeringsroboter er programmerbare enheter som elevene kan gi instruksjoner i form av koder eller algoritmer. Koden resulterer i handling hos roboten. Programmeringsroboter kan være alt fra enkelt utstyr for de minste, som for eksempel Bee-Bot, til mer avansert programmering med Lego Mindstorms. Robotene programmeres ofte fra programmer på pc eller apper i nettbrett, eller direkte på roboten. 

Microkontroller 

En Microkontroll er en liten krets, eller brikke, som kan programmeres og kobles sammen med fysiske objekter. Den Microkontrollen vi oftest ser i klasserommet er Microbit. Microbit kan programmeres med både skrift og blokk, og kan anvendes i programmering fra nybegynnernivå til avansert programmering. Med brikken, og litt tilleggsutstyr som ledninger, er det nesten bare fantasien som setter grenser for hva elevene kan sette i bevegelse.   

Programmering på skjerm 

Programmeringsverktøy kan også være apper og programmer på nettbrett og pc. Programmeringen blir da heldigital på skjerm uten fysiske programmeringsenheter. Ozmo, Scratch og Kodebyggeren i Minecraft er eksempler på dette. Fordelen med digitale programmeringsprogram er at programmeringen er lett tilgjengelig på enheter vi finner i skolen, uten behov for ekstra utstyr. Programmering på skjerm kan være helt enkel blokkprogrammering med spillpreg for de minste, som Scratch og Ozmo, men det kan også være avansert programmering, som programmering av spill, webdesign og programvare med for eksempel Python.  

Søk om midler til programmeringsutstyr 

Skoleeiere kan søke om midler til utstyr for programmering til bruk i klasserommet.

Her kan du lese mer om tilskuddsordningen(udir.no)

Søk om midler til utstyr for programmering i skolen (udir.no)
 

Programmeringsspråk

Programmeringsspråk er på mange måter et kunstig språk du benytter for å styre og kontrollere en datamaskin. Det finnes ulike språk du kan programmere på, og du kan programmere både ved hjelp av blokker og tekst.

Blokkprogrammering  

Blokkprogrammering er slik navnet tilsier, du programmerer ved hjelp av blokker. For å utføre en bestemt handling drar du inn passende blokker. Dette er mindre komplisert enn tekstprogrammering der du må skrive en kode med tegn for å utføre handlinger.  
 
Programmering er nevnt i læreplanene fra 5. klasse, men helt fra 1. klasse er det tenkt at elevene skal trene på å bli algoritmiske tenkere. Blokkprogrammering gir mye visuell støtte, og blokkprogrammering vil ofte være det som er mest aktuelt å benytte seg av for å øve på algoritmisk tenkning på barneskolen. Det er likevel viktig å være klar over at blokkprogrammering ikke alltid fungerer for alle elevene i en klasse. Elever med behov for skjermleser vil møte på utfordringer i mange programmer med blokkprogrammering.  

Les mer om tilgjengelighet for elever med nedsatt syn.
  
Det aller mest utbredte blokkprogrammerinsverktøyet heter Scratch. Det er Massachusetts Institute of Technology (MIT) som har utviklet det med hensikt om å introdusere programmering for nybegynnere. Tanken bak det blokkbaserte programmet er at du skal kunne ta et steg inn i programmeringsverdenen uten å måtte forholde deg til tung og komplisert programmering i tekst. Derfor er kanskje Scratch, og andre blokkprogrammeringsprogrammer, det mest vanlige å programmere i når programmeringskonseptene står i fokus fremfor syntaks og detaljer.

Blokkprogrammering egner seg derfor også på ungdomskolen for å jobbe med flere mål i LK20. Programmeringsspråket Scratch er oversatt til en rekke språk, også norsk. Dette er tilfelle for mange blokkbaserte programmeringsverktøy, noe som kan være en fordel for mange elever. Det er også enkelt å lage animasjoner av dyr og mennesker, lyder og bilder. Dette kan virke motiverende for mange når de skal programmere.  

Tekstprogrammering  

Med tekstprogrammering menes språk der du skriver koden ved hjelp av tekst. Tekstprogrammering er generelt sett vanskeligere enn blokkprogrammering og benyttes gjerne for de eldste elevene.  
 
Det finnes flere typer språk du kan tekstprogrammere i. Java, C, C++ og Python og Lua er noen. De ulike programmeringsspråkene har ulike styrker og bruksområder. Språket JavaScript er for eksempel å foretrekke når du skal lage ting på web, mens Lua er et språk som er mye brukt i spillutvikling. Mange lærere velger Python når de skal programmere med elevene.   
 
Python er egnet både for nybegynnere og for den mer erfarne programmerer. Noen av grunnene til at Python blir valgt er at:  

  • Det er et av de enkleste og lettleste språkene innenfor teksttbaserte programmeringsspråk   
  • Du finner biblioteker med ferdige funksjoner som gjør at programmeringen går noe fortere. Her finner du ulike funksjoner slik at du ikke trenger  å lage all kode selv.  
  • Pyhton er et verktøy du kan få direkte nytte av i arbeidslivet  

 
Det er tre klare fordeler med å programmere med tekst. Det er generelt anvendelig, jobbrelevant og det er tilgjengelig for svaksynte og blinde. Utfordringene med tekstprogrammering er at det tar lang tid å programmere, selv små algoritmer, og det er veldig lett å gjøre feil. Det kan også være vanskelig å holde oversikt i koden, noe som vil oppleves krevende for mange elever. Du som pedagog kan likevel gjøre noen grep for å legge til rette for motivasjon og mestring. Det å finne et prosjekt i et fag eller tverrfaglig som viser en nyttig bruk av teknologien, vil kunne motivere flere.   

Ja, takk begge deler  

Mange verktøy og programmer har mulighet for både blokk og tekst. Det legger til rette for individuelle tilpasninger. Alle elevene kan jobbe med samme oppgave, få samme resultat, men veien dit blir noe ulik.   

Micro:Bit

I Micro:Bit er det laget oppgaver for de som vil prøve seg i Javascript. En start kan være å gjøre om koden du har laget i blokk til JavaScript. Det gjør du ved å trykke på JavaScript i menylinjen. Elevene kan se om de klarer å kjenne igjen koden sin. Noen vil bli motivert av å prøve seg mer med tekst, andre vil ha mer utbytte av å fortsette med blokk.

Swift Playground 

Andre programmer du kan både tekstprogrammere og blokkprogrammere i er Swift Playground. I programmet kan du følge leksjonene for å lære tekstkode.  I leksjonen «Grunnleggende om Swift» skal du overvinne nivåer, gåter og kodingskonsepter. Når du beveger deg videre, kommer mer avanserte konsepter inn. Du vil kontinuerlig bygge videre på det du har lært, og lage enda mer komplekse koder.  
 
 
   
  
  

Analog programmering

Å programmere uten datamaskin kan være med på å lære elevene sammenhenger innen programmering.  Det kan også være en god aktivitet å starte med for å jobbe med ulike begreper og kommandoer.  

Når du programmerer en kode, med blokk eller tekst, forteller du et digitalt program hva det skal gjøre slik at noe skal skje. Den digitale enheten gjør akkurat det den får beskjed om, ikke mer, ikke mindre. Det er derfor viktig å være nøyaktig når du gir instruksjoner. I den forbindelse kan det være nyttig å jobbe analogt med forståelsen av årsak, virkning, begreper og kommandoer før en starter den digitale programmeringen. Visualisering av fagstoffet ved å bruke konkreter og bilder er også viktig for mange elever når de skal introduseres for noe helt nytt.  

Det kan være utfordrende å jobbe med mange nye begreper. Tenk derfor gjennom om det er noen tilrettelegginger du bør tenke ekstra på. For mange elever vil det være nyttig om oppgaven er tilgjengelig for dem i forkant av undervisningen. Informasjon som bør deles i forkant kan være:

  • programmeringsoppgaven
  • konkreter som skal benyttes
  • gruppen eleven skal være sammen med
  • rom som skal benyttes 

En analog programmeringsaktivitet kan genere mye støy. De fleste elever tåler arbeidstøy helt fin, men for noen vil det være nyttig å tilrettelegge for: 

  • Minst mulig bakgrunnsstøy 
  • Gode lys- og lytteforhold   
  • God overgang fra felles introduksjon til grupparbeid
  • Mindre grupper som består av elever som fungerer godt sammen 

 
På denne temasiden er det prosessen, den algoritmiske tenkeren, kommunikasjon og samarbeid som står mest i fokus. Programmering er en utmerket aktivitet å bruke for å jobbe med mye av dette. Men det å kode i et digitalt program er selvsagt også en stor del av programmeringen og da er forståelsen for sammenhenger, begreper og kommandoer viktig.  

Eksempel på analog programmeringsoppgave 

Trenger du tips til hvordan du kan programmere analogt? I lenken under finner du et konkret forslag. Bruk hele eller deler av opplegget og la elevene få jobbe med begreper og algoritmer. Det vil legge et godt grunnlag å for videre programmeringsarbeid.  

Eksempel analog programmeringsoppgave.pdf

Andre eksempler finner du på: 
CS Unplugged 
Robotvenner fra kodeklubben 

Algoritme og algoritmisk tenkning

I programmering møter du kanskje flere ukjente begreper. De kan virke uhåndterlige når du møter dem for første gang, men har viktige funksjoner når du programmerer.    
 
Et av disse programmeringsbegrepene er «algoritme». En algoritme er helt enkelt forklart, en oppskrift. Det er en steg-for-steg-plan for å få noe gjort. Hvis algoritmen skal utføres av en datamaskin vil den at du skal skrive stegene med kommandoer som datamaskinen forstår. Dette kaller vi et programmeringsspråk. Når du er i utlandet og snakker engelsk kan det hende at du ikke er helt nøyaktige med grammatikk eller ordvalg, men likevel forstår andre hva du mener. Slik er det ikke for en datamaskin. Den må få beskrevet alle stegene i riktig rekkefølge. Oppskriften, eller algoritmen, må være helt nøyaktig.    

Men det er ikke bare datamaskiner som utfører algoritmer. Vi mennesker utfører ulike algoritmer hver dag. Det å følge stegene i en strikkeoppskrift er et eksempel på en algoritmisk handling som mennesker utfører. Oppskriften, algoritmen, må være riktig for at genseren skal bli slik du har tenkt. Det samme gjelder baking. Det får konsekvenser for bakeresultatet om du ikke følger oppskriften. Opplever du feil i oppskriften må du som strikker, eller baker, gå tilbake i oppskriften å feilsøke. 
  
I prosessen med å bake boller, eller strikke en genser, oppdager du gjerne feil og retter dem opp. Du må løse mindre steg for å komme videre, og fortsette og holde ut til du har ønsket resultat. Derfor er du på mange måter en algoritmisk tenker. For å utvikle algoritmisk tankegang trenger du dermed ikke å programmere, men programmeringen kan fungere som en plattform til å utvikle algoritmisk tankegang (Sanne et al., 2016; Wing, 2006).   
 
I skolesammenheng egner programmering seg godt som en metode for å utvikle algoritmisk tankegang, men elevene skal også jobbe med problemløsningsmetoden når de løser oppgaver i for eksempel matematikk.  

Kompetansemålene i matematikk er bygget opp rundt fagets seks kjerneelementer, der utforsking og problemløsning er sentralt. Algoritmisk tenkning er her tydeliggjort som en av problemløsningsmetodene som er gunstige å bruke. Det er fagene naturfag og matematikk som har et særlig ansvar for å jobbe med begreper innen programmering, men programmering skal også brukes i andre fag.  
 
Kjerneelementet problemløsing i læreplanen for matematikk beskriver at problemløsing handler om at elevene utvikler en løsningsmetode på et problem de ikke kjenner fra før (Udir, 2020). Algoritmisk tenkning er her viktig i prosessen med å utvikle strategier og framgangsmåter for å løse problemer.  

Algoritmisk tenkning som problemløsningsmetode 

Nøkkelbegrepene og arbeidsmåtene som inngår i algoritmisk tenkning kan være fine å se på når du jobber med problemløsende oppgaver i klasserommet. Dette er også betydningsfulle punkter når du programmerer. Derfor bruker vi gjerne programmering som en plattform til å utvikle algoritmisk tankegang.  

Nøkkelbegrepene 

  • Logikk - analysere og forutse
  • Algoritmer - Regler og steg-for-steg
  • Dekomposisjon - Bryte ned mindre deler
  • Mønstre - finne og bruke likheter
  • Abstraksjon -Fjerne unødvendige detaljer
  • Evaluering - Gjøre vuderinger 

Arbeidsmåtene 

  • Fikle - Utforske og eksperimentere
  • Skape - Designe og lage
  • Feilsøke - Oppdage og rette feil
  • Holde ut - Fortsette og prøve igjen
  • Samarbeide - dele og jobbe sammen
Modell av algoritmisk tenkning

Les mer:

Teknologi og programmering for alle: En faggjennomgang med forslag til endringer i grunnopplæringen, 2016 (pdf)

Algoritmisk tenkning (udir.no)

 

Programmering i skolen

Programmering har fått plass i LK20, og det er ikke bare fordi elevene skal lære seg «kodespråk» og kunne styre maskiner. Overføringsverdien av å ha programmering i læreplanen vil blant annet være at elevene blir problemløsere med evnen til å stå i et problem over tid. Programmering kan også gi rom for kreative måter å løse problemer på og kan stimulere til skaperglede, nysgjerrighet, selvtillit og vilje til å prøve ut ideer og løse oppgaver.  
 
Med riktig tilrettelegging kan programmeringen fungere på alle nivåer og tilpasses ulike behov. Siden samarbeid er en viktig del av det å programmere, vil det også være naturlig å knytte sosiale mål til programmeirngsaktivteten. Programmering kan derfor gi skaperglede til alle og fungere som en inkluderende læringsaktivitet. Les mer om programmering som inkluderende læringsaktivitet her.

Kompetansemål i LK20 

Programmeringsmålene på de første trinnene har fokus på at elevene skal kunne lage og følge regler og trinnvise instruksjoner i lek og spill. Videre skal elevene kunne lage og programmere algoritmer ved bruk av variabler, vilkår og løkker.  
 
På ungdomstrinnet skal elevene  utforske hvordan algoritmer kan lages, testes og forbedres, og de skal bruke programmering til å utforske matematiske egenskaper og sammenhenger. I matematikk er for eksempel digitale verktøy viktige for å gjøre abstrakte matematiske konsepter mer håndgripelig for elever. Bruk av for eksempel programmering kan gi en dypere innsikt i enkelte matematiske områder.  
 
I tillegg til de fagspesifikke mål vil elevene jobbe med problemløsning og flere av målene i den overordnede delen av læreplanverket. I overordnet del av læreplanverket understreke står det at: 
 
"Skolen skal respektere og dyrke fram forskjellige måter å utforske og skape på. Elevene skal lære og utvikle seg gjennom sansning og tenkning, estetiske uttrykksformer og praktiske aktiviteter." (Kunnskapsdepartementet, 2020). 

Programmering som problemløsningsmetode 

Problemløsning står sentralt i Lk 20 og er en stor del av det å programmere. I Lk 20 er det derfor et mål om å utvikle algoritmisk tankegang hos elevene. Dette er en problemløsningsmetode som kan brukes i flere sammenhenger i skolen, men som er spesielt godt egnet når du programmerer. Derfor brukes gjerne programmering som en plattform til å utvikle algoritmisk tankegang. Les mer om algoritmisk tenkning her.

Tips for å sette i gang med programmering

  • Lær sammen med dine kolleger. Programmering skal være en samarbeidsaktivitet.   
  • Enda viktigere: Lær dette sammen med elevene. Våg å vise at du ikke er redd for å prøve noe nytt. Husk at her er det veien som er målet.  
  • Tenk nytt rundt din egen rolle som lærer, og bruk elever som allerede kan programmering som ressurs i undervisningen. Disse elevene kan bidra positivt til medelevers motivasjon og mestring.  
  • Integrer programmering i tverrfaglige læringsopplegg.  

Programmering for alle  

Når programmering står på timeplanen må alle elever få delta på sine premisser. På Frydenhaug skole- og ressurssenter i Drammen handler ikke programmeringen om avansert programmering og dataforståelse, men om samarbeid, lek og problemløsning. Se videoen under der de forteller om hvordan programmering brukes for å skape arenaer for samarbeid.

Programmering i barnehagen

Programmering inviterer til samarbeid og problemløsning og kan være en engasjerende måte å bruke digitale verktøy på i barnehagen. 
 
I rammeplanens kapittel om digital praksis blir det pekt på at digitale verktøy er en naturlig del av et rikt og allsidig læringsmiljø i barnehagen. Når barna programmerer må de forklare og argumentere, utforske ulike fremgangsmåter, stå i et problem over tid, være kreativt, skape, og forbedre. Programmering vil derfor hjelpe barna å utvikle ferdigheter som er gunstige i mange sammenhenger. På lang sikt vil barna trenge å forstå hvordan digitale verktøy fungerer for å kunne være demokratiske deltakere i et høyteknologisk samfunn. Det finnes derfor mange gode grunner for å drive med programmering, selv for de minste.  

Sosiale ferdigheter og eksekutive funksjoner 

Når barn strever med å tilegne seg sosiale ferdigheter, må de voksne hjelpe til. Da er det viktig å finne aktiviteter som støtter barnet og som gir redskaper til å mestre de ulike sosiale arenaene på en god måte.  
 
En persons evne til problemløsning, planlegging, oppgaveløsning og regulering av adferd, betegnes som eksekutive funksjoner. Mange barn med for eksempel nevroutviklingsforstyrrelser vil ofte ha utfordringer med dette. Når du programmerer er særlig problemløsning og planlegging ferdigheter du må benytte. Programmering vil derfor kunne være en god aktivitet å bruke for å styrke barnets eksekutive funksjoner. Vi vet at eksekutive funksjoner påvirker skoleferdigheter, så det å starte med aktiviteter, som programmering, der barnet på en naturlig måte får øvd på disse ferdighetene er viktig.  
 
Samarbeid innebærer å dele, hjelpe hverandre og å være gjensidig avhengig av hverandre. En annen viktig side med samarbeid er å følge regler og beskjeder. Dette er en viktige punkter når du programmerer, og programmering kan derfor brukes som en motiverende inngang til å jobbe med samarbeid, turtaking og kommunikasjon.

Det er viktig å påpeke at sosiale kompetanse utvikler seg over tid. Programmering vil ikke alene løse utfordringer i samspill med andre.  

Definisjon på eksekutive funksjoner

Eksekutive funksjoner er en paraplybetegnelse som omfatter flere ulike sammensatte funksjoner som trengs for vurdering og utføring av handlinger. Disse funksjonene fungerer som dirigenten eller kapteinen for våre kognitive ferdigheter – de styrer vår kompetanseutvikling, både tilegnelse av generell kunnskap og utvikling av sosiale og emosjonelle ferdigheter. 

Interesse og motivasjon  

Det er viktig å ta utgangspunkt i barnets interesseområder i arbeid med sosial kompetanse. Hvis barnet synes det er gøy og motiverende med programmeringsroboter vil det være en god mulighet til  å øve på sosiale ferdigheter. Det å følge regler, vise hensyn til andre og vente på tur er en naturlig del av det å programmere og vil derfor kunne brukes som en aktivitet for å styrke disse ferdighetene. Det er viktig å huske på at barn med autismespekterforstyrrelser kan ha utfordringer med å lære gjennom å prøve å feile. Her må det legges stor vekt på mestring.  

Programmeringsroboter  

Programmeringsroboter egner seg for introduksjon og begynneropplæring i programmering. Robotene er taktile og barna får umiddelbar respons. Programmeringsroboten Bee-bot har knapper på ryggen som du må trykke på for å programmere den, og du trenger ingen tilleggsutstyr, programmer eller apper. Vanskelighetsgraden på programmeringen kan tilpasses barnas forutsetninger og behov.  

Hverdagsbyen

Hverdagsbyen er et eksempel på hvordan barn i barnehagen på en praktisk og digital måte kan lære om programmering.

Les mer

Bee-Bot i barnehagen

Erfaringer med programmering av Bee-Bot i barnehagen.

Les mer om programmeringsroboten Bee-bot. 

Forskning

Forskning på bruk av robot for barn med ulike lærevansker viser at fysisk tilgang til læremiddelet (roboten) påvirker barnets følelse av eierskap og kontakt med roboten. Disse to faktorene var vesentlige i mestringen av ulike læringsmål, som for eksempel å jobbe med en oppgave over lengre tid og godt samarbeid med medelever

Forskning på bruk av programmering i opplæringen

Forskning på bruk av programmering i opplæringen viser mange spennende resultater særlig knyttet til kognitive ferdighter, sosiale ferdigheter og ferdighetenes generaliserbarhet. Du kan lese mer om programmering og styrke sentrale ferdigheter her.

  • Programmeringsroboter i undervisningen gir gode muligheter for å lære nødvendige ferdigheter, som samarbeid, logikk, selvtillit, sekvensering og spatiale ferdigheter (1). 
  • Det er vist at unge barn presterte bedre og var mer interesserte når språk- og bokstavinnlæring ble kombinert med programmeringsroboter, fremfor bøker og lydbøker (2). 
  • Forskning på bruk av robot for barn med ulike lærevansker viser at fysisk tilgang til læremiddelet (roboten) påvirker barnets følelse av eierskap og kontakt med roboten. Disse to faktorene var vesentlige i mestringen av ulike læringsmål, som for eksempel å jobbe med en oppgave over lengre tid og godt samarbeid med medelever (3) 
  • Algoritmisk tenkning og programmering kan styrke eksekutive funksjoner hos elever. En studie viste signifikant bedring av ferdighetene planlegging (tid og sekvensering) nøyaktighet samt impulskontroll og konsentrasjon. Forbedringen var merkbar etter kort tid og var særlig tydelig hos de yngste barna (små- og mellomtrinn) (4) 
  • En metastudie om overføring av ferdigheter fra programmering til andre situasjoner i opplæringen, viste at elever som fikk opplæring i dataprogrammering hadde styrkede kognitive evner i forhold til elever som ikke hadde fått opplæringen. Ferdighetene som ble særlig styrket var  kreativ tenkning, matematiske ferdigheter, metakognisjon og logisk tenkning. (5) 
      
    (1) Karna-Lin, E., Pihlainen-Bednarik, K., Sutinen, E. & Virnes, M. (2006) Can Robots Teach? Preliminary Results on Educational Robotics in Special Education. International Conference on Advanced Learning Technologies. DOI: 10.1109/ICALT.2006.1652433 
    (2) Han, J., Jo, M., Jones, V.  & Jo.J.H. (2008). Comparative study on the educational use of home robots for children. Journal of Information Processing Systems, 4(4),s. 159–168. 
    (3) Virnes, M. (2008). Robotics in special needs education. IDC 08 Proceedings of the 7th international conference on Interaction design and children, s. 29-32. DOI: 10.1145/1463689.1463710 
    (4) Arfe, B., Lavanga, M., Montuori, C. &  Vardanega, T. (2019). Coding in Primary Grades Boosts Children's Executive Functions. Frontiers in Psychology, https://doi.org/10.3389/fpsyg.2019.02713 
    (5) Scherer, R., Siddiq, F., & Sánchez Viveros, B. (2019). The cognitive benefits of learning computer programming: A meta-analysis of transfer effects. Journal of Educational Psychology, 111(5), 764–792. https://doi.org/10.1037/edu0000314 

Programmering som inkluderende læringsaktivitet

Inkludering innebærer at alle elever opplever sosial og faglig tilhørighet og fellesskap med jevnaldrende.  Samtidig skal opplæringen være tilpasset evner og behov, slik at alle elevene lærer og utvikler seg både faglig og menneskelig. Et inkluderende læringsmiljø oppstår ikke bare av seg selv. Det krever innsats, vilje og kompetanse. Holdninger hos personale, elever og foreldre  har stor betydning for å lykkes med inkludering 
 
For å få til et godt og inkluderende læringsmiljø, må det planlegges. Inkluderende læringsaktiviteter der alle elevene har forutsetninger til å delta bør derfor alltid være et mål. Dette kan være vanskelig, men pyramidemodellen er en god modell å ta utgangspunkt i når du skal planlegge aktiviteter.  
 
Modellen beskriver klasserommet som en pyramide der du i toppen finner elevene med sammensatte og langvarige behov for tilrettelegging. For å lykkes med læringsaktiviteter som fremmer inkludering, må du ta utgangspunkt i toppen av pyramiden når du planlegger.  

Fire prinsipper for programmering som inkluderende læringsaktivitet

Når du skal planlegge en aktivitet med programmering med utgangspunkt i toppen av pyramiden er det fire prinsipper du bør følge:  

  1. Kartlegg hva slags programmeringsverktøy eleven kan bruke  
  2. Bruk motivasjon og interesse som en inngang til programmeringen 
  3. Knytt sosiale mål til programmeringen. Samarbeid bør stå sentralt 
  4. Gi eleven struktur og forutsigbarhet underveis i programmeringsøkten 

For at alle elever skal få opplevelsen av mestring er det også en fordel om programmeringen kan løses med ulike programmeringsspråk.  Med samme verktøy kan du da differensiere og tilpasse for elever på ulike nivåer. Der noen elever kan arbeide med å programmere spill med blokkprogrammering, kan andre elever utfordres på å programmere samme oppgaver i for eksemel JavaScript . 

Eksempler på programmeringsverktøy der to ulike programmeringsspråk er tilgjengelig:

  • micro:bit
  • SwiftPlayground 
  • Minecraft
  • Scratch

Les mer om programmeringsspråk

Spør eleven

Elever med særskilte behov kan i tillegg ha andre behov for at programmeringsaktiviteten skal fungere som en inkluderende læringsaktivitet. Trenger eleven taktil, visuell eller skriftlig støtte? Dette er viktig å vurdere for at aktiviteten skal føre til skaperglede og mestring. Programmering i Minecraft er kanskje tilgjengelig for blinde og svaksynte, men hvordan er det med resten av programmet?  For at programmeringsøkten skal fungere som en inkluderende læringsaktivitet, må det derfor planlegges for at alle får oppleve mestring. Er du usikker på hva eleven har behov for av støtte? Spør eleven! 

Les også mer om 

Hvordan tilrettelegge og gjøre programmering tilgjengelig for elever med nedsatt hørsel

Hvordan tilrettelegge og gjøre programmering tilgjengelig for elever med behov for alternativ og supplerende kommunikasjon

Alternative betjeningsløsninger

Hvordan tilrettelegge og gjøre programmering tilgjengelig for elever med nedsatt syn
 

Styrke sentrale ferdigheter med programmering

En viktig hensikt med programmering i skolen er ferdighetene elevene tilegner seg. I tillegg til å lære å programmere, som kan være en ettertraktet ferdighet i fremtidens arbeidsliv, lærer elevene ett sett med ferdigheter gjennom den prosessen programmeringen er. Programmeringen er mer enn det å lage en kode, og prosessen strekker seg fra planlegging, via problemløsning til evaluering. Når denne prosessen gjennomføres kreves og styrkes ferdigheter som: 

  • samarbeid
  • kommunikasjon  
  • feilsøking og utholdenhet

Elevene som programmerere må planlegge, løse problemer, samarbeide og kommunisere godt for å komme videre. De må også feilsøke og holde ut når det oppstår feil. Dette er ferdigheter som barn med ulike spesialpedagogiske behov kan ha behov for å styrke. Dersom en elev har utfordringer knyttet til sosiale ferdigheter, og skal styrke sine ferdigheter i samarbeid og kommunikasjon, kan programmering være en egnet aktivitet. Det samme gjelder for en elev som er umotivert for skolearbeidet, og for eksempel har utfordringer når det kommer til det å gjøre feil.  
 
Mange skoler gjør seg erfaringer med at programmering på timeplanen skaper engasjement i elevgruppa. Hvis programmering er en aktivitet eleven opplever som engasjerende og motiverende, gir det gode muligheter til å jobbe med andre ting som oppleves vanskelig. Les mer om programmering og interesser her. 
 
Ferdighetene som styrkes gjennom programmering er viktig for alle elever i møte med skole, utdanning og fremtidig arbeid. Det finnes flere ulike betegnelser på den gruppen ferdigheter programmeringsprosessen rommer. Eksempler på slike er «21st century skills» eller ferdigheter for fremtiden og algoritmisk tenkning. Ferdighetene i algoritmisk tenkning betegnes som en av de viktigste grunnene til at programmering skal inn i alle klasserom. Les mer om algoritmisk tenkning her.

Programmering og sosiale ferdigheter 

Styrking av sosiale ferdigheter med programmering kan gjøres i ulike fag, med ulike oppgaver og med de fleste programmeringsverktøy. Sentrale sosiale ferdigheter som samarbeid og kommunikasjon vil alltid være en viktig del av programmeringen, uavhengig av elevens alder, programmeringsspråk og programmeringsverktøy. De gode samarbeidssituasjonene avhenger av hvordan vi planlegger og legger opp læringsøkten. Dersom vi har den algoritmiske tenkningen i fokus i programmeringsøkten, fremfor det rent tekniske, vil sosiale ferdigheter som samarbeid og turtaking både kreves og styrkes mens elevene jobber sammen med kommunikasjon, feilsøking og utholdenhet.  

Programmering og eksekutive ferdigheter 

Gjennom tilrettelagte programmeringsøkter kan elever styrke eksekutive ferdigheter som for eksempel evnen til planlegging og sortering. Les mer om programmering og eksekutive funksjoner under forskning.

Aktuelle læringsressurser  

Lego WeDo 

Lego WeDo er en programmeringsrobot som kan egne seg særlig godt for å jobbe med samarbeid og kommunikasjon. Lego er noe de aller fleste kjenner til. Ved å benytte lego som inngang til forskjellige læringsaktiviteter i klasserommet, kan du som lærer bidra til å ufarliggjøre kommunikasjon og samarbeid. Les mer om Lego WeDo 2.0 her.

Bee-bot  

Med et enkelt og intuitivt brukergrensesnitt kan Bee-bot brukes av barn ned i førskolealder. Den lille roboten egner seg godt for introduksjon og begynneropplæring i programmering. Vanskelighetsgraden på programmeringen kan tilpasses barnas forutsetninger og behov. Programmering med Blue-bot egner seg godt for å jobbe med: 

  • rom og retning 
  • samarbeid, turtaking og kommunikasjon 
  • problemløsing 
  • estimering og sekvensering 

Les mer om Bee-bot her.

Interesse og motivasjon

Når vi opplever mestring og at noe er interessant, øker motivasjonen for arbeid. Slik er det selvsagt også for barn og unge i skolen. For noen elever kan det, av ulike årsaker, være svært betydningsfullt med skoleaktiviteter som i stor grad treffer interesseområdet.   
 
Statped har erfaring med at elever som opplever utfordringer i møte med skolen, særlig gutter, er teknologisterke og har en stor interesse for dette. Det kan gjelde elever med alvorlig skolefravær eller lav motivasjon for faglig arbeid, elever med ulike lærevansker eller nevroutviklingsforstyrrelser som ADHD, autisme og Tourette. Felles for disse utfordringene er at eleven ofte møter utfordringer i skolen knyttet til det faglige og det sosiale. En lang historie med nederlag og lav mestringstro kan føre til lav motivasjon og skolefravær. 

Interessekartlegging

Et vesentlig steg i tiltaksrekken for disse elevene er en interessekartlegging. Ved å spille på elevenes interesser kan vi både styrke relasjonen til eleven og øke motivasjonen for faglig arbeid i skolen. For elever som motiveres av arbeid med teknologi, vil trolig programmeringens innmarsj i klasserommet oppleves svært positivt. Det er nærliggende å tro at dersom arbeidsinnsatsen resulterer i en kjørende robotbil, vil det være lettere å motiveres til å holde ut, og gjøre en ekstra innsats. Programmering representerer en alternativ inngang til lærestoffet. Prosessen er teknisk, praktisk og kan løses tilnærmet tekstfri. Det kan derfor være en god læringsaktivitet for elever som har utfordringer knyttet til lesing og skriving, eller har lav motivasjon for slik type arbeid.  

Bedre selvfølelse og selvtillit

Å bli møtt i sine interesser er identitetsbyggende. Hvis eleven interesserer seg for programmering, er det et godt utgangspunkt for å jobbe mot en bedre selvfølelse. Å møte sine egne interesser, og få tid og mulighet til å gjøre det man aller helst trives med, gir en økt trygghet, økt selvtillit og en opplevelse av anerkjennelse og selvrespekt. Eleven opplever at det han eller hun er opptatt av kan være noe som andre kan lære eller delta i og samhandle om. Bedre selvoppfatning og selvtillit gjør at man blir mer åpen og får mer lyst på å teste ut nye erfaringer. 

Det er viktig å huske på at barn med autismespekterforstyrrelser kan ha utfordringer med å lære gjennom å prøve å feile. Her må det legges stor vekt på mestring.  

Programmering og tilgjengelighet for elever med nedsatt syn

Mye av programmeringsaktiviteten er visuell.  Elever med nedsatt syn eller elever som er blinde kan likevel programmere på mange ulike måter, men det vil ofte kreve tilrettelegging. Hvilket programmeringsverktøy du velger vil være av stor betydning.  
 
Det er et stort utvalg av både programmeringsverktøy og programmeringsspråk som kan anvendes i opplæringssammenheng. Det er viktig at du som lærer finner det verktøyet som er mest tilgjengelig for din elevgruppe. Når det kommer til hva slags programmeringsverktøy eller språk som er mest egnet for elever med nedsatt syn, så kommer det an på blant annet grad av synsnedsettelse. Generelt sett vil programmering med tekst være mer tilgjengelig for en person med nedsatt syn enn programmering med blokker. Programmeringsroboter med taktil støtte og taktil programmeringstaster, slik som Bee bot, kan være mer tilgjengelige enn andre roboter.  
 
I tabellen under finner du en oversikt over ulike kategorier av programmeringsutstyr og grad av tilgjengelighet for svaksynte og blinde.

  Blokkprogrammering roboter Blokkprogrammering skjerm Tekstprogrammering
SVAKSYNTE- lite forstørring Ok. Eventuell merking av robot og underlag. Ok. Stor skjerm, tilpasning av operativsystem. Ok. Moderat forstørring i editor og operativsystem.
SVAKSYNTE- mye forstørring Ok. Eventuell merking av robot og underlag. Ok, men ikke for alle da det kan bli for krevende å navigere. Forstørringsprogram. Ok. Forstørringsprogram.
BLINDE Ok. Eventuell merking av robot og underlag. Eventuelt lage kart. Ikke tilgjengelig. Se etter alternativer, tekstprogram. Ok.

I tillegg til valg av verktøy, er det viktig å være bevisst på hvordan en velger å legge opp programmeringsøkten. Det kan være lurt med god tid til forberedelse og orientering av både rom og utstyr. Eleven må få mulighet til å bli godt kjent med verktøyet, slik at han eller hun har mulighet til å delta i samarbeidet og de andre elementene av algoritmisk tenkning som samarbeid, utforsking og feilsøking.  

Når det kommer til programmering for elever med synsnedsettelse er adekvat tilrettelegging og riktig valg av utstyr viktig.  

Temaside om programmering for elever med nedsatt syn kan du lese mer om ulike verktøy og tilgjengelighet for elever med nedsatt syn.

 

 

Programmering og tilgjengelighet for elever med nedsatt hørsel

Å programmere kan være både en visuell og en taktil læringsaktivitet. Det gjør at programmering kan fungere fint for en elev med hørselstap. Det er likevel noen ting du bør tenke på når du planlegger programmering for grupper der det går en elev med nedsatt hørsel. Selv om selve kodingen og programmeringsverktøyene er visuelle, er en betydelig del av programmeringsprosessen samarbeid og verbal kommunikasjon.

Når vi programmerer er vi algoritmiske tenkere som utforsker og feilsøker, og gjerne sammen med andre. Det er da viktig å legge til rette for at denne delen av programmeringsprosessen er tilgjengelig for eleven. Med fysisk og pedagogisk tilrettelegging kan programmering derimot være en egnet aktivitet for å styrke nettopp ferdigheter innen språk og kommunikasjon. 

Punktene under kan brukes som rettesnor i arbeidet med å tilrettelegge for hele programmeringsprosessen for elever med nedsatt hørsel.

Visuell støtte 

Benytt symboler og bilder i innlæringen og utføringen av programmeringen. Enkelte programmeringsverktøy som Bee-bot og Blue-bot har ferdiglagde symbolkort som kan benyttes, eller du kan lage symboler og bilder som passer til programmeringsverktøyet du har tilgjengelig og elevgruppen din.  

Små grupper 

Samarbeidsaktiviteter, bevegelse og aktiv læring er bra og lærerikt for alle elever, men kan generere mye støy. Det er viktig å legge til rette for støyredusering slik at eleven med nedsatt hørsel får mulighet til å delta i den verdifulle kommunikasjonen som foregår i programmeringen. Et aktuelt organisatorisk grep kan være å dele inn i små grupper og benytte grupperom. 

Forberedelse  

Det kan være lurt å sette av god tid til forberedelse av aktiviteten. Forberedelsen bør innebære arbeid med aktuelle begreper kombinert med den visuelle støtten. Dette vil gjøre det lettere for eleven med nedsatt hørsel og følge det som foregår i de ulike stegene av en programmeringsprosess. I tillegg vil god struktur og forutsigbarhet kunne øke læringsutbytte for alle elever. Mange elever har et behov for dette for å kunne konsentrere seg om oppgaven uten forvirring eller usikkerhet. Forberedelse er viktig blant annet for elever med nedsatt syn, språkvansker, kognitiv funksjonsnedsettelse og utfordringer knyttet til eksekutive funksjoner. 

Les mer om hva hele prosessen med å programmere innebærer her om algoritme og algoritmisk tenkning.

Les mer om pedagogisk tilrettelegging for elever med nedsatt hørsel her.
 

Programmering og tilgjengelighet for elever med behov for alternativ og supplerende kommunikasjon

For elever som bruker ASK vet vi at det tar lengre tid å uttrykke seg enn det gjør for oss som bruker talespråk. Det er derfor viktig å ta høyde for at det for noen elever er slik at hjernen er raskere enn hendene, og at de på grunn av arbeidsminnet ikke alltid er synkronisert.  Dette vil også gjelde når eleven skal programmere i timen.  

Pedagogisk tilrettelegging for elever med behov for ASK 

Når du jobber med programmering dekker du kompetansemål i læreplanen, men aktiviteten er også godt egnet til å jobbe med kommunikasjon og samarbeid. For elever med behov for ASK er det særlig viktig å ta hensyn til at dette er ferdigheter som er tidkrevende.  Når du skal lage et opplegg knyttet til programmering  er dette kunnskap som er viktig å ha med seg i den pedagogiske tilretteleggingen.  
 
Punktene under kan brukes som rettesnor i arbeidet med å tilrettelegge programmeringsaktiviteten for elever med behov for ASK: 

  • Programmeringsressursen må testes ut i forkant for å undersøke kompatibilitet. Det vil være noen ressurser som er enklere å bruke enn andre. Programmeringsressursen som brukes i klassen bør derfor vurderes opp imot eleven som har behov for ASK.   
  • Det kommuniseres mye under en programmeringsøkt, og eleven bør derfor ha tilgang på en tematavle med sentrale programmeringsbegreper. Utfordringen med en slik tavle er at det er mange ord som ikke er der. Du må derfor alltid ha barnets kommunikasjonsverktøy i tillegg til en tematavle.  
  • Det bør vurderes om oppgaven bør deles inn mindre biter slik at eleven kan behandle informasjonen og bearbeide den.
  • Er oppgaven av en slik karakter at den krever lengre tid å løse enn det arbeidsminne tillater,  må du gjøre informasjonen tilgjengelig ved enten å skrive den ned på tavle/ark eller legge den inn på kommunikasjonshjelpemiddelet. Se eksempel på tematavle i filmen under.

Lek og programmering 

Programmering er mer enn avanserte koder og dataforståelse. For mange barn vil det først og fremst handle om samarbeid, lek og problemløsning. Å bruke nettopp leken som en inngang til programmering, kan ha stor verdi.  
 
Barn lærer samhandling og kommunikasjon gjennom lek og de utvikler sosial kompetanse, relasjoner  og følelser av tilhørighet til gruppen. Ved å tilføre leken språklige aktiviteter knyttet til programmering, kan lekbaserte aktiviteter benyttes som en inngang til et tema som kan virke vanskelig og uoversiktlig. Samarbeid og kommunikasjon er ferdigheter som benyttes i lek, men som også er svært viktig når du programmerer. Derfor er leken et godt utgangspunkt som en inngang til programmering.  

Lego Education kodekspressen 

Kodingsekspressen er et verktøy som kan egne seg spesielt godt til en lekbasert inngang til programmering. Kodingsekspressen er laget med utgangspunkt i de velkjente Duplo-klossene fra Lego. Ved å plassere funksjonsklosser på togbanen kan barna påvirke hvordan toget beveger seg. Barna kan uttrykke ideer, jobbe med tallforståelse, lage historier og sette disse ut i lek gjennom programmering på en enkel og naturlig måte. Programmering med kodingsekspressen kan styrke barnas ferdigheter i kreativitet, samarbeid, kommunikasjon, språk og bruk av digitale verktøy. Aktiviteten kan også brukes til matematisk tankegang og det å bruke digitale verktøy for å lage og uttrykke ideer. 
 
Andre ferdigheter som er aktuelle å knytte til programmering med kodingsekspressen er:  

  • årsak- og virkningsforståelse 
  • forståelse for programmeringsbegreper som sekvenser, løkker, kommando 
  • betingede setninger – hvis-så-setninger 

Det er lurt å bruke en tematavle når du skal bruke kodingsekspressen sammen med barn med behov for ASK. Under finner du et eksempel på en tavle med begreper som er knyttet til kodingsekspressen. 

Forslag til tematavle du kan bruke med Kodeeksperessen

Alternative betjeningsløsninger og programmering

Mange programmeringsverktøy kan brukes med alternative betjeningsløsninger for datamaskin, nettbrett og andre programmeringsroboter. Dette er en løsning for barn og unge med ulike former for motoriske vansker. Motoriske vansker kan for eksempel gi seg utslag i upresise bevegelser, langsomme bevegelser, ufrivillig gjentatte bevegelser og/eller koordineringsproblemer og krever ulike løsninger. 
 

Dersom du har en elev som benytter en alternativ betjeningsløsning som øyestyring, hodemus, brytere og lignende, må du tenke gjennom hvilket programmeringsutstyr du skal velge. Nedenfor finner du en oversikt over hvilke betjeningsløsninger som passer til forskjellige programmeringsutstyr.  

Øyestyring

Med øyestyring kan du i utgangspunktet velge alle programmeringsapper som fungerer på Windows datamaskiner og Microsoft Surface Pro-nettbrett. Det er likevel ikke alle funksjoner i disse programmene som fungerer. 

Sphero Edu                                                                        

Blokkprogrammeringsfunksjonen i Sphero fungerer med øyestyring på pc.

Scratch

Programmeringsprogrammet Scratch fungerer med øyestyring på PC.

Micro:Bit

Programmeringsprogrammet Micor:Bit fungerer med øyestyring på pC.

Lego Wedo 2.0

Programmeringsprogrammet Lego WeDo fungerer med øyestyring på Microsoft Surface Pro-nettbrett.

Bryterstyring

Swift Playgrounds

Programmering med Swift Playgrounds fungerer med brytere.

Fant du det du lette etter?

0/250
0/250

Tusen takk for hjelpen!