Når eleverne bringer Computationel Tankegang (CT) i spil, foregår det oftest i forbindelse med, at eleverne skaber løsninger på udfordringer/problemer, som en del af designprocessen, og/eller når de programmerer.
Computationel tankegang er en række tænkestrategier, der på en gang er en forudsætning for at blive dygtig til at programmere, men på samme tid er strategier elever og undervisere kan trække på i alle fag, især når der arbejdes problem- og undersøgelsesbaseret. Computationel tankegang er et "mindset" eller et strategisæt, som eleverne kan aktiverer når de møder åbne opgaver, udfordringer og problemer.
Vi har oversat denne model fra Barefoot CAS og gennemgår her hver enkelt af de seks tankeprocesser/strategier.
Efter gennemgangen af modellen nedenfor, perspektiverer vi denne til de fire kompetenceområder i teknologiforståelse.
Tilgangene på højre side af plakaten, skal ses som didaktiske elementer/metoder, der med fordel kan anvendes, når man arbejder med CT. Disse fire computationelle strategier udgør kernen i computationel tankegang:
Abstraktion
Dekomposition
Mønstre
Algoritmer
Logik og Evaluering udelades ofte i andre udlægninger. Det er nemlig nærmest umuligt ikke at tænke logisk, forudsige hændelser, teste og evaluere, når man bringer de andre fire strategier i spil.
Herunder har vi lavet nogle eksempler på de computationelle tankeprocesser (CT) som de kan se ud i praksis. Hver CT strategi indeholder to eksempler: Ét eksempel på CT i en programmeringskontekst og ét eksempel i en design/problemløsningskontekst.
Abstraktion
Abstraktion handler om at udlede og fokusere på det væsentligste - og se bort fra alt andet.
Eksempel: Designproces
Eleverne arbejder med transport og CO2 udledning. De ved godt, at det er et komplekst problem - for transport er mange ting, og der er mange interessenter. Eleverne vælger udelukkende at fokusere på at udvikle en prototype app i powerpoint, der viser, hvordan folk bedre kan dele deres køretøj med andre. Alle andre perspektiver sorteres fra. Appen skal gøre det nemt at komme fra A til B med så få biler som muligt.
Eksempel: Programmering
Eleverne er gået i gang med at programmere en Micro:bit til at kunne afspille en lyd, når en affaldsspand åbnes.
Eleverne fokuserer hverken på design af kasse eller lyd. Det vigtigste for overhovedet at komme i mål, er at få Micro:bitten til at registrere lysforskel mellem lys/mørke og give et simpelt output. Med få linjer kode eksperimenterer de med denne ene del, fordi det er helt grundlæggende for overhovedet at få noget til at fungere.
Dekomposition
Dekomposition handler om, at skille et problem eller en kode ad i dets enkeltdele.
Eksempel: Designproces
Eleverne har indhentet og undersøgt data om hvordan kommunen i dag håndterer affald, og hvilke udfordringer borgerne oplever.
Eleverne identificerer mange udfordringer i dette problemområde, hvor en løsning kunne skabe en bedre affaldshåndtering for både kommune og borgere.
På en tavle tegner eleverne problemområdet ind, og deler det ind i dets enkeltdele. Herefter idégenererer de på løsninger på de enkelte dele.
Eksempel: Programmering
EKS1: Eleverne har lånt et langt stykke kode fra et andet Scratch program, der gør lige det de har brug for. De forstår bare ikke hvordan det virker, og der er også en fejl. Derfor skiller de koden ad i enkeltdele, for at analysere hvad hver enkelt del gør.
EKS2: Eleverne skal bygge en prototyperobot, der skal kunne affaldssortere. Robotten skal kunne mange ting, så eleverne deler alle dens funktioner op i enkeltdele og skaber et program ved at udvikle en del ad gangen og teste om det virker
Mønstre
Mønstre handler om at spotte, genkende og anvende mønstre og ligheder i arbejdsgange, løsninger og kode.
Eksempel: Designproces
Eleverne har brug for idéer til deres designudfordring. De har tidligere arbejdet med en idégeneringsøvelse, hvor de skulle udvikle verdens dårligste idé. Det hjalp dem sidste gang.
Da der er lighed (et mønster) i den udfordring de befinder sig i nu og sidste gang, bruger de samme idégeneringsøvelse.
Eksempel: Programmering
Eleverne har udfordringer med at få koden på deres Micro:bit til at virke ordentligt.
De kigger derfor i et program de tidligere har lavet, der i princippet virker lidt på samme måde. De analyserer koden og bruger mønsteret/ligheden til at udvikle den funktion i koden de har brug for.
Algoritmer
Algoritmer handler om at udvikle eller analysere kode eller arbejdsgange sekventielt - dvs. trin for trin eller “et skridt ad gangen”
Eksempel: Designproces
Gruppen laver en plan for, hvilke arbejdsgange og metoder de vil bruge for at komme i mål. Hvem skal gøre hvad og hvornår? Hvordan indfrier de krav og kriterier?
Planen fungerer som en trinvis beskrivelse af, hvordan eleverne vil komme fra start til slut.
Eksempel: Programmering
Eleverne skal udvikle et program, hvor brugeren skal indtaste en sikker adgangskode. Brugerne har kun tre forsøg.
Eleverne tegner først programmet ned som et flowchart(mindmap) trin for trin. De sætter pile mellem programmets enkeltdele. Eleverne skriver “psudokode” ind i flowchartet f.eks:
Sæt Antal forsøg til 0. Hvis adgangskode = forkert, ændr Antal forsøg med 1.
Når flowchartet er færdigt, omsætter eleverne det til kode i Scratch og tester, at deres password-algoritme altid vil virke. Hvis der er fejl - eller den kan omgås af deres klassekammerater - skal den optimeres indtil de har en fejlfri algoritme.
Evaluere
Evaluering handler om at eleverne kan vurdere og teste egne eller andres løsningsforslag eller kode/algoritme.
Eksempel: Designproces
Klassen laver brugertest af deres prototyper med elever i 4.klasse. De har formodninger om, hvordan brugerne vil anvende deres løsning og har designet et testscenarie, så de kan be- eller afkræfte udvalgte funktioner.
På baggrund af brugernes feedback justeres og optimeres prototypen. Eventuelle fejl udbedres.
Eksempel: Programmering
Eleverne har lavet en lydmåler i Scratch, der skal holde øje med lydniveauet i klasseværelset.
Eleverne tester og optimere deres kode, ved at slå visning af en variabel til, så de kan se støjniveauet som en talværdi i realtid. Først simulerer de selv støj og bagefter sætter de deres program op i et rigtigt klasselokale. Eleverne vurderer, at deres idé er god og virker, men at det kræver mere professionelt lydudstyr hvis lærerne ikke skal blive irriteret på deres løsning.
Logik
Logik handler om at kunne forudsige og analysere.
Eksempel: Designproces
Eleverne kortlægger et problemfelt i forbindelse med kommunens affaldshåndtering og borgernes oplevelse af denne.
Eleverne har mange gode idéer til løsning af et afgrænset delelementer i problemfeltet, men kan gennem logiske følgeslutninger, forudse at deres løsning på et problem, blot skaber et andet problem et andet sted. De forudser på den måde følgevirkninger af deres idé, og bestemmer sig for at gå videre med den idé, der umiddelbart er til gavn for alle.
Eksempel: Programmering
Eleverne remixer et Scratch program andre har lavet. De har først brug for at forstå programmet til bunds.
Derfor analyserer de sig sekventielt (trin-for-trin) igennem koden og fortæller mundtligt undervejs hvad programmet gør. Ved udfordringer skiller de programmet ad, tester enkeltdelen, og samler det igen.
Når eleverne er færdige, har de en meget præcis forudsigelse af, hvad programmet gør - og de er klar til at indbygge nye forbedrede funktioner.
Computationel tankegang i faghæftet ligner ved første øjekast ikke den gængse forståelse af computationel tankegang, som præsenteret ovenfor. Derfor kan dette kompetenceområde være vanskeligt både at forstå og omsætte didaktisk. Derfor har vi lavet en ultrakort oversættelse og vist hvordan computationel tankegang, som præsenteret ovenfor, kommer i spil.
I faghæftet består computationel tankegang af fire færdigheds/vidensområder:
Data
Algoritmer
Strukturering
Modellering
I slideshowet nedenfor kan du se vores udlægning/beskrivelse af, hvad eleverne skal lære, nogle korte forklaringer på hvert færdigheds/vidensområde og en perspektivering til den udbredte forståelse af computationel tankegang.
I et særligt teknologiforståelsesperspektiv er formålet med CT, at eleverne lærer at arbejde med problemer eller udfordringer med afsæt i den virkelige verden. CT strategierne skal støtte eleverne i at analysere, udvælge, beskrive, modellere og omsætte elementer fra deres omverden til en digital løsning. De logiske, analytiske og systematiske tangegange, der kendetegner CT strategierne, er et afgørende værktøj for at omsætte løsningen til kode, der kan udføres af en computer.
Når man modellere elementer fra omverdenen digitalt, kalder det naturligt på refleksion over begrænsninger, muligheder og konsekvenser og netop dette er et vigtigt fokuspunkt løbende at få italesat sammen med eleverne. På den måde opøver eleverne kompetence i at forholde sig kritisk og reflekteret til digital teknologis potentialer, faldgruber og begrænsninger.
Vi anbefaler, at man hænger ovenstående plakat (Den computationelle tænker) op i klassen og inddrager de seks strategier løbende og konsekvent i alle undersøgelses- og problembaserede aktiviteter - herunder selvfølgelig i programmeringsaktiviteter. Det er væsentligt, at eleverne bliver gjort opmærksomme på strategiernes potentiale, og på hvordan det kan hjælpe dem videre både ift. programmering og designproces.
Flowcharts og Pseudokode: LINK
Video om pseudokode: LINK
Video om Flowcharts: LINK
Software til Flowcharts: https://app.diagrams.net/
Computing unplugged / algoritmisk tænkning: