IT OCH PROGRAMMERING I SKOLAN Jan Erik Moström Peter Vinnervik
VILKA ÄR VI OCH VAD KOMMER VI ATT PRATA OM? Jan Erik Moström - undervisar på institutionen för datavetenskap Peter Vinnervik - doktorand vid institutionen för naturvetenskapens och matematikens didaktik (NMD) BAKGRUND PROGRAMMERING BEGREPP
BAKGRUND
FÖRTYDLIGANDEN OCH FÖRSTÄRKNINGAR I STYRDOKUMENTEN 2017-03-09 För att tydliggöra skolans uppdrag att stärka elevernas digitala kompetens Motiv Digital kompetens handlar om att förstå hur digitaliseringen påverkar samhälle och individ kunna använda och förstå verktyg och medier ha ett kritiskt och ansvarsfull förhållningssätt till digital teknik kunna lösa problem och omsätta idéer i handling på ett kreativt sätt med användning av digital teknik I paketet omkring digital kompetens ingår programmering i framförallt matematik och teknik men även i samhällskunskap Utrymme lämnas även i t ex slöjd, svenska, musik
NATIONELL DIGITALISERINGSSTRATEGI 2017-10-19 Digital kompetens är i grunden en demokratifråga. Alla barn och elever behöver få förståelse för hur digitaliseringen påverkar världen och våra liv, hur programmering styr såväl det informationsflöde vi nås av som de verktyg vi använder, liksom att få kunskap om hur tekniken fungerar för att själv kunna tillämpa den. Målet för regeringen är att Sverige ska vara bäst i världen på att använda digitaliseringens möjligheter.
Lgr 80 Datalära förs in med liknande argument som för dagens digitalisering Initialt utan krav på datorer - Undervisning om datorer Programmering: formulering och strukturering av problemet är väsentligare än själva kodningsmomentet Integrerat i Ma och SO (ca 20h totalt) 1984/85: 2 stadieveckotimmar på högstadiet, gärna integrerat 90-tal: Förändring mot IKT och att lära med datorer
LGR 11 REV 2017 - MATEMATIK ges möjligheter att utveckla kunskaper i att använda digitala verktyg och programmering för att kunna undersöka problemställningar och matematiska begrepp, göra beräkningar och för att presentera och tolka data Algebra Hur entydiga stegvisa instruktioner kan konstrueras, beskrivas och följas som grund för programmering (1-3) Hur algoritmer kan skapas och användas vid programmering. Programmering i visuella (4-6)/olika (7-9) programmeringsmiljöer Hur algoritmer kan skapas, testas och förbättras vid programmering för matematisk problemlösning (7-9)
LGR11 REV 2017 - TEKNIK Arbetssätt för utveckling av tekniska lösningar Att styra föremål med programmering (1-3) Att styra egna konstruktioner eller andra föremål med programmering (4-6) Egna konstruktioner där man tillämpar styrning och reglering, bland annat med hjälp av programmering (7-9) Tekniska lösningar Tekniska lösningar som utnyttjar elektronik och hur de kan programmeras (7-9)
FLER ÄMNEN Samhällskunskap hur information i digitala medier kan styras av bakomliggande programmering Slöjd Hur material kan kombineras med digital teknik Svenska Instruerande texter, till exempel spelinstruktioner och arbetsbeskrivningar Hur de kan organiseras i steg, med logisk ordning och punktuppställning i flera led Texter i digitala miljöer, till exempel texter med länkar och andra interaktiva funktioner
PÅ GÅNG Lärarfortbildning Lärarlyft Universitetskurser Lärarutbildning? Stadieindelad timplan på förslag (fr 2018) Mer tid i matematik (1230 h) Teknikämnet har hamnat i kläm (Skolinspektionen, 2014) Nytt förslag - 200 h (47-65-88)
PROGRAMMERING
PROGRAMMERING Vad menar vi med detta? Slarvigt uttryck som kan jämställas med begrepp som t.ex. Systemutveckling Programutveckling Programvarutveckling Eller en väldigt specifik del: implementation
En önskan om ett system Vad är problemet?? Förstå problemet Lösa problemet Skapa en plan för att realisera lösningen Verifiera lösningen Implementera lösningen
VAD ÄR ETT PROGRAMSPRÅK Ofta: gör först detta, sedan så, sedan det där, osv Ett programspråk är en notation som en dator kan översätta till kommandon. Denna notation används för att uttrycka idéer för hur ett problem ska lösas
DET FINNS MÅNGA PROGRAMSPRÅK En stor mängd olika programspråk - är olika bra på att lösa olika saker. Familjer av programspråk (indelningen kan diskuteras) Imperativa Funktionella Objektorienterade Logikspråk Vanligast idag är imperativa och objektorienterade, ibland en kombination av dessa.
Oftast en kombination av imperativa och objektorienterade programspråk VISUELL PROGRAMMERING
PROBLEMLÖSNING
PROBLEMLÖSNING Den största svårigheten är problemlösningsfasen Programmering = praktisk problemlösning (??) Klassisk strategi: söndra och härska Avspeglar sig i programspråkens uppbyggnad Kräver övning - jmf matematik
BEGREPP
BYGGDELAR I de flesta programspråk så byggs programmen upp av ett begränsat antal byggblock Variabler Tilldelning Operationer Snurror (loopar) Val Funktioner Klasser
VARIABLER OCH TILLDELNINGAR Modell som gäller för många men inte alla programspråk
OPERATIONER + - * / ^ plus en massa andra
SNURROR Upprepa X gånger Instruktioner som ska upprepas for-loop Instruktioner som ska upprepas Upprepa så länge villkor är sant Instruktioner som ska upprepas while-loop
VAL Villkor Instruktioner som ska utföras om villkoret är SANT if-sats Instruktioner som ska utföras om villkoret är FALSKT
FUNKTIONER Jämför med matematiska funktioner, t.ex. sinus En sinus-funktion innehåller de instruktioner som behövs för att räkna ut sinus för ett värde. Parametrar Resultat
FUNKTIONER Fördel - höjer abstraktionsgraden Fördel - återvinna kod Kan inte komma på någon nackdel
KLASSER OCH OBJEKT Imperativa språk: en person representeras av information, t.ex. vilket år personen är född. Det innebär för att få reda hur gammal personen är måsta jag räkna ut det. Objektorienterade språk: en person representeras av både information och beteende. Det innebär att personen vet födelseåret och jag kan fråga personen om åldern
KLASSER OCH OBJEKT Klass - beskriver innehåll och beteende Objekt - det som skapas baserat på beskrivningen
ANDRA BEGREPP
ANDRA BEGREPP Algoritmer Editor Kompilator IDE
ALGORITMER I detta fall - beskriver hur man ska göra för att lösa ett problem på ett visst sätt Har ofta stor betydelse för effektivt ett program är. Exempel OSV
EDITOR ELLER TEXTEDITOR Inte samma sak som en ordbehandlare, t.ex. Word Hanterar bara text, ingen formatering Ett program skrivs traditionellt i textfiler som innehåller bara text ingen formatering Har ofta olika specialkommandon för att behandla hantera programkod.
KOMPILATOR Ett program som översätter från programkoden som vi skriver till instruktioner som datorn utföra. Dessa instruktioner kallas ofta maskininstruktioner, ibland för binärkod
IDE Integrated Development Environment Innehåller editor, kompilator och andra verktyg som programmeraren har användning för. Typiskt ett verktyg för den vane programmeraren Finns enklare versioner tänkt för utbildningsändamål.
PROGRAMSPRÅK
OLIKA PROGRAMSPRÅK Det finns som sagt en mängd programspråk, ni har kanske sett namn som: C, C++, Java, Python, JavaScript, PHP, Lisp, Ruby, Scratch, Alice, Blocky, etc, etc. Min åsikt är att många språk är inte lämpade som nybörjarspråk eller som språk för att introducera programmering till barn. Man bör tänka igenom syftet och sedan välja språk utgående från detta.
EXEMPEL
EXEMPEL VISUELLT PROGRAMSPRÅK
EXEMPEL TEXTBASERAT SPRÅK 3 * 0 = 0 4 * 0 = 0 5 * 0 = 0 3 * 1 = 3 4 * 1 = 4 5 * 1 = 5 3 * 2 = 6 4 * 2 = 8 5 * 2 = 10 3 * 3 = 9 4 * 3 = 12 5 * 3 = 15 3 * 4 = 12 4 * 4 = 16 5 * 4 = 20 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 3 * 10 = 30 4 * 10 = 40 5 * 10 = 50 6 * 0 = 0 6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36 6 * 7 = 42 6 * 8 = 48 6 * 9 = 54 6 * 10 = 60
Funktion EXEMPEL TEXTBASERAT SPRÅK Variabler Snurror Val def printmultables( start, end ): formatstring = "{:3d} *{:3d} = {:3d}" current = start Tilldelningar while current <= end: for currentvalue in range(11): print(formatstring.format( current,currentvalue,current*currentvalue), end=" ") if current+1 <= end: print(formatstring.format( current+1,currentvalue,(current+1)*currentvalue), end=" ") if current+2 <= end: print(formatstring.format( current+2,currentvalue,(current+2)*currentvalue), end=" ") print("") print("") current = current + 3 printmultables(3,6)
SAMMANFATTNING
SAMMANFATTNING 2017/18 övergångsår - 1/7 2018 ska alla följa Lgr 11/2017 Många lärare som ska tolka kursplaner och utforma undervisning saknar erfarenhet. Behov av utbildning av befintliga och nya lärare Att veta vad vi ska göra, när, hur, hur mycket och varför Beprövad erfarenhet och didaktisk forskning behövs Många olika programspråk Varje programspråk byggs upp av ett litet antal block Problemlösning är det viktiga