Visar alla blogginlägg med kategorin:
Lgr11/Lgrs11

Vilket språk ska man lära sig?

Prog-languages

Det finns många olika programmeringsspråk, kanske närmare två tusen. Alla används inte längre och många är varianter av större språk, ungefär som dialekter. Gemensamt är att språken har en strikt syntax som måste följas. I vissa språk är indrag i början på kodraden viktig, i andra inte. Tecken som ”krullparentenser” {} (även kallade måsvingar) och semikolon kan ha olika funktioner i olika språk. I Python kan man använda antingen ”dubbelfnuttar” (”) eller ”enkelfnuttar” (’) för att markera en sträng, medan det i andra språk bara fungerar med det ena. En annan skillnad mellan språken är hur data sorteras. Olika språk är också mer eller mindre kompatibla med varandra. Eftersom skrivare, paddor och datorer kan vara programmerade med olika språk, är det en fördel om de lätt kan kommunicera med varandra.

De språk som används mest just nu är Java, C, C++, Objective-C, C#, JavaScript, PHP, Python och Swift.

Som lärare på grundskolan behöver du inte bemästra konsten att programmera. Det finns ingen rimlighet i den tanken, att alla lärare ska utbildas i programmering. Det viktigaste är att lärare har koll på vilka verktyg som finns för att skapa med hjälp av programmering och de grundläggande funktionerna. Genom att nosa lite på vad programmering innebär kan det bli lättare att förstå hur den digitala världen fungerar.

Hello World?

C är det äldsta av de språk som används nu. De andra språken bygger mer eller mindre på den struktur som Dennis Ritchie, skaparen av C, satte i början av 70-talet. 1978 kom boken The C Programming Language, av Ritchie och Brian Kernighan. Det var i den boken det numer klassiska ”Hello world!” myntades. Som första exempel för att komma igång med programmering i C var en kodsnutt för att skriva just ”Hello world” och efter det har det blivit en standardfras som används som introduktion till alla möjliga programmeringsmiljöer.

Olika språk är bra för olika saker. JavaScript, PHP och Python används för att bygga funktioner på nätet. De andra språken används mer för större system och databaser.

HTML

HTML är inte ett programmeringspråk, även om det är kod som skrivs. Det kallas för märkspråk (engelska: markup language) eller sidbeskrivningsspråk. En viktig skillnad mot programmeringsspråk är att i ett märkspråk finns det inte funktioner eller villkorssatser. I HTML beskriver vi hur en webbsida ska se ut med rubriker och blinkande figurer, men om vi vill ha en funktion där man till exempel kan anmäla sig till något, måste vi använda Python eller PHP eller JavaScript.

HTML kan man använda för att lära sig att koda -men alltså inte för att programmera. Fördelen med HTML är att det är lätt att lära sig. Det är tydligt vad den skrivna koden gör eftersom det syns på skärmen. Det är alltså ett bra sätt att visualisera hur skriven kod påverkar vad vi ser på skärmen, men det går inte att lära sig programmera i HTML.

För mig tog det där ett tag att fatta skillnaden i början, kod som kod liksom? Jag hade svårt att lära mig skilja på begreppen programmera och koda. Programmera är alltså mycket mer än att skriva kod. Det handlar om hela processen från det att det finns ett problem att lösa, hur det ska brytas ner för att datorn ska förstå hur det ska lösas, hitta bästa lösningarna, skriva kod, testa, förbättra, skriva ny kod, förbättra, testa, testa igen osv.

Blockprogrammering

Blockprogrammering som Scratch och varianter av Blockly (code.org) anses lättare att börja med, men personligen har jag svårt att se kopplingen mellan blocken och den skrivna kod som vanligtvis används när datorer programmeras. Det blir en abstraktionsnivå för mycket för mig. Med det menar jag inte att det inte är en bra start. Uppenbarligen fungerar det för många världen runt, men om du har testat och finner programmering obegripligt fortfarande, kan det vara att du är funtad som jag, och inte klarar abstraktionslagret. Då rekommenderar jag mitt favoritverktyg, Kojo. Det finns på kogics.net/webkojo  Allra bäst blir det kanske om vi kan jobba parallellt med flera verktyg samtidigt, eller i alla fall visa den textbaserade koden som ligger bakom blocket. Den funktionen verkar de ha plockat bort i de nyare versionerna av moduler i code.org, vilket jag verkligen inte förstår. Jag tycker att det är lysande att kunna se hur blocken ser ut i JavaScript.

Skärmavbild 2017-02-05 kl. 20.17.39

I lärarhandledningen till Programmera mera har jag gjort ett arbetsblad där man kan jämföra loopar i Blockly, Scratch och Kojo.

//Karin

Att lära gamla hundar sitta

dog-102955_1280

Just nu strömmar det in oroliga åsikter från höger och vänster, angående den nya digitala agendan för skolan. Oron som kommer från folk utanför skolan struntar jag fullständigt i. Jag tänker inte ens läsa ledare som kritiserar regeringens beslut. Det är inte värt energin.

Oron som kommer inifrån skolan lyssnar jag däremot gärna till. Här är min empati stor. Jag hade blivit galen om jag hade fått order om att lära mig programmering, mitt i min vardag där jag redan kämpade för att få till min undervisning. Jag förstår tröttheten. Jag förstår motviljan.

Låt oss ta det lugnt. Låt oss vara tillåtande i tonen gentemot motsträviga kollegor.

Nu har vi ett beslut. Från höstterminen 2018 finns det ingen valfrihet längre. Låt oss se till att lärarna som nu har fått ytterligare en ny uppgift att ta sig an, känner sig lugna och trygga med att det kommer att gå bra. Det är viktigare att det här bli bra på längre sikt och att lärarna orkar och känner sig sugna på att ta sig an utmaningen.

/Karin

Digital kompetens bortom verktyg och appar

cat-244060_1280

I efterdyningarna av regeringens beslut om att stärka digital kompetens i styrdokumenten har jag hamnat i många debatter i sociala medier. Mellan raderna läser jag in olika typer av kritik, som i mångt och mycket bottnar i oro. Vi måste bli tydligare i att förklara vad digital kompetens är och varför det är viktigt.  Det digitala är inte något ytligt krimskrams som lärare använder för att skoja till lektionerna lite. Jag berörde det i inlägget om Varför programmering här.

Digital kompetens handlar inte om att hantera appar.  Kanske oförmågan att se komplexiteten i digitaliseringen kommer sig av okunnighet. Om man inte har insyn i hur komplicerad juridiken är, kring kränkingar på nätet, PUL eller upphovsrätt, då förstår jag att man inte ser det som något angeläget att lära ut. Eller om man aldrig har reflekterat över hur datalagringsdirektiv och spärrningen av vissa hemsidor kan få för konsekvenser för medborgare, ja då känns det kanske inte så relevant.

Det absolut viktigaste av den digitala kompetensen är demokratiaspekterna som vi måste sträva efter att komma åt. Det finns allvarliga sidor av att vi lever stora delar av livet på nätet. Om vi synar dessa sidor i sömmarna, kanske det känns mer relevant att regeringen stärker vikten av digital kompetens.

Det handlar inte om appar. Det handlar inte om att göra roliga presentationer i iMovie. Det handlar inte ens om att eleverna ska lära sig programmera. Det handlar om att förstå den värld som vi lever i, oavsett om den tar sig digitala eller fysiska uttryck.

På regeringens uppdrag har Totalförsvarets forskningsinstitut tagit fram en kartläggning om Hatbudskap och våldsbejakande extremism i digitala miljöer  som presenterades i januari 2017. Sedan tidigare jobbar Statens medieråd med material riktat till ungdomar angående medie- och kommunikationskunskap, just för att skolan ska kunna jobba mer långsiktigt för att förebygga radikalisering av unga, åt olika falanger.

Att vi 2017 talar om alternativa fakta, är ett resultat av att vi ignorerat komplexiteten i digitaliseringen för länge, menar jag. Det är dags att vi läser på lite. Digitaliseringen kommer inte att pausa under tiden. Jag förstår att det känns pressat och jobbigt, men vad har vi för val? Hur ska vi annars komma till rätta med problemen som digitaliseringen orsakar, om vi inte försöker lära oss förstå den? Vad är alternativen? Jag ser ingen annan väg än genom mer kunskap, för oss alla.

/Karin

Nu är det klart, programmering kommer in på schemat.

ballonger

Idag kom det äntligen. Regeringen har antagit Skolverkets för hur programmering kommer in i läroplanen. Ändringarna ska tillämpas senast från och med den 1 juli 2018. Huvudmännen kommer att kunna välja när de ska börja tillämpa ändringarna inom ett ettårigt tidsspann från och med den 1 juli 2017.

Här kan ni läsa pressmeddelandet från regeringen.

Didaktorn: Digitalkunskap

Dagens blogginlägg blir i form av en podcast. I samband med Bokmässan i höstas, träffade jag Natanael Derwinger och spelade in ett avsnitt av podcasten Didaktorn. Här följer 17 minuter där jag förklarar bakgrunden till mina tankar om programmering och den digitala dimensionen av läroplanen.

/Karin

Didaktorn: Digitalkunskap

didaktorn

Varför programmering?

dog-2083991_1280

Jag orkar inte lära mig om programmering också.

Känner du så? Har du kollegor som säger så när de hör ordet programmering nämnas i skolsammanhang? Det är inte helt ovanligt. Jag har hört det mesta i trötthetsväg och uppgivenhet. Jag hade kollegor som undvek mig i personalrummet och slog ner blicken när jag kom. De orkade inte med mitt ständigt predikande om att de borde lära sig liiite mer om programmering och internet. Japp, jag har tjatat hål i huvudet på mer än en kollega och politiker genom åren. Här kommer de vanligaste argumenten mot programmering i skolan, och mina svar.

pisa

Skolan ska lära barnen läsa och räkna först, innan de ger sig på nymodigheter.

Det här är det absolut vanligaste argumentet mot programmering i skolan. Jag brukar svara med att det är väldigt sällan läs-och skrivundervisning eller matematik lärs ut i ett vakuum. Vi kan faktiskt göra flera saker samtidigt. Precis som vi lär eleverna om gråsparvar och bofinkar, kan vi lära dem om hur datorer fungerar och programmeras, utan att eleverna för den sakens skull går miste om värdefull läs-och skrivkunskapstid. Jag kommer att återkomma till den här frågan, hur vi kan göra för att kombinera de nya kunskaperna med de gamla stoffet, utan att det blir för mastigt.

inkompetentaLärarna kan inte undervisa i programmering.

Nä, jag är inte världens bästa programmerare, men lärare är proffs på att lära ut. Vi kan ta in ny kunskap, processa den och förmedla den till våra elever, utifrån deras kunskapsnivå. Vi gör det hela tiden. Hur många gånger har jag inte fått frågor från mina elever, om hur atombomber fungerar, eller hur länge man kan överleva i öknen utan vatten, sådant som jag inte kunde svaret på, men fick ta reda på och förklara. Det är ju min profession. I grundskolan ska vi inte utbilda programmerare, vi ska ge eleverna en förståelse för vad programmering är och hur datorer är skapade av människor och inte magi.

oense Vilket språk ska skolan lära ut?

Ja, det här kommer oftare från programmerare än från vanligt folk. Det finns tusentals programmeringsspråk. Jag lärde mig Python som första språk och tycker därför att allt annat är lite udda och konstigt. Jag är inte helt bekväm med Scratch, utan föredrar att jobba med eleverna i Kojo, för jag känner mig mer hemma med den miljön. Vissa menar att det här kommer att bli ett problem. Hur gör vi när elever på skolan X lär sig Python och skola Y lär ut JavaScript, när en elev sedan byter och inte kan hänga med i undervisningen? Det låter onekligen lite problematiskt, men det är faktiskt inget nytt dilemma. Ända sedan vi slutade ha fasta planer för vad som skulle tas upp när i skolan, har vi hela tiden problemet med elever som missar medeltiden helt på grund av flytt, eller en elev kommer från en klass utan digitala verktyg, till en som använder appar för att redovisa och tar för givet att den nya eleven kan allt. Vi har inte en likvärdig skola idag. Det finns inte två klassrum som ser likadana ut. Programmeringsundervisningen kommer också se väldigt olika ut, precis som i alla andra ämnen. Grunden i programmering är dock densamma, oavsett språk. Det finns en grundläggande grammatik som återkommer. En logik och ett sätt att tänka. Det finns begrepp att lära sig, som innebär samma sak, men heter olika i olika miljöer. Jag oroar mig inte över just detta. Det gäller bara att vi håller oss till de grundläggande begreppen, så spelar det inte någon roll vilka verktyg vi använder.

orkar inteJag orkar inte, måste jag?

Här var jag snällare förr. Då tyckte jag inte att alla var tvungna att lära sig hur det digitala fungerar. I dag tänker jag annorlunda. Nej, alla måste inte kunna programmera, men att ha ett hum om hur människor skriver kod som får datorer och robotar att fungera, det är dagens nya allmänbildning. En kollega sa till mig ”Karin, jag går snart i pension, jag orkar inte med något nytt”. Jag svarade ”Men du ska ju bara gå i pension, inte dö. Du ska väl leva i 20-30 år till, tror du världen blir mindre digital med tiden?”. Det argumentet bet på henne. Nyligen hade jag en kurs om internet och programmering för en seniorförening. Klart att det är lika viktigt för alla som lever i ett samhälle där det digitala dominerar, att vi kan vara kritiska konsumenter och förstå vad som ligger bakom det som händer på våra skärmar. Så ja, du måste lära dig något nytt. Det kanske känns kämpigt, men jag tror att det kommer löna sig i längden.

Jag stannar där i dag, men jag kommer att återkomma till den ständiga frågan VARFÖR.

/Karin

Bildinfo: Foto från Pixabay. Illustrationer av mig själv.

Skolverkets förslag på programmering i grundskolan

30 juni 2016 lämnade Skolverket över sitt förslag till regeringen, på hur programmering kan komma in i befintliga läroplanen lgr11. Förslaget innehåller även mer generella bitar beträffande digitalisering, men eftersom det här är en programmeringsblogg så fokuserar vi på de bitarna här.

Som förslaget ser ut kommer programmering enbart in under centralt innehåll i matematik och teknik från år 1 och även i samhällskunskap från år 7.

IMG_2352

Matematik

I matematikämnet har programmering kommit in redan i syftestexten: “Vidare ska eleverna genom undervisningen 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.” in under rubriken Algebra. Progressionen i de skrivningar som föreslås är att eleverna i årskurs 1-3 ska få möta grunderna i programmering, bland annat genom att konstruera och följa stegvisa entydiga instruktioner. Detta följs av att eleverna i årskurs 4-6 föreslås möta hur algoritmer kan skapas och användas vid programmering. I årskurs 7-9 återfinns dessutom användning av programmering för matematisk problemlösning.

1-3

  • Hur entydiga stegvisa instruktioner kan konstrueras, beskrivas och följas som grund för programmering. Symbolers användning vid stegvisa instruktioner.

4-6

  •  Hur algoritmer kan skapas och användas vid programmering. Programmering i visuella programmeringsmiljöer.

7-9

  • 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.
  • Hur algoritmer kan skapas, testas och förbättras vid programmering för matematisk problemlösning

Teknik

När det gäller teknikämnet skrivs programmering fram inom centrala innehållet Arbetssätt för utveckling av tekniska lösningar. Progressionen i skrivningarna går från att ”styra föremål med programmering” i årskurserna 1-3, till ”att styra egna konstruktioner eller andra föremål med programmering” för att i årskurs 7-9 även omfatta ”egna konstruktioner där man tillämpar styrning och reglering, bland annat med hjälp av programmering ”.

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.

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.

7-9

  • Tekniska lösningar inom kommunikations- och informationsteknik för utbyte av information, till exempel datorer, internet och mobiltelefoni.
  • Tekniska lösningar som utnyttjar elektronik och hur de kan programmeras.

Samhällskunskap

För årskurs 7-9 återfinns kunskap om programmering även i centralt innehåll i ämnet samhällskunskap:

  • Nyhetsvärdering och hur den kan påverka människors bilder av omvärlden.
  • Hur individer och grupper framställs, till exempel utifrån kön och etnicitet, samt hur information i digitala medier kan styras av bakomliggande programmering.

Här kan du läsa samtliga Skolverkets förslag på förändringar