Digitalt lärande och programmering i klassrummet
Innehåll Programmering Vad är programmering och varför behövs det? Argument för (och emot) programmering Kort introduktion om programmering Några grundbegrepp Skillnader och likheter med olika verktyg Datalogiskt perspektiv - hur lär man sig programmera? Vad kräver programmering? Vad är det som eleverna egentligen ska lära sig?
Programmering, JA! Programmering tränar logik och analytisk förmåga samt problemlösning. Allmännyttiga färdigheter som ingår i alla ämnen! Att växa upp omringad av digital teknik innebär inte att eleverna lär sig förstå hur den fungerar. Hjälp eleverna ta steget från konsument till producent. Ta vara på elevernas intresse för teknik: arbeta med projektformer som känns relevanta. Ge flera elever chansen att vara bra! Ge eleverna bättre förutsättningar att förstå och kritiskt analysera olika digitala medier. Visa på nya yrkeskategorier och på vilka färdigheter det kräver att, till exempel, bli spelutvecklare.
När kan man börja? Hur tidigt som helst! Bli producent diret, inte bara konsument. BeeBot & BlueBot, Daisy the Dinosaur, Scratch Jr fungerar från förskoleålder Var inte för ambitiös. En liten insats kan ha stor inverkan Argument för att böra så tidigt som möjligt: Unga barn (upp till 8-10 år) har ännu relativt homogena datorvanor -> enklare grupper att hantera. Nästan alla använder datorer, de flesta för att spela. -> gemensam nämnare för nästan hela klassen.
Spelprogrammering Varför arbeta med spel? Brett innehåll: Konkretisera och utforska innebörden av begrepp inom olika skolämnen. Lätt att variera samma struktur med olika tema -> repetition utan att det blir tråkigt. Använder naturligt både bild och ljud. Tar vara på elevernas kreativitet och skaparglädje. Projekten har hög personlig relevans - coolt att kunna. Bekant material för eleverna - färdig koppling till abstrakta begrepp.
Kort introduktion till programmering - grundbegrepp och terminologi
Olika verktyg
Gemensam struktur Program består av instruktioner givna i en bestämd form = syntax. Programmeringssyntax varierar från språk till språk men strukturen är ofta väldigt lika: Program består av satser i en viss ordningsföljd handlingar/instruktioner/ kommandon. Programmet följer vanligtvis instruktionerna en i gången. Varje sats ger instruktioner om en viss sak: Vad datorn ska göra. Hur datorn ska veta vilka uppgifter den ska göra. Behandling av data.
Programmeringsspråk
Programmeringsspråk? Maskinkod består av nollor och ettor. Verkligheten vi vill beskriva består av något annat. Högnivåspråk = språk som är skrivna för människor. Programmeringsspråk måste översättas innan datorn kan utföra instruktionerna. Tolkning, assemblering, kompilering: beskriver översättningsprocessen Binärfil, maskinkod, kompilerad kod: beskriver det som datorn kan läsa Ofta ingår flera steg: Scratch -> Flash -> ActionScript -> maskinkod
Abstraktion Det handlar om att dölja de tekniska detaljerna bakom händelser: Hur räknar man ut kvadratroten av ett tal? Hur sorterar man en namnlista i alfabetisk ordning? Hur ritar vi Scratch-katten på skärmen? Det behöver vi inte bry oss om!
Data
Data Syftet med program är att styra processer och information, alltså hantera data. Genom att inspektera data från interna och externa processer får vi också veta hur arbetet går och vilket läge programmet befinner sig i. Hur data används och hur den ska hanteras beror på vilken sorts data det är: Tal (finns olika sorter: heltal, små och stora decimaltal, osv.) String (lagrar text: ord, meningar, bokstäver) Boolesk datatyp (lagrar: sant eller falskt, 1 eller 0) Variabler är vårt sätt att hantera data, som små minneslappar.
Vad datorn ska göra Ett enda handlingsförlopp: beskriv allting steg för steg. Slingor är framför allt ett sätt att skriva tydligare och kortare kod.
Hur vet datorn vad den ska göra? Alternativa handlingsförlopp behövs för att hantera situationer som till exempel: Inte är fullt kända på förhand. Förändras under tiden att vi utför uppgiften (till exempel för att vår kod påverkar den). Vi behöver kunna beskriva hur vi väljer mellan olika handlingsförlopp. Med hjälp av villkorssatser och sensorer (=data) kan vi känna av situationen och agera på ett ändamålsenligt sätt.
Villkor Gul och grön? JA! Ett sätt att formulera frågor till datorn Svaret måste alltid vara ja eller nej för datorn måste kunna fatta beslut utifrån det Gul? JA! Grön? JA! Står det ett hinder framför roboten? JA -> dansa twist Kolliderade vi just med en haj? NEJ -> simma vidare Är x > 100? JA -> göm sprajten
Övning
Programmeringskompetens
Programmeringskompetens förmågor + färdigheter + attityder
Programmeringskompetens Analys och problemlösning + Att kunna formulera sig exakt + Att våga experimentera och utforska
Förmågor: analys och problemlösning Att spjälka upp uppgifter i mindre delsteg. Att kunna tänka igenom alternativa händelseförlopp. Att definiera vad som kännetecknar olika situationer.
Att kunna formulera sig med hjälp av programkod Program är instruktioner till datorn och att programmera är att formulera instruktioner. Det kluriga: man måste beskriva exakt hur saker skall utföras. Hur man beskriver händelser steg för steg Hur man utför en uppgift med en viss uppsättning verktyg. Hur man beskriver förväntade resultat på ett tillräckligt specifikt sätt så de går att verifiera.
Våga experimentera och utforska Attityder är minst lika viktiga som teoretisk kunskap och färdigheter. Programmering är en kreativ process: Man måste våga experimentera. Jag vill göra själv. Se problem som utmaningar. Arbeta iterativt för att utveckla lösningar.
Vad lönar det sig att göra med datorer? Datorn är bra på: Att lösa väldefinierade problem: logik Räknar bra Slarvar inte och jobbar supersnabbt Kan göra många saker samtidigt Människan är bra på: Att hantera ofullständig data Att tolka omgivningen Kan reflektera över sitt eget arbete Lär sig hela tiden Otroligt kreativ
Att utvärdera lösningar Naturvetenskaplig kunskap handlar om hur saker är. Man kan ha rätt och man kan ha fel. Inom designvetenskap (som programmering ingår i) handlar kunskap istället om hur man gör för att åstadkomma ett visst resultat utifrån en given utgångssituation. Inte rätt eller fel utan snarare bra eller mindre bra lösningar. Värderingsfråga vilken sorts lösningar som är eftertraktade.
Summering Programmering är att formulera instruktioner som beskriver: Vad datorn ska göra. Hur datorn ska veta vilka uppgifter den ska göra. Behandling av data. Programmeringskompetens handlar alltså om: Förmågan att analysera problem Färdigheter att formulera lösningar Attityder till att arbeta iterativt och testa sig fram Fokus på undervisningen kan ligga på ett, eller flera av dessa områden.