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 • 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 • 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 Gul och grön? JA! Gul? JA! Grön? JA! Ö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.