Tips og triks / 10 minutter /
Lek en datamaskin: programmering uten en eneste linje kode?!
Har du lyst til å lære barna dine om programmering og den digitale verden? Lurer du på hva som egentlig er grunnprinsippene for hvordan det digitale universet vårt fungerer? Er du kanskje en lærer i barnehage eller skole som er på jakt etter litt inspirasjon? Da er du kommet til rett sted!
Har du lyst til å lære barna dine om programmering og den digitale verden? Lurer du på hva som egentlig er grunnprinsippene for hvordan det digitale universet vårt fungerer? Er du kanskje en lærer i barnehage eller skole som er på jakt etter litt inspirasjon? Da er du kommet til rett sted!
Mennesker lever i dag i to univers, det fysiske og det digitale. Verdenen og samfunnet vi lever i fremstilles i økende grad digitalt, og vi har fortsatt et godt stykke igjen. Omtrent alle lover og regler som former samfunnet vårt, både skrevne og uskrevne, står per i dag nedskrevet i kode. Systemene denne koden utgjør er rundt oss hvert eneste minutt. Nettopp derfor er det viktigere enn noen gang at alle får en grunnleggende forståelse for hvordan den digitale verden er bygget opp og fungerer.
Heldigvis er skoler i ferd med å introdusere programmering som fag, og IKT skal til og med inn i barnehagen. Men hva trenger de å lære, og hva kan barn ned i barnehagealder klare å lære? Hovedsakelig deles den digitale kompetansen i to deler, bruk av digitale hjelpemidler, og utvikling av disse. De fleste, også barn, vet hvordan de bruker et nettbrett eller en smarttelefon allerede før de kan snakke. Det er ikke det som er den interessante lærdommen, selv om dette også må kunnes.
Den interessante delen er å kunne tilpasse og lage nye digitale verktøy selv. Da kan alle være med å forme det digitale universet som stadig brer om seg! Her kommer programmering inn i bildet, siden det er måten vi kommuniserer med datamaskiner på. Men kan et barnehagebarn, eller et barn som såvidt har lært å skrive kunne lære om programmering? Eller en voksen som ikke har lært om programmering og ikke jobber innenfor IT?
Svaret er: selvsagt kan de det! Det finnes en rekke grunnleggende konsepter og prinsipper, byggestener om du vil, for hvordan kommunikasjon med en datamaskin foregår. Disse byggestenene ligger til grunn for programmeringsspråk, men de har ikke nødvendigvis noe direkte med kode å gjøre. Hvordan fungerer en datamaskin? Hva er kjørereglene i det digitale universet?. Grunnkonseptene kan utforskes gjennom aktiviteter som ikke trenger å involvere programmering, selv om mange også egner seg for programmering. Denne artikkelen (den første av to) går gjennom noen av disse grunnkonseptene. For hvert konsept følger det også med idéer til aktiviteter, særlig myntet på yngre barn (4+). Deltagere som er eldre eller mer modne, kan med fordel prøve de mer avanserte aktivitetene, men disse krever ofte litt mer konsentrasjon. Når du blir komfortabel med disse aktivitetene er det bare fantasien som setter grenser for hvordan dette kan utvides. Felles for dem alle er at reglene må overholdes til punkt og prikke, akkurat slik en datamaskin gjør.
Å produsere ingredienser til datamaskinen trenger ikke være vanskelig eller kostbart
Å produsere ingredienser til datamaskinen trenger ikke være vanskelig eller kostbart
Men hva er egentlig en datamaskin?
En datamaskin er da bare den boksen som mus, tastatur og skjerm kobles til? Ikke nå lenger! Både telefonen og nettbrettet er fullverdige datamaskiner som fungerer på nøyaktig samme måten som en datamaskin. Kanskje har du et kjøleskap eller vaskemaskin som er koblet til Internet? Hva med dørlåsen din og web-kameraet som lar deg sjekke hvem som er ved døren? Eller billettautomaten du kjøper billetter til tog eller buss med? Kasseapparatet i butikken? Omtrent alt i dag er en datamaskin. Alle nyere biler har også datamaskiner. Kort sagt finnes datamaskiner i nær sagt alt vi omgir oss med, og derfor er det så viktig å forstå hvordan datamaskiner faktisk virker.
Eksekvering - å kjøre programmet
Vi begynner med det helt fundamentale: eksekvering. Å eksekvere er ganske enkelt å utføre et sett med instruksjoner, altså å kjøre programmet. I lek tilsvarer dette for eksempel å leke en bestemt lek. Det er lett å glemme dette konseptet fordi det er så tydelig når man programmerer, men å forstå at en operasjon (eller et sett med operasjoner) 1) settes igang (startes), 2) er underveis (eksekveres) og 3) er ferdige (stoppes) er sentrale for å kunne forstå hvordan datamaskiner virker. På samme måten som vi åpner vannkranen, lar vannet renne, og lukker kranen, kan programmer startes, kjøres og stoppes.
Barn kan lære om dette gjennom å leke en datamaskin hvor man trekker «programmer», for eksempel en eller flere bevegelser, som så blir utført. Datamaskinen, altså deltageren, trekker et kort og starter dermed programmet. Deltageren skal så utføre alle instruksjonene på kortet, og programmet kjører (eller eksekverer) så lenge deltageren utfører bevegelsene. Når siste instruksjon er utført stoppes programmet og kortet legges tilbake i bunken .
Aktiviteten kan utvides ved at barna får være med å lage programmene som står på kortene. Da er det nyttig, særlig for de litt eldre (eller voksne), å diskutere hva et program egentlig burde være, altså hvor grensene går mellom ulike oppgaver.
Determinisme og kontekst
Etter eksekvering kommer determinisme. Determinisme i det digitale universet handler om at utfallet av de samme operasjonene som utføres blir likt hver gang, og er helt sentralt i en digital virkelighet. Det samme utgangspunktet og den samme sekvensen av operasjoner vil alltid gi samme svar. Dette er ikke alltid tilfelle i den virkelige verden. Både voksne og barn har vanskelig for å være konsekvente, så verden oppleves som lite deterministisk av de aller fleste.
Determinisme kan utforskes ved å gjøre et sett med oppgaver der noen oppgaver alltid gir samme svar, mens noen kanskje ikke gjør det. I sin enkleste form kan en aktivitet være å svare på et spørsmål. «Er lyset på?» vil gi samme svar så lenge utgangspunktet er det samme, nemlig at ingen har skrudd av lyset siden forrige gang «programmet» ble utført.
Regnestykker er gode eksempler på deterministisk oppførsel (fordi svaret er det samme hver gang) som kan settes opp mot tilfeldig oppførsel - f.eks å trekke ulike «svar» fra en bunke. Disse aktivitetene kan også utforske språk, der synonymer og det samme ordet på ulike språk har fullstendig forskjellig betydning. For eksempel «grine», som på norsk betyr å gråte, mens det på dansk betyr å le, eller «rolig» som på norsk er noe som skjer stille og forsiktig, mens det betyr morsomt på svensk).
Før vi går videre må vi gå gjennom konseptet "utgangspunkt", eller "kontekst", som er tett knyttet til determinisme. Kontekst er kort sagt miljøet rundt en hendelse, alt som har betydning for hendelsen. I språk-eksempelet er konteksten hvilket språk man snakker. For regnestykkene er konteksten sannsynligvis at vi opererer i 10-tallssystemet. Til og med for det å trekke tilfeldig oppførsel finnes det kontekst, for om det bare finnes én oppgave i bunken får vi jo alltid samme svar. Når konteksten endrer seg, altså at det kommer flere muligheter, vil også utfallet endre seg, altså at det går an å trekke ulike oppgaver fra bunken.
Betingelser
Neste konsept ut handler mer direkte om hvordan vi kommuniserer med datamaskiner. Betingelser (engelsk: conditionals), altså det å velge hva som skjer basert på utfallet av en test. Betingelser er vanligvis uttrykt med if og else. Barn utvikler tidlig forståelse for betingelser og det er enkelt å lære om disse i lek. Et par eksempler: hvis hun trekker en hvit ball fra kurven så skal hun hoppe, ellers skal hun snurre rundt. Eller når barn hopper paradis: hvis neste rute har en stein i seg så skal han hoppe til neste rute, ellers skal han hoppe på ruten.
I den digitale verden er det ingen alternativer annet enn det som er oppgitt i reglene («koden»), det vil si at man ikke kan finne på nye regler underveis (denne kan være vanskelig å forklare og overholde både for små og store). Hvis nye regler skal innføres, må leken («programmet») avsluttes, nye regler innføres, gjerne skrives ned eller gjøres kjent for deltagere («kodes»), før leken kan starte igjen («programmet» startes på nytt).
Testen, eller spørsmålet som stilles, må kunne besvares med enten ja eller nei (sant eller usant). La oss si at en gruppe deles i to basert på hvilket tall de trekker fra en kurv. Spørsmålet som avgjør hvilket utfall som velges kan være «Er tallet større enn 5?», og utfallene kan være «gå til gruppen til høyre» hvis svaret er ja og «gå til gruppen til venstre» dersom svaret er nei. For de minste (3-4 år og oppover) kan aktiviteten begrenses til å bestemme utfallet av spørsmålet og siden utføre riktig instruksjon. En naturlig utvidelse er å utforme spørsmålene.
Spørsmålene som stilles til en datamaskin, faktisk alle instruksjoner som gis, må oppfylle et viktig prinsipp - de må kunne forstås på én og bare én måte. Sagt på en annen måte, en instruksjon må være entydig for at datamaskinen skal vite hva den skal gjøre. Dette kan være vanskelig for de aller minste å forstå, men litt eldre barn kan ha stor glede av å utforske språk for å finne ut hvor ofte et spørsmål eller et utsagn kan bety ulike ting.
Repetisjon
Det siste konseptet i denne omgang er repetisjon (engelsk: repetition), altså det å utføre samme sett med instruksjoner flere ganger på rad. Det som gjentas kan være en eller flere instruksjoner, så lenge det som gjentas skjer i samme rekkefølge. Vanligvis uttrykkes dette som løkker. Her kan vi bruke paradis-eksempelet igjen: så lenge det ikke er en stein i neste rute, hopp til neste rute. Sagt på en annen måte: gjenta samme operasjon (hoppe) frem til betingelsene endrer seg. Andre måter å leke med repetisjon på kan være å sette sammen kort med bevegelser og trekke dem sammen med tall og dermed sette sammen løkker med bevegelser som skal gjøres.
Å leke en datamaskin med kort
Å leke en datamaskin med kort
Her kan både instruksjonene variere, antall ganger instruksjonene repeteres, og hva som bestemmer når deltageren er ferdig (altså: når betingelsene endrer seg). For de minste kan «programmene» være ferdiglagde, og når de blir mer erfarne kan de være med å designe programmene selv. Noen blanke ark som er laminert kan være utgangspunkt, der det går an å tegne de ulike instruksjonene og endre dem ved en senere anledning! Men jeg vil leke ute!
Alle aktivitetene kan gjøres ute også, ta med ark, evt bruk laminerte ark og tusj. Lag instruksjoner basert på det miljøet deltagerne er i (annen kontekst, annet utfall og kanskje helt andre programmer) og la barna være med å bestemme hva som skal skje. Bruk kongler, pinner, blomster og steiner i aktivitetene. Samme aktivitet i ulike kontekster er nyttig rent læringsmessig, der de får kjenne i praksis på hvordan ulikt miljø påvirker leken. Kanskje noen instruksjoner ikke gir mening ute? Som å starte vannkran? Hvis turen går til rennende vann, kan jo ikke vannet stoppes? Eller går det an å lage en annen type kran?
Så lenge det ikke ligger en stein i ruta, hopp til neste rute
Så lenge det ikke ligger en stein i ruta, hopp til neste rute
En viktig detalj til slutt
Alle de fundamentale konseptene vi har gått gjennom til nå er ting vi treffer både i den virkelige og den digitale verden hver eneste dag. Selv om de konseptene du har lest om til nå finnes i den virkelige verden også, er det viktig å forstå at alt som foregår digitalt er ordnet, altså at reglene ikke endrer seg uten ytre påvirkning. En betingelse som er programmert vil aldri gi ulikt svar på spørsmålet uten at spørsmålet programmeres annerledes. Det finnes heller ingen andre alternative utfall. Hvis det er to mulige operasjoner som kan eksekveres avhengig av om svaret på spørsmålet er ja eller nei, så blir en av de to valgt og ingenting annet kan skje.
Fellesnevnerne for alle aktivitetene over er at de skal eksponere hvordan datamaskiner oppfører seg ulikt fra den virkelige verden, og når de oppfører seg likt. Generelt er det viktig å forklare hva forskjellen er og la deltagere utforske hvert konsept, gjerne over tid. Du vil fort merke at deltagerne tenker ulikt. Det betyr ikke nødvendigvis at noen tar feil og noen har rett, men at det er ulike perspektiv som kan være verdifulle. Bruk gjerne tid på å utforske dette med barna.
Her er en liten huskeliste over de konseptene vi har gått gjennom:
- Eksekvering: å utføre et sett med instruksjoner
- Determinisme: at samme utgangspunkt og samme sett med instruksjoner alltid gir samme resultat
- Kontekst (utgangspunkt): alt som er relevant for situasjonen deltageren eller programmet er i (input)
- Betingelser: enten/eller, et spørsmål med kun ja eller nei som svar, som bestemmer hvilke instruksjoner som skal utføres
- Entydighet: en instruksjon kan bare forstås på én måte
- Repetisjon: ett sett med instruksjoner gjentas
Jeg vil vite mer!
Det finnes stadig flere gode ressurser for å lære barn om programmering og den digitale verden, for eksempel Kidsa koder (https://kidsakoder.no/), Hei Ruby (https://www.heiruby.no/) og Knappskog sin samling av læringsressurser for grunnskolen (http://www.digglaring.no). Aktivitetene i denne artikkelen er myntet på unge barn, men kan enkelt gjøres mer utfordrende.
Lykke til i leken! Neste del i denne serien handler om konsepter som bygger på grunnkonseptene i denne delen. Men allerede med disse grunnkonseptene på plass går det an å begynne og kode og kommunisere med en datamaskin. Har du spørsmål eller kommentarer, legg igjen under artikkelen eller send en epost til forfatteren.
Lek en datamaskin: programmering uten en eneste linje kode?!