Debat

Programmering og computational tænkning

Når det drejer sig om computational tænkning, er der både tale om logisk såvel som kreativ tænkning. Computational tænkning er en vigtig evne for os alle sammen at kunne mestre.

Publiceret Senest opdateret

Bemærk

Denne artikel er flyttet fra en tidligere version af folkeskolen.dk, og det kan medføre nogle mangler i bl.a. layout, billeder og billedbeskæring, ligesom det desværre ikke har været teknisk muligt at overføre eventuelle kommentarer under artiklen.

At kunne programmere og opnå forståelse for, hvad de tusindvis af computere, som vi dagligt omgiver os med, er i min optik et lige så nødvendigt fundament, at have med sig i sin bagage, som det er at vide hvordan havet reagerer på isen der smelter, hvordan samfundet er struktureret, hvordan religioner er skabt, og hvorfor og hvornår sprog er vigtige at beherske i dagligdagen mv.

Computere og software er præcis en ligeså stor og vægtig del af vores hverdag som ovennævnte eksempler. Om man vil det eller ej bør man forholde sig til det, som en del af det omgivende samfund. Jeg tror ikke der er så mange, der kan være uenig i dette. Til gengæld er der meget uenighed i, hvad der virker bedst for eleverne, når de skal i gang med at forstå teknologien. For er det et spørgsmål om programmeringssprog, en bestemt type robotarm eller er det at få et praksisnært samarbejde i stand med en lokal virksomhed man kan lave en case til etc.

Mens folkeskolen generelt er blevet underlagt et stigende antal test, der skal sammenligne os i os selv, i hinanden og i andre, er dette i særlig grad gået ud over børnene og deres kreativitet – for hvordan måler man sidstnævnte? Ingen PISA-tests kan måle det, ingen smagsdommere, ja; ingen kan vel i realiteten måle, hvad kreativitet egentlig er.

Vær med i samtalen

Klik her for at indsende dit indlæg til folkeskolen.dk - medsend gerne et portrætfoto, som kan bringes sammen med indlægget

Og netop det nye forsøg med teknologiforståelse drejer sig heller ikke en døjt om kreative processer. Som sådan. Derimod plæderes der for målbare resultater. Jf. EMU (https://www.emu.dk/grundskole/teknologiforstaelse) skal eleverne ”opnå færdigheder og viden, således at de kritisk kan deltage i udvikling af digitale artefakter og forstå deres betydning”. Målene, som er sat af et ekspertpanel, er, at eleverne særligt skal mestre følgende fire kompetenceområder: computational tænkning, digital design og designprocesser, digital myndiggørelse samt teknologisk handleevne. Idealtypisk er der sat en række hierarkiske mål og rammer op, der kontrollerer og fratager det personlige initiativ hos eleverne.

Det er ikke mit ærinde at sætte spørgsmålstegn til, hvordan de forskellige forvaltninger ude i kommunerne vælger at håndtere implementeringen af teknologien eller at kritisere ekspertpanelets ambitioner. Men hvis vi kun ser teknologi, som noget vi kan sætte en formel på og måle os til igennem resultater, er min pointe imidlertid at vi efterhånden kommer til se eleverne miste lysten til teknologien i folkeskolen.

Mine egne erfaringer

Jeg vil i nedenstående komme ind på en række gode råd til hvordan man som underviser kan klæde sig på til at integrere en kreativ proces hos sine elever, og hvad mine nuværende erfaringer er med disse. For at det ikke skal blive for langt, tager jeg alene udgangspunkt i programmering og computational tænkning.

Når det drejer sig om computational tænkning, er der i min optik både tale om logisk såvel som kreativ tænkning. Computational tænkning er en vigtig evne for os alle sammen at mestre. Det er en tænkning som på mange måder åbner en masse døre for os – teknologiske som ikke-teknologiske.

Bøger:

Hello Ruby-bøgerne af Linda Liukas, er ekseptionelt gode og uundværlige at starte med. De fortæller på et klart og tydeligt sprog, hvordan eksempelvis hardwaren fungerer eller hvordan man programmere ud fra helt universelle principper. Liukas  har ikke udgangspunkt i noget specifikt programmeringssprog. Tværtimod kommer hun lidt rundt omkring. I hvert fald i sine første bøger. Bøgerne er skrevet ud fra en piges, Ruby, rejse ind i teknologiens univers med tydelige referencer til Lewis Carolls ”Alice i eventyrland”, hvor Ruby med undren og nysgerrighed bliver præsenteret for den ene type hardware efter den anden. I en anden bog møder Ruby software som gennem programmering hjælper hende på sin rejse igennem teknologien mangfoldige univers. Det er en hamrende vigtig bogserie. Her fortæller Liukas om sine bøger (TED Talk): https://www.ted.com/talks/linda_liukas_a_delightful_way_to_teach_kids_about_computers

Og så findes der gode eksempler til undervisningen her: https://www.helloruby.com/play

”Life long kindergarten” af Mitchel Resnick er en anden bog, som kultiverer enhver læser og gør op imod de fordomme nogle måske har om, hvad kreativitet og programmering samt makerlabs har med hinanden at gøre, og hvorfor det er så vigtigt hele tiden at tolke teknologi ud fra en legende vinkel og ikke en målbar, som bare skal have elever igennem en lærerplan. Hør hvad Resnick selv siger om den livslange børnehave her (TEDX): https://www.youtube.com/watch?v=IfvgVpQI56I

Jeg vil desuden anbefale dig at læse ”Code: The hidden language of computer hardware and software” af Charles Petzold. En fremragende bog, som åbner op for en praktisk forståelse af computeren som den maskine den er med al dens hardware fra de mindste enheder og op. Den kunne sidst jeg så efter ikke bestilles på SAXO, men prøv eventuelt Amazon eller World of Books – de plejer at have den.

Af andet uundværligt materiale findes bogen ”Clean Code” af Robert C. Martin. En relativ lille bog på under 400 sider, som du nemt kan læse på egen hånd, og som ikke vil volde dig problemer. Den er friskt skrevet, og delt op i tre dele. Den første del drejer sig om principper, struktur og praksis i den gode kode. Den næste del indeholde cases. Den tredje del tager udgangspunkt i de flotte cases og tager os med om bag arbejdet med dem, og hvordan koderne rent faktisk blev skabt. Det er i øvrigt værd at lægge mærke til at alle case er skrevet i Java. Om du kan Java eller ej, så giver det bare et super fint indblik i arbejdet med programmering og den computationelle tænknings logiske og kreative processer.

I bund og grund er en algoritme en opskrift som koden udfører. Men hvis du som underviser alligevel ønsker at forstå algoritmer som mere end bare ”opskrifter”, vil jeg foreslå ”Algorithms” af Robert Sedgwick. En hamrende god bog om de mest basale algoritmer og som klæder dig fuldt ud på til at tale algoritmer med dine elever. Den giver med andre ord en enorm faglig ballast, som vil blive guld værd for dig. Især hvis du underviser udskolingen – hvor man ofte bliver spurgt nærmere ind til algoritmer. Også denne er skrevet med eksempler i Java, men glem bare det. Du kan sagtens abstrahere fra det uden at du mister forståelsen for algoritmer – som jo er ganske universelle.

Software:

Men er Java så det bedste sprog at starte med i Folkeskolen, når nu (næsten) alle eksemplerne fra de nævnte bøger er skrevet i Java, tænker du måske. Mit svar er nej! Javas syntaks har en lang indlæringskurve, og hver gang man skal have ”oversat” sin kode kræver det en compiler, som oversætter HELE koden. Det samme gælder for eksempelvis C++. Jeg vil generelt mene, at det bliver for tungt at sidde med programmerginssprog, der kræver en compiler. Tempomæssigt falder undervisningen væsentligt. Python derimod er et godt programmeringssprog at starte med. Mere herom senere.

Først og fremmest er det min opfattelse, at vi i vores kultur i langt højere grad er vant visuelle medier og billeder. Vi ser fjernsyn, vi streamer videoer, vi spiller computerspil, i matematik bruger vi CAS mv. Det visuelle sprog er forankret i os, og det er firkantet sagt blevet vores primære kilde til information. Det kan vi begræde eller acceptere. På baggrund af dette vil jeg anbefale at starte ud med Scratch. Uanset om man skal undervise klassen i en tekstbaseret syntaks, er Scratch et godt udgangspunkt at tage, idet programmet visuelt fremstiller koderne for os. Desuden er det meget nemt at gå tilbage og ændre i noget. For de helt små ville jeg til enhver tid benytte Scratch. Der findes fantastiske ressourcer på eksempelvis https://scratch.mit.edu – hele ideen med Scratch er at dele ud af sine erfaringer og hjælpe andre. Det er jo i sig selv en vigtig kompetence at mestre.

Hvor meget fan jeg end er af Scratch, har jeg desværre også oplevet, at folkeskolerne stort set ikke underviser eller vil undervise i andet end Scratch. Og det er en skam. Jeg er selv blevet mødt med at jeg ikke skulle undervise i Python med påstande om, at eleverne jo bare synes det er ”sejt”, og at det i virkeligheden er alt for svært for dem. Jeg er dog altid blevet mødt af den slags holdninger af særligt konsulenter uden nogen erfaring inden for programmering. Jeg synes der er tale om særdeles lave forventninger til eleverne, hvis det er kulturen i de fleste folkeskoler, at man sigter efter det lettest tilgængelige programmeringssprog. Sandheden om Scratch, er at man på et tidspunkt når til et punkt, hvor Scratch enten ikke dækker ens ønsker eller man sidder simpelthen fast i alle de mange blokke, som meget lettere kunne skrives vha skriftlige syntaks. Man kommer på den lange bane til at under-stimulerer eleverne ved alene at have fokus på Scratch. Jeg underviser selv elever ned til 10 år i Python, som alle har fået rigtig meget ud af det. Der er intet ”sejt” eller svært ved skriftlig syntaks. Snarere er det endnu et skridt ind i den fantastiske rejse som programmering er. Min erfaring er, at 10-12 år faktisk er den mest optimale alder at starte med en skriftlig syntaks i.

Det næste naturlige skridt efter Scratch mener jeg derfor er Python. Et programmeringssprog, der i modsætning til fx Java og C++ ikke behøver en compiler, der omstændigt skal læse samtlige linjer inden den kommer med et output. Python kan derimod læses linje for linje, hvilket er en kæmpe hjælp. Eleverne kommer derfor aldrig til at sidde fast, sådan for alvor. Pythons syntaks er væsentligt lettere at gå til. Lad mig her vise forskellen på ”Hello, World!” skrevet i hhv. Java, C++ og Python.

Java:

class HelloWorld

{

                             public static void main(String args[])

                           {

                             System.out.println(“Hello, World!”);

                           }

}

Og så kører vi lige en compiler, der læser alle linjerne. Har vi ikke husket semikolon eller at sætte tuborgklammerne rigtig, får vi en error.

C++

include <iostream>

int main()

{

                             cout << “Hello, World!”;

                             return 0;

}

Og vi kører igen en compiler, som læser alle linjerne.

Python:

print(”Hello, World!”)

Her kører vi ingen compiler. Vi trykker blot enter og eksekverer koden. Vi får outputtet ”Hello, World!”

Opsummeret

Python indeholder i øvrigt flere gode ”biblioteker”, som kan benyttes når man programmere. Fx er programmering med turtle grafik et godt sted at starte. Kender man ”pen tool” fra Scratch, er det samme koncept. Men i modsætning til Scratch, hvor man bruger blokke, skriver man altså selv koden i Python. Det er relativt nemt, og eleverne opnår efterhånden en god forståelse for hvad koden gør rent grafisk. Artiklens billede viser et eksempel på turtle grafik i Python, som jeg har skrevet vha blot 6 linjers kode. 

Opsummeret kan man som underviser bruge en række værktøjer til at imødekomme undervisningen, så den imødekommer alle elevers interesser. Ved at opnå indsigt i Scratch og Python, har man som underviser mange strenge at spille på, når det kommer til programmering og computational thinking.

I øvrigt er det nemt at tilgå nye programmeringssprog, når man først har fået fornemmelse af, hvad programmering dækker. Et loop(løkke) er et loop uanset hvilket program, man benytter. Det er sandsynligvis skrevet på en anden måde, men det er universelt og dækker over præcis det samme. Men kast dig ikke ud i nye sprog for hurtigt. Scratch og et programmeringssprog med tekstbaseret syntaks bør være rigeligt. Når eleverne er nået et punkt, hvor de forstår de grundlæggende principper, kan det dog for afvekslingens skyld være en fordel at bringe et program som Processing i spil, hvor man programmere grafik i Python. Og Sonic-Pi, der baserer sig på programmering i musik, er desuden også et let tilgængeligt program at tilgå for eleverne.

God fornøjelse!

Powered by Labrador CMS