torsdag den 1. september 2016

Kodning i de ikke-naturvidenskabelige skolefag

Det er med god grund meget oppe i tiden, at eleverne skal stifte bekendtskab med computerprogrammering. Personligt mener jeg, at forståelsen for, hvordan computeren virker, er ligeså vigtig som at kunne bruge den. Det er for mig ligesom, at man skal både lære at læse og at skrive. Vi kunne sikkert klare os fint ved at bare at kunne læse, men vi ville miste en masse kommunikations-, kreativitets- og udtryksmuligheder.

Vi behøver ikke alle kunne skrive som de helt store forfattere. På same måde behøver vi ikke alle kunne kode som Mark Zuckerberg. Men forståelsen for tankegangen bag er vigtigt. Ikke mindst fordi det efterhånden kræves i alle uddannelser og jobs.
I får lige to små film for at underbygge min påstand :)






Jeg har tidligere skrevet et blogindlæg om anvendelse af kodning i naturfagene. Det kan ses her Fysik, programmering og Hour of code   I den nederste halvdel af indlægget står der noget om, hvor man kan finde hjælp til at begynde at lære at kode.

Også andre fag end de naturvidenskabelige kan man med fordel arbejde med programmering / kodning. 
Jeg er helt bestemt ikke ekspert ude i de faglige hjørner, men prøver alligevel herunder at give et par bud på, hvad programmeringsevner kunne tilføre nogen af fagene. I er velkomne til at kommentere i kommentatorfeltet herunder. 

Alle de nedenstående eksempler er kodet i Scratch, fordi det er et fantastisk værktøj at starte med at kode i. På deres hjemmeside kan man lave programmer fra det allermest simple til noget meget avanceret.  En af mine tidligere elever i en 6. klasse lavede en hel kopi af et computerstyresystem i Scratch.

Når man skal udforske programmer i Scratch, er det vigtigt at læse programmørens instruktioner ude til højre på siden. Ellers kan det være svært at gennemskue, hvad man skal gøre.


Matematik

I Bruxelles havde jeg en fantastisk matematikkollega, Bob Cavanagh. Han underviste bl.a i indskolingen, hvor han brugte Scratch til at programmere små spil til sine elever så de kunne øve netop det, som de hver især havde svært ved. Det være sig at genkende geometriske former, træne regneformer el. lign. Disse spil er ikke åbne offentligt, så jeg kan desværre ikke linke til dem. Men det kunne f.eks være bygget op som en ide a la spillet på linket her:
https://scratch.mit.edu/projects/13853051/

Startbillede fra spillet Math Race

Hvis først ungerne kan kode i Scratch, kan man med fordel lade dem små matematikspil til hinanden. På samme måde som vi allerede nu ind i mellem lader dem skrive opgaver til hinanden. 

Selve det at lære at programmere, at skrive algoritmer, er også at lære en meget logisk form for problemløsning. Så kodetræning kan styrke den form for tænkning, som vi i matematik gerne vil have fremmet. 


Billedkunst

Computeren er et helt fantastisk værktøj til billedkunst. Ikke mindst billedbehandlingsprogrammer som f.eks Gimp. I en af de små film i starten af dette indlæg, ser man også hvordan programmering er fundamentalt for animationsfilm.

Mine elever er altid meget fascinerede over interaktiv art. Og det er da også vildt fængslende at lave interaktive billeder. Billedet herunder er lavet i Silk. Har du selv lyst, så tjek det ud på linket http://weavesilk.com/


Men hvorfor ikke sætte dem i stand til at lave det selv?  Herunder er både simple og mere komplicerede eksempler på hjemmekodet interaktiv kunst.
















Religion, filosofi og etik.

Første gang, jeg besluttede mig for at lære at programmere mine egne spil, var, da jeg for mange år siden hørte et radioprogram med en lærer fra Højby skole. 
Som jeg husker det, havde hendes elever lavet projektopgave, og én af grupperne havde som produkt programmeret et spil. 
Spillet handlede om at skyde terrorister. Fremlæggelsen startede med, at hele klassen spillede spillet. Hver gang de slog én terrorist ihjel, dukkede 3 nye op. Til sidst blev terroristerne for mange. 
På den måde endte alle spil med, at man tabte.
I den efterfølgende fremlæggelse gjorde gruppen rede for, hvorfor de havde valgt at illustrere kampen mod terrorisme på den måde. Det, at lade klassekammeraterne selv komme til den ønskede erkendelse gennem spil, synes jeg, var et utroligt kraftfuldt produkt. Jeg kan ikke forestille mig, at en power point -præsentation kunne have haft samme gennemslagskraft. 

Hjemmelavede spil kan bruges til at illustrere mange af de livssyn, holdninger, problemstillinger og eventuelle løsninger, som man arbejder med i de mere etiske fag.

Dansk og andre sprogfag

I alle fag kan man undervise MED spil. Altså lade eleverne lære gennem spil. I dansk kan man endvidere undervise I spil og se på computerspillet som genre. Herunder er det selvfølgelig oplagt at lade eleverne kode deres egne spil.

Endvidere kan eleverne bruge kodningen til at producere små historier og animationer, hvor de træner både skriftlighed og mundtlighed. Det kan bruges i alle sprogfagene.

Når eleverne har kodet et spil på Scratch bør de skrive en vejledning eller et resume til brugeren. Endvidere bør de skrive kildeangivelser, hvis de har brugt materiale, som de ikke selv har produceret.

Her er et lille spil, der kunne være lavet af en lærer, der ønsker, at eleverne arbejder med nogle bestemte ord:

Create your story: https://scratch.mit.edu/projects/28165522/



Og her er en lille fortælling:
The Robot and the Princess: https://scratch.mit.edu/projects/68749456/




Musik

Man kan lave musik i Scratch. Lidt ligesom i Garage Band. Også læreren kunne lave eget undervisningsmateriale. Her er først et eksempel fra en studerende på CS50 (findes som gratis, online computerkursus fra Harvard, se evt nærmere i det i starten nævnte blogindlæg om fysik og kodning).

Tryk først på det grønne flag for at starte. Tryk derefter på mellemrumstasten. Det får baggrunden til at skifte, og du kan nu trykke på noderne og høre de enkelte instrumenter i et symfoniorkester. Tjek det ud på 
CS50 Guide to the Symphony orchestra: 



Lad brugeren vælge og spille på instrumenter:


Det næste eksempel, jeg har fundet, er virkelig ikke for begyndere! Men det kan bruges til at vise, hvad man også kan med Scratch. Alt er kodet: timerlinien, visualizeren, den indsatte lyd etc



Den næste er lidt sjov og let at kode for en elev, der har lært at Scratche.
Making Music Tutorial Practise (tryk på computerens bogstavtaster. Ikke på billedet): 



Der findes helt vildt meget mere derude. Kun fantasien og trangen til at slutte her (for i stedet at gå i køkkenet og lave spaghetti) sætter grænser :)


tirsdag den 24. november 2015

Fysik, programmering og Hour of code.

Hvorfor skrive om Hour of code i forbindelse med fysik? Eller for den sags skyld i forbindelse med de andre naturfag for udskolingen? Fordi det at kunne bruge computerprogrammering kan tilføre noget nyt til vores undervisning i naturfagene.


Hvad kan programmerings-kompetencer tilføre undervisningen?
Først og fremmest er det at kunne lade elever programmere simulationer eller animationer en (set i forhold til traditionen i vores skolefag) ny måde at vise sin forståelse af det faglige stof og at arbejde med modeller og sammenhænge.

Det kan handle om den elev, der har lidt svært ved at udtrykke sig verbalt. Hun kunne i stedet kode en animation, og evt bruge den som grundlag til at forklare / fremlægge.

Det kræver ofte en bedre forståelse af stoffet at programmere animationer. Hvis du f.eks vil programmere en animation om et frit fald, skal du have en vis minimums-forståelse for fysikken i det for at kunne overføre det til din kodning. Heri kan der altså også ligge udfordringer til de ekstra talentfulde elever.

Programmeringen kan være en måde at komme dybere ned i stoffet under indlæringen. Når man leger med matematikken, mens man koder, ser man øjeblikkeligt, hvad ændringerne gør ved bevægelsen. Koder eleverne sammen to og to kan de diskutere og på den måde blive endnu skarpere i deres forståelse og formidling.

Og som lærer vil man kunne lave de animationer, man ellers sidder og leder efter på nettet. Eller evt forbedre dem, man har fundet.

Desuden vil en stor del af de elever, der vælger at gå videre med naturvidenskabelig uddannelse, skulle lære at kode i f.eks Java eller Python. De vil derfor have gavn af at kende  logikken i programmering.

Rent kognitivt fremmer arbejde med programmering en analytisk tankegang, der vil kunne understøtte deres forståelse af den naturvidenskabelige metode. Se evt artiklen her fra The Hechinger Report om "How one school district works computational thinking into every grade and class"


Lidt eksempler på, hvad man kunne gøre med programmering i fysik-undervisningen.

Jeg har for dette blogindlægs skyld leget med at lave to forskellige animationer om det frie fald.
Det første er tænkt som været lavet af den elev, der har forstået, at tyngdeaccelerationen er forskellig på hhv. Jorden og Månen. Og hvad denne forskel gør ved æblets bevægelse.
Tryk på det grønne flag for at starte. Når æblet er faldet ned, tryk igen på det grønne flag for at tage et nyt valg.




I det næste eksempel forestiller jeg mig, det er en dygtigere elev, og at jeg derfor vil have vedkommende til at arbejde lidt mere med matematikken i bevægelsen. Det kunne ende som dette bud, hvor både hastighed (velocity), tid og tilbagelagt strækning skal beregnes af programmet.



Jeg er ikke selv afsindigt erfaren udi det med at programmere. Men jeg mener, det giver mange muligheder og redskaber i undervisningen. Hvis man er helt begynder, er Hour of code et godt sted at begynde. Mere om det længere nede.

Først vil jeg lige vise et eksempel på, hvordan en mere hardcore programmør end jeg har simuleret en simpel harmonisk svingning i Scratch.




Og her er et fjerde Scratch-eksempel. Lavet af en elev. Denne gang er vi i biologiens verden.





Kom i gang med programmering. Hvordan?
I folkeskolen kan vi nå langt med programmering bare ved at lære eleverne at kode i Scratch, som er en online ressource udviklet og stillet til gratis rådighed af MIT (Massachusetts Institute of Technology) .

Man bygger sit program op med kulørte klodser som på billedet herunder.



Logikken i sammensætningen og funktionerne af klodserne, modsvarer logikken i "rigtig" programmering.

Netop derfor anvendes det også i CS50x, som er et populært, gratis online-kursus i introduktion til computer science fra Harvard University.
I første modul af kurset skal de studerende arbejde med Scratch. I andet modul arbejders der med at bringe programmerings-forståelsen fra Scratch over i at arbejde med programmeringssproget C.

CS50x's karismatiske og populære underviser David J. Malan har opnået kultstatus i visse online kredse. Her er hans introvideo til kurset.



Har du og dine elever aldrig før prøvet at programmere, er Hour of code et udramatisk sted at starte.
Det er hjemmesiden for et verdensomspændende event, hvor man forsøger at få så mange skolebørn som muligt til at stifte bekendtskab med logikken i computerkodning. Der kan man som lærer finde kodeaktiviteter til begyndere. Man koder små, lette programmer i populære universer f.eks Star Wars (min klare favorit), Frozen og Mine Craft. Det er meget, meget let at gå til for både børn og voksne. Jeg har gjort det med elever på ned til 6 år.

I de små lektioner i Hour of code arbejder man med de samme blokke, som der anvendes i Scratch, og de er derfor velegnede som introduktion.



Når man springer ombord i selve Scratch, er der masser af hjælp at hente fra de andre brugeres produktioner. Har man lyst, kan jeg også klart anbefale at tage første modul af CS50.

Vil man videre over i de rigtige programmeringssprog, er der masser af gratis hjæp at hente på nettet. Her er et par forslag til websteder med gode kurser: