Programmering och datalogiskt tänkande i grundskolan Fredrik Heintz Institutionen för Datavetenskap Linköpings universitet fredrik.heintz@liu.se @FredrikHeintz
< < Weak human + machine + superior process was greater than a strong computer and, remarkably, greater than a strong human + machine with inferior process. Garry Kasparov
Digitalisering förändrar allt! Mjukvara äter världen Den digitala och den analoga världen vävs samman Mer komplexa problem Helt nya affärsmodeller Nya sätt att jobba Datorerna löser allt fler problemen åt oss (automatisering) Vi måste lösa problem tillsammans med datorer!
Digital kompetens Datalogiskt tänkande
Digital kompetens EU DigComp 2.0 Information and data literacy Communication and collaboration Digital content creation Safety Problem solving Skolverket: Använda och förstå digitala system och tjänster. Förhålla sig till medier och information på ett kritiskt och ansvarsfyllt sätt. Lösa problem och omsätta idéer i handling på ett kreativt sätt med användning av digital teknik.
Datalogiskt tänkande Computational Thinking Data + logik + tänkande En problemlösningprocess för att beskriva, analysera och lösa problem på ett sätt så att datorer kan hjälpa till med tekniker från datavetenskap: Ge detaljerade instruktioner Bryta ner problem i delar Hitta mönster Skapa abstraktioner Designa algoritmer
Datalogiskt tänkande i geometrin, månghörningar Bryta ner, hitta mönster, generalisera, skapa algoritm
Datalogiskt tänkande Dessa färdigheter stöds och förstärks genom ett antal inställningar och attityder som är centrala dimensioner av datalogiskt tänkande. Dessa inkluderar: Vana vid att hantera komplexitet Uthållighet vid arbete med svåra/stora problem Tolerans för tvetydighet/osäkerhet Förmåga att hantera öppna problemställningar Förmåga att kommunicera och samarbeta med andra för att komma fram till en gemensam lösning Problemlösning, kritiskt tänkande, samarbete, kreativitet, kommunikation kombinerat med datorkraft
bebras.se databavern.se
Vilken affär säljer Kattis klänning? A B C D
A B C D
Det finns två sorters tunnlar i bäverlandet. När bävrarna en efter en går igenom en svart tunnel kommer de ut i omvänd ordning jämfört med den ordning de gick in i. När de går in efter varandra i en vit tunnel byter istället bara den första och den sista bävern plats. A B C D
Programmeringens roll
Programmering är en process 1. Analysera problemet 2. Utvärdera olika lösningsmodeller 3. Designa en lösning 4. Skriv programkoden ( koda ) 5. Testa programmet 6. Debugga programmet
Hur funkar en dator? Minne sparar både data och program Utdataenhet data till omvärlden Processor bearbetar data enligt program Läs & Skriv Indataenhet data från omvärlden
Vad finns i datorn? Heltal och endast heltal!
Uppdelning: data / instruktioner Heltal används för att representera data: bokstäver, bilder, musik, filmer, etc Heltal används för att representera instruktioner (program) som anger vad datorn ska göra: addera, multiplicera, visa på skärmen, etc Datorn hjälper till att översätta (för människor) mer lättbegripliga instruktioner till rätt siffror I datorns minne finns BÅDE data OCH instruktioner
Data och program är ettor och nollor Minne med data och program som ettor och nollor Processor bearbetar ettor och nollor 0001010010010 0101001010010 1001010010100 1010111110100 1110100110101 1111000010101 Läs & Skriv CPU Central Processor Unit 0 -> 00000000 1 -> 00000001 2 -> 00000010 3 -> 00000011 4 -> 00000100 5 -> 00000101... A -> 01000001 B -> 01000010 C -> 01000011... Utdata Indata
Vad är ett program? En detaljerad instruktion som om man följer den ger ett visst resultat.
Vad är ett program? En detaljerad instruktion som om man följer den ger ett visst resultat.
Vad är programmering? Att programmera är att bestämma vad datorn ska kunna göra. Ett program innehåller koder som datorn kan förstå. Koderna innehåller instruktioner som datorn kan utföra och data (information) som datorn kan använda när den utför sina instruktioner. Ett program är datorns recept När man gör nya program bygger man på färdiga delprogram som byggblock till nya program
Programflöde
Abstraktion
Vad är programmering? Givet ett problem som jag vill att datorn ska lösa, hur ska jag beskriva det för datorn?
Programmering tränar upp det datalogiska tänkandet
Programmering skapar förståelse för den digitala världen
Programmering låter dig ta kontroll över datorn
Programmeringens roll? Programmering är ett pedagogiskt verktyg! Levandegör och konkretiserar Inte bara ett svar utforska själv, vad händer? Kan integreras i olika ämnen På för- och grundskolenivå är programmering ett medel för att träna upp digital kompetens och datalogiskt tänkande, inte ett mål i sig. På gymnasiet bör programmering och datavetenskap vara egna ämnen med specialutbildade lärare.
Datavetenskap
Datavetenskapliga naturlagar Problem kan analyseras och det går att bevisa vad som är den mest effektiva möjliga lösningen. Valet av abstraktion påverkar effektiviteten.
Datavetenskapliga naturlagar forts. Det finns (oändligt många) problem som inte går att lösa, de är oavgörbara! Exempel: Det går inte att skriva ett program som tar ett annat program som indata och avgör om det kommer avslutas eller ej. Church-Turings tes säger att allt som går att beräknas, över huvud taget, går att beräknas av Turingmaskin (dator).
Stora idéer inom datavetenskap 1. Kreativitet. Datavetenskap är en kreativ aktivitet. 2. Abstraktion reducerar information och detaljnivå för att belysa fokus och relevanta begrepp. 3. Data och information möjliggör kunskapsskapande. 4. Algoritmer används för att utveckla och uttrycka lösningar till datalogiska problem. 5. Programmering möjliggör problemlösning, mänskligt uttryck och skapande av kunskap. 6. Internet genomsyrar modern datavetenskap. 7. Global påverkan. Datavetenskap har global påverkan.
A Framework for K-12 Computer Science Education (USA)
A Framework for K-12 Computer Science Education (USA)
Programmering i den nya läroplanen
Förändringar i nya läroplanen att programmering införs som ett tydligt inslag i flera olika ämnen i grundskolan, framför allt i teknik och matematik att eleverna blir stärkta i sin källkritiska förmåga att eleverna ska kunna lösa problem och omsätta idéer i handling på ett kreativt sätt med användning av digital teknik att eleverna ska arbeta med digitala texter, medier och verktyg att eleverna ska använda och förstå digitala system och tjänster att eleverna ska utveckla en förståelse för digitaliseringens påverkan på individ och samhälle
Läroplansförslag, matematik Ur centralt innehåll årskurs 1-3: Hur entydiga stegvisa instruktioner kan konstrueras, beskrivas och följas som grund för programmering. Symbolers användning vid stegvisa instruktioner. Ur centralt innehåll årskurs 4-6: Hur algoritmer kan skapas och användas vid programmering. Programmering i visuella programmeringsmiljöer. Ur centralt innehåll årskurs 7-9: Hur algoritmer kan skapas och användas vid programmering. Programmering i olika programmeringsmiljöer. Hur algoritmer kan skapas, testas och förbättras vid programmering för matematisk problemlösning.
Läroplansförslag, teknik Ur centralt innehåll årskurs 1-3: Vad datorer används till och några av datorns grundläggande delar för inmatning, utmatning och lagring av information, till exempel tangenter, skärm och hårddisk. Några vanliga föremål som styrs av datorer. Att styra föremål med programmering. Ur centralt innehåll årskurs 4-6: Några av datorns delar och deras funktioner, till exempel processor och arbetsminne. Hur datorer styrs av program och kan kopplas samman i nätverk. Att styra egna konstruktioner eller andra föremål med programmering. Ur centralt innehåll årskurs 7-9: Tekniska lösningar för styrning och reglering av system. Hur mekanisk och digital teknik samverkar, till exempel i värme- och ventilationssystem. Egna konstruktioner där man tillämpar styrning och reglering, bland annat med hjälp av programmering.
Datalogiskt Tänkande för Alla Mål: Förstå processen av att införa datalogiskt tänkande för alla i grundskolan samt att ta fram praktiska lösningar som gör det möjligt för alla elever i en kommun att lära sig grunderna inom datalogiskt tänkande och genom återkommande aktiviteter ges möjlighet att utveckla färdigheter inom datalogiskt tänkande. Viktiga frågor: Hur kan arbetet i en kommun organiseras för att underlätta för lärarna och säkerställa att alla elever får chansen att utveckla sitt datalogiska tänkande? Vilken typ av kompetensutveckling och stöd behöver lärare i olika faser? Vad är lärares och elevers attityder till datalogiskt tänkande? Aktiviteter: Kompetensutveckling för lärare Lärare genomför Databävern och Hour of Code med eleverna Framtagning av Introduktionspaket till Datalogiskt Tänkande
Intropaket Datalogiskt Tänkande: Översikt Datalogiskt tänkande kan ses som en uppsättning koncept och attityder Koncept: Steg-för-steg instruktioner, eller hur en dator fungerar Känna igen och hitta mönster Bryta ner problem i mindre delar Abstraktion och representation Algoritmer och programmering Attityder: Hanterar komplexitet Hanterar tvetydighet och öppna problem Anpassar lösningar till nya situationer Utvärderar mina och andras lösningar Experimenterar och felsöker Håller ut Kommunicerar och samarbetar
Intropaket Datalogiskt Tänkande: Övergripande lärandemål Målsättningen är att eleven efter introduktionspaketet ska känna till att en dator utför saker steg-för-steg ha erfarenhet av att arbeta med olika typer av problem, där hen har haft nytta av, eller utvecklat, de koncept och attityder som hör till datalogiskt tänkande känna igen datalogiskt tänkande som en problemlösningsprocess för att lösa problem tillsammans / med hjälp av datorer, som baserar sig på en uppsättning koncept och attityder utvärdera sin egen nivå av datalogiskt tänkande Lärandemålen bör naturligtvis anpassas till elevens ålder.
Steg-för-steg instruktioner Syfte Förstå hur en dator utför entydiga stegvisa instruktioner Poänger Det är svårt att vara exakt Ordning är viktigt
Steg-för-steg instruktioner exempel
Känna igen och hitta mönster Syfte Att känna igen givna mönster, att avgöra om något uppfyller ett mönster samt att hitta nya mönster. Poänger Att känna igen ett mönster är inte samma sak som att hitta ett nytt mönster. Detta är grunden för att hitta abstraktioner och lösa problem.
Känna igen och hitta mönster exempel
Bryta ner problem i mindre delar Syfte Förstå hur man kan lösa ett problem genom att dela upp det i mindre delar, lösa varje del skilt för sig och sedan sätta samman ett svar utifrån delsvaren Poänger Ett problem består av mindre beståndsdelar. Genom att dela upp problemet i mindre delar blir det mer hanterbart. Det är lättare att identifiera mönster och sådant man sett tidigare om helheten man behöver beakta är mindre.
Bryta ner problem i mindre delar exempel
Abstraktion och representation Syfte Abstraktion handlar om att lyfta fram det som är viktigt och dölja sådant som är mindre viktigt. En dator arbetar endast med heltal, alltså måste en dator representera allt som siffror. Poänger Vad som är viktigt varierar för olika uppgifter. Samma sak kan representeras på många olika sätt, vart och ett med sina fördelar och nackdelar. Internt i datorn representeras allt text, bild, ljud, video etc som siffror. Samma representation kan användas för flera olika saker.
Abstraktion och representation exempel
Algoritmer och programmering Syfte En algoritm är en steg-för-steg-beskrivning för att lösa en vis typ av problem. Poänger Det kan finnas flera algoritmer för att lösa samma problem, där de olika varianterna skiljer sig från varandra på olika sätt, t.ex. baserat på antalet instruktioner eller effektivitet. Olika konstruktioner (såsom alternativ och repetition) kan användas för att t.ex. göra programkod enklare att läsa/förstå och effektivare.
Algoritmer och programmering exempel
HB: Handbok (http://datalogiskttankande.se/handbok/dt-handbok-a4.pdf) B/C/J/Mxx: Databävern Benjamin/Cadet/Junior/Mini år xx (http://bebras.se)
Attityder var ligger jag/eleven? En modell baserad på arbete med Computing i England gör det möjligt för både elever och lärare att svara på frågan Hur bra är jag/eleven på att Hantera komplexitet? Hantera tvetydighet och öppna problem? Anpassa mina lösningar till nya situationer? Utvärdera mina och andras lösningar? Experimentera och felsöka mina lösningar? Visa uthållighet då det behövs? Kommunicera och samarbeta?
Baserat på arbete av Phil Bagge, Mark Dorling och Thomas Stephens (code-it.co.uk/attitudes). Komplexitet Tvetydighet Jag kan dela upp svåra problem i mindre delar. Jag inser att det finns fler än ett sätt att lösa ett problem. Jag kan upptäcka /koncentrera mig på de viktigaste delarna av ett problem. Jag inser att det finns fler än ett sätt att beskriva ett problem. Jag kan förklara hur jag delat upp ett problem i mindre delar och arbetat med abstraktioner. Jag kan förklara hur jag hanterat tvetydighet. Öppna problem Jag söker efter en uppsättning lösningar till samma problem. Jag accepterar inte den första lösningen rakt av. Jag kan förklara hur ett projekt kan utvidgas. Anpassa Jag kan anpassa idéer för att lösa nya problem. Jag kan identifiera mönster, problem och lösningar. Jag kan förklara hur jag anpassat en lösning för att lösa ett nytt problem. Utvärdera Jag kan utvärdera min lösning gentemot en uppsättning kriterier. Jag kan designa kriterier för att utvärdera det jag skapat. Jag kan förklara hur utvärdering hjälpt mig förbättra ett projekt. Experimentera och felsök Jag kan utveckla, testa och felsöka ett projekt tills det är klart. Jag experimenterar upprepade gånger genom att skapa, testa och felsöka. Jag kan förklara hur den iterativa cykeln förbättrat mitt arbete. Uthållighet Jag håller ut även då lösningen inte är självklar. Jag lär mig av mina motgångar och låter dem inte stoppa mig. Jag kan förklara hur jag övervunnit mina problem. Kommunikation och samarbete Jag bidrar med användbara idéer till min partner/grupp. Jag kan uppmuntra andra att dela sina idéer. Jag kan leda min grupp och utnyttja all talang i den. Bryta ner i delar Abstrahera Generalisera Evaluera Algoritmer / programmera
Programmering i teknik och matematik
Programmering i Teknik
micro:bit
Att programmera micro:bit
micro:bit http://microbit.org/en/2017-03-07-javascript-block-resources/
Programmering i matematik Ur centralt innehåll årskurs 1-3: Hur entydiga stegvisa instruktioner kan konstrueras, beskrivas och följas som grund för programmering. Symbolers användning vid stegvisa instruktioner. Ur centralt innehåll årskurs 4-6: Hur algoritmer kan skapas och användas vid programmering. Programmering i visuella programmeringsmiljöer. Ur centralt innehåll årskurs 7-9: Hur algoritmer kan skapas och användas vid programmering. Programmering i olika programmeringsmiljöer. Hur algoritmer kan skapas, testas och förbättras vid programmering för matematisk problemlösning.
Koordinater och koordinatsystem Avstånd, vinklar
Geometri
Funktioner
Matematik Åk 7-9 Algebra Hur mönster i talföljder och geometriska mönster kan konstrueras, beskrivas och uttryckas generellt. Hur algoritmer kan skapas och användas vid programmering. Programmering i olika programmeringsmiljöer. Geometri Avbildning och konstruktion av geometriska objekt, såväl med som utan digitala verktyg. Skala vid förminskning och förstoring av två- och tredimensionella objekt. Sannolikhet och statistik Tabeller, diagram och grafer samt hur de kan tolkas och användas för att beskriva resultat av egna och andras undersökningar, såväl med som utan digitala verktyg. Hur lägesmått och spridningsmått kan användas för bedömning av resultat vid statistiska undersökningar. Bedömningar av risker och chanser utifrån datorsimuleringar och statistiskt material. Samband och förändring Funktioner och räta linjens ekvation. Hur funktioner kan användas för att, såväl med som utan digitala verktyg, undersöka förändring, förändringstakt och samband. Problemlösning Hur algoritmer kan skapas, testas och förbättras vid programmering för matematisk problemlösning.
Sannolikhet, chans och risk Skriv ett program som simulerar singla slant. Hur ofta ska det bli krona, för att krona-spelaren ska vinna dubbelt så mycket som klave-spelaren? Hur ändras detta när den som vinner x gånger i rad får x kronor av den andra, dvs om krona-spelaren vinner för tredje gången i rad så får hon 3 kronor av klave-spelaren (för den omgången)? Skriv ett program som simulerar en eller flera tärningar. Använd programmet för att räkna ut sannolikheten för de olika kombinationerna i Yatzy.
Tabeller, diagram och grafer Rita ut en graf av en funktion/matematiskt uttryck Använd graf-funktionen för att rita ut förhållandet mellan area och omkrets för en cirkel när radien ökar. När skär de varandra? Enkla operationer på sekvenser av tal Min och max Medelvärde Median Gör en tabell med värden med statistisk information (kanske avvikelse från medelvärdet eller plats i ordningen)
Ytterligare möjligheter Databävern / Bebras (http://bebras.se) en lättsam tävling i datalogiskt tänkande som inte kräver förkunskaper för åk 2 till gymnasiet. Tidigare uppgifter finns tillgängliga för att användas i undervisning eller för träning. Project Euler (http://projecteuler.net/) lösa matematiska problem ofta med programmering Programmeringsolympiaden (http://www.progolymp.se) tävling i algoritmisk problemlösning och datalogiskt tänkande främst för gymnasiet. Alla kan vara med i kvalet. Kattis (http://open.kattis.com/) träna på algoritmisk problemlösning och datalogiskt tänkande med väldesignade uppgifter med automatisk rättning. Stor katalog av uppgifter med olika svårighetsgrad.
Avslutning
Programmeringen som pedagogiskt verktyg Levandegör och konkretiserar Inte bara ett svar utforska själv, vad händer? Kan integreras i olika ämnen
Vad ska eleverna kunna efter åk 3 Följa stegvisa instruktioner både analogt, t.ex. muntligt eller via symboler som pilar och digitalt, t.ex. följa instruktionerna i ett blockprogram för att säga vad det gör Skapa stegvisa instruktioner både analogt och digitalt, t.ex. genom att bryta ner problem i mindre delar, hitta mönster och generalisera Enkel blockprogrammering i Scratch Jr motsvarande nivå 1 på code.org Programmerat något föremål tex Bee-Bots Ge exempel på användningsområden för datorer Grundläggande begrepp kopplat till datorer och programmering
Vad ska eleverna kunna efter åk 6 Grunderna i programmering, sekvens, alternativ, repetition, motsvarande nivå 3 i code.org Skapa program som består av flera funktioner eller händelser Blockprogrammering i Scratch för att skapa enkla program som spel, animationer och simuleringar Se samband mellan matematik och programmering Grundläggande förståelse för vad en algoritm är Kunna skapa enkla algoritmer för matematisk problemlösning
Vad ska eleverna kunna efter åk 9 Ha förståelse för hur algoritmer fungerar. Förståelse för den digitala värld vi befinner oss i. De ska provat på textbaserad programmering. Förståelse för kopplingen mellan blockprogrammering och textprogrammering (t ex playground), att det är samma konstruktioner fast utryckta på olika sätt. De ska ha använt program som Excel, Numbers för att bearbeta statistisk data. De har använt grafritare eller andra program där de kan undersöka grafer. Eleverna ska kunna skriva enkla program på egen hand. Eleverna ska ha prövat på att programmera där det finns en slutprodukt.
Budskap Mjukvara äter världen! Den digitala och den analoga världen vävs samman. AI och ökad automatisering kräver att vi måste lösa problem tillsammans med datorer. Digital kompetens är förmågan att effektivt och säkert hantera en digital värld. Datalogiskt tänkande är en uppsättning generella färdigheter och attityder för att lösa program tillsammans med datorer som är viktiga för alla. Datavetenskap är mer än bara datorer och programmering. Regeringen har beslutat att programmering införs i matematik och teknik. Kom igång! Skala upp! Börja i liten skala med ambassadörer som kan sprida det vidare Skapa en organisation som stöttar lärare och underlättar likvärdighet Kollegialt lärande, lokalt och nationellt Lär tillsammans med eleverna! Beforska och Bepröva! Den viktigaste framgångsfaktorn är kompetensutveckling av lärare och skolledare!
Programmering och datalogiskt tänkande i grundskolan Fredrik Heintz Institutionen för Datavetenskap Linköpings universitet fredrik.heintz@liu.se @FredrikHeintz
Verktyg
Scratch Jr
Hour of Code (http://code.org/learn)
Appar och Verktyg för Programmering ipad appar Lightbot Kodable Fix the Factory Cargo-bot Scratch Jr Kodboken (http://kodboken.se) Barnhack (http://www.iis.se/fakta/barnhack/) Snap! (http://snap.berkeley.edu)/scratch (http://scratch.mit.edu) Kojo (http://cs.lth.se/bjornregnell/programmera) Spel i HTML5 + JavaScript (http://spelprogrammering.nu/) Grafik i JavaScript (http://www.crunchzilla.com/) CodeAcademy (http://www.codecademy.com) Project Euler (http://projecteuler.net)