Programmering for skolebørn: Næste skridt efter Scratch er svært
Der bliver sandsynligvis behov for mange flere, som kan arbejde med softwareudvikling. Ifølge brancheorganisationer og virksomheder er der allerede nu mangel på softwareudviklere, og det har flere gange fået rejst debatten om, hvorvidt børn skal undervises i programmering.
Men det kan være en opgave, som er vanskelig at løfte.
I hvert fald hvis man gerne vil give mere end blot de allermest motiverede elever en introduktion, der rækker ud over programmering af små spil med det populære værktøj Scratch.
Scratch er udviklet af MIT og er beregnet til at lære børn og andre nybegyndere de grundlæggende principper i programmering med logik og løkker.
Programmeringen sker ved at sammensætte blokke af logik til et program, og eleverne skal altså ikke skrive koden selv, men i første omgang blot lære, hvordan et program skal konstrueres.
»Vi har lavet et forløb for 5. klasser her på skolen - altså for elever, der er cirka 11 år gamle. Vi bruger hovedsageligt Scratch, da det er nemt at bruge og efterhånden supporterer mange ting,« siger lærer og uddannet ingeniør Søren Svendstorp Lund fra Øster Farimagsgade Skole. Der findes en række forskellige platforme, som kan bruges til at lære børn og unge at programmere ved at give dem hardware mellem hænderne. Arduino: Et open source-projekt, hvor der findes mange vejledninger til at bygge både enkle og mere avancerede ting ved hjælp af de små computere. Micro:bit: En endnu mere simpel computer end Arduino, hvor man kan begynde med at få de indbyggede dioder til at blinke. Lego Mindstorms: Legos robotter er dyrere end de to ovenstående projekter, men giver mulighed for at bygge mere avancerede robotter ved hjælp af komponenter, børnene kender. Får til august selskab af Boost, som skulle være mere simpel.Robotter og dioder
Arduino sætter barren højt
Han kan trække på sin ingeniørbaggrund med erfaring fra assembler, Fortran og Turbopascal i undervisningen, fordi han derfor har forståelsen for programmering, selvom det ikke er de mest anvendte sprog i dag.
»Vi har også brugt Arduino, som bruger en simpel form af C++. Her er barren sat meget højt, men jeg har hørt, at der er lavet en compiler til Scratch, som understøtter Arduino,« siger Søren Svendstorp Lund.
En af de store udfordringer er, hvad eleverne kan gå videre til, hvis de vil prøve kræfter med noget, der ikke er baseret på blokprogrammering.
Men hvor Scratch er teknologineutralt i den forstand, at det handler om at lære, hvad en IF-betingelse eller FOR-løkke er, så er det sværere at undgå specielle fortolkninger af programmeringsstil med selv de mest simple programmeringssprog.
»Opgaven i folkeskolen er at vise ungerne, at man kan være kreativ med teknik og software, ikke at lære dem at kode i et bestemt sprog. Det må andre tage sig af,« siger Søren Svendstorp Lund.
Kreativitet fremfor kode
Den indstilling deler Henrik Guldbrandt, som er lærer på Skibet Skole i Vejle:
»Jeg går mere efter, at eleverne skal lære at være kreative med computeren, end at programmere. Vi har for eksempel også prøvet at lave hjemmesider med Wix,« siger Henrik Guldbrandt.
Både Henrik Guldbrandt og Søren Svendstorp Lund har også været i kontakt med Coding Class, som er et initiativ fra It-Branchen, hvor fagfolk er gæsteundervisere på skolerne for at give eleverne en introduktion. Men det format har sine begrænsninger.
»Vi havde et par gæstelærere ude, som underviste i web og Javascript. Det syntes eleverne var svært, og så tænder det dem ikke så meget,« forklarer Henrik Guldbrandt.
Coding Class er tænkt som en introduktion, men det kan være vanskeligt for lærerne at følge op på forløbet, da lærerne ikke er uddannet til at undervise i eksempelvis Javascript og dermed ikke kan gøre meget for at holde eleverne til ilden eller hjælpe dem videre.
»Som lærer skal man også have forudsætningerne på plads ud over interessen. De seks timer, de havde med et par eksperter var ikke nok til at få tændt eleverne. Hvis jeg skulle lære dem Javascript eller Python, så skulle jeg selv kunne det, og det kan jeg ikke,« siger Henrik Guldbrandt.
Coding Pirates starter med spil
Folkeskolen er ikke det eneste sted, hvor børn kan få en introduktion til programmering. De frivillige undervisere i Coding Pirates har gennem de senere år oprettet kurser i mange kommuner, og der er lige nu mere end 2.000 på venteliste. Scratch: Udviklet af MIT specifikt til at lære skolebørn på de yngre klassetrin grundlæggende programmeringsfærdigheder. I stedet for at skrive koden, sammensætter man blokke, der repræsenterer de logiske elementer i programmet. Sploder: Baseret på Flash og kan derfor køre i en browser. Beregnet til at bygge platformspil. Kodu: Et Microsoft-projekt, som kræver Windows, men kan bruges til 3D-spil, og det er muligt at udgive sine spil på Xbox. Game Maker: Et lidt mere avanceret 2D-spilværktøj, hvor man også kan arbejde med spilfysik og grafiske effekter. Processing.js: En Javascript-baseret udgave af Processing-projektet, som kan bruges til at lave interactive webapplikationer, som kan køre i alle nyere browsere. Code Combat: Et spilværktøj udviklet specifikt til undervisning, hvor eleverne skal skrive koden. Det er beregnet til at blive brugt i skoler som en introduktion til programmering. Small Basic: Hvis man foretrækker at gøre som I 1980'erne, så har Microsoft lavet en udgave af Basic til begyndere.Programmering for begyndere
Coding Pirates bruger også Scratch som det første trin, men derefter er det lidt forskelligt, hvad der fungerer bedst for børnene.
»De første ting laver vi med Scratch. Det er det nemmeste at komme i gang med, og de får øjeblikkelig feedback,« fortæller datalogistuderende Benjamin Rotendahl, som gennem tre år har været frivillig i Coding Pirates.
Når børnene har lavet de første ting i Scratch, så kan de eksempelvis prøve kræfter med mere tekstbaseret kodning ved hjælp af Javascript-biblioteket Processing, som er enklere end komplet kodning i Javascript, men er mere udfordrende end Scratch.
»Det er godt, hvis man synes, Scratch er nemt. Man kan lave nogle simple spil, som ser fede ud,« siger Benjamin Rotendahl.
Et andet værktøj er Game Maker, som ligesom Scratch også hovedsageligt består af blokprogrammering, men suppleret med tekstkodning, og det er samtidig en introduktion til en objektorienteret tankegang.
Unity ikke beregnet til at lære af
Til gengæld er to af de værktøjer, som man ofte ser anbefalet til de mere øvede børn, Unity og webprogrammering, ikke noget, der har givet gode erfaringer.
»Unity er ikke så godt som mellemtrin. Det tager lang tid at lære. Hvis man kan finde ud af det, så sætter man pris på det, men ellers bliver det til ren magi, hvordan man eksempelvis holder styr på objektreferencer. Der kan virkelig komme noget slamkode ud af det,« siger Benjamin Rotendahl.
Unity bruges til spiludvikling, og er egentlig ikke decideret rettet mod nybegyndere, men kan bruges til både de helt enkle og de mest avancerede spil. Det betyder også, at Unity ikke er beregnet til at være et pædagogisk værktøj, men et arbejdsredskab, som forudsætter en vis viden og forståelse.
»Vi har også kørt lidt webudvikling med nogle få hold. Hos nogle af børnene falder det i god jord, men for mange føles det lidt som at skulle lave en dansk stil,« siger Benjamin Rotendahl.
Webudvikling med HTML, CSS og Javascript anbefales ofte til begyndere, fordi værktøjerne er frit tilgængelige, og der kan komme et synligt resultat ud af det. Ulempen er, at det kræver meget arbejde med layoutet i HTML og CSS for at nå frem til noget, der ser professionelt ud.
Algoritmik i første time
Mens børnene oftest bliver introduceret til programmering med spil, så har Benjamin Rotendahl også været frivillig i universitetets gymnasietjeneste. Til de unge i gymnasiet er det nemmere at gå ind i mere klassisk tekstbaseret programmering.
»De sidder med nogle problemer i matematikfaget, som er fine, og det behøver ikke være visuelt. Det er sådan et sted, hvor jeg altid får lyst til at hive Python frem, fordi det har en let syntaks i forhold til for eksempel Javascript,« siger Benjamin Rotendahl. En helt basal maskinlæringsalgoritme, som kan bruges til simpel klassificering. Den kan skelne mellem elementer, der tilhører to kategorier, så længe der findes en enkel lineær adskillelse mellem de to. Algoritmen forsøger ud fra eksempler at finde frem til det bedste bud på denne adskillelse, og den kan implementeres med relativt få kodelinjer i eksempelvis Python.Perceptron
Han anbefaler at holde sig inden for funktionel programmering i begyndelsen, fordi det er ligger tæt op af, hvad eleverne i forvejen kender fra matematik, og ikke kræver forståelse for begreber som klasser og nedarvning.
»Jeg bruger som regel den første time på ren algoritmik. Det svære er ikke at skrive koden, men at vide hvad den skal gøre. Derfor er algoritmer og flow vigtigt,« siger Benjamin Rotendahl.
På gymnasietrinnet er det også muligt at introducere eleverne til machine learning. Selvom der kan ligge tung matematik bag visse algoritmer inden for machine learning, så er der også andre områder af faget, som er mere ligetil, især for elever som i forvejen sidder med vektorer i matematikfaget.
»Jeg har givet en machine learning-introduktion med at bygge en Perceptron, som kunne bruges til at hjælpe med at diagnosticere brystkræft. Det er godt at vise sådan et eksempel på, hvordan det kan bruges til noget,« siger Benjamin Rotendahl.

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.
Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.
Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.
Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.