Visar alla blogginlägg med kategorin:
Teknik

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

Dags att söka till högskolan!

https://www.flickr.com/photos/karenbaijens/ By Karen Baijens

I morgon, tisdag 18 april, är sista dagen för att ansöka till kurser på högkola och universitet. Jag blir alltid lika sugen varje termin och jag vill gå massor av kurser. Förra terminen såg jag fram emot att få läsa in behörighet i teknikämnet, men kursen jag hade blivit antagen till, blev inställd på grund av för få deltagare.

Än så länge finns ingen kurs i programmering speciellt för lärare. Jag hoppas verkligen att det kommer inom kort. I väntan på det kan jag rekommendera en introduktionskurs till programmering. Jag gick denna trepoängskurs på KTH. Kursen är framtagen för att vara förberedande för studenter som ska läsa programmering och ger en bra grund i vad det handlar om. Nu är det fem år sedan jag gick kursen, men jag har rekommenderat den till många som varit lika nöjda.

Vid en genomgång av kursutbudet på antagning.se fastnade jag för dessa kurser som samtliga är på 7,5 poäng, distans och utan krav på annat än grundläggande behörighet:

Programming in C# på Malmö högskola

Introduktion till programmering och C# på Luleå Tekniska Universitet

Grundläggande programmering i C# på Högskolan Kristianstad

Programmering i Java på Högskolan Kristianstad

Programmering i C på Högskolan Kristianstad

Strukturerad programmering med C++ på Linnéuniversitetet 7,5 poäng, distans och inga förkunskaper behövs.

Jag tycker inte det spelar så väldigt stor roll vilket språk man väljer att lära sig som första språk. I introduktionskursen från KTH används Python, som har blivit det vanligaste språket i grundskolor runt om i världen. Tyvärr kryllar det inte av Pythonkurser på våra högskolor och universitet som synes. Jag tror ändå att det kan vara mycket givande att gå någon av kurserna listade ovan. Jag kan inte garantera innehållet i dem, men jag hoppas att våra högskolor och universitet håller någorlunda hög standard.

//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

Resurser för Stockholms skolor

Det är högt tryck på de kurser som finns om programmering, och flera kurser är redan fullbokade. Spana in dem ändå, ställ skolan på väntelista och haka på när det finns plats. Ju fler som står på väntelista, desto bättre vet vi hur behovet och intresset ser ut. Har vi tur skjuts det till ännu fler resurser så att alla som vill kan ta del av det fina kursutbudet.

En av mina favoritsatsningar är Mediotekets Robotek  som är under uppbyggnad. De första lådorna för grundskolan är färdiga och ute i verksamhet. Det ska även skräddarsys lådor för förskolan och fritids och lådor för olika årskurser. Att skolor får låna olika robotar och andra resurser, som annars bara används en kortare tid, för att resten av skolåret stå i något skåp, är en utmärkt lösning ur hållbarhetssynpunkt. För att låna en låda krävs utbildning på tre tillfällen, vilket också borgar för att innehållet faktiskt används på ett bra sätt. Hurra för det! Ställ skolan i kö. Alla lådor är uppbokade resten av VT17. Medioteket erbjuder även en programmeringkurs på 3 timmar som kan beställas på begäran. Spana in kursutbudet här. 

Vetenskapens hus är en annan nod för fortbildning för Stockholms stads lärare. Där ges kurser i  Prova-på-programmering och Digitalt lärande Den senare är fullbokad våren 2017, men ställ skolan i kö och gå någon prova-på-kurs så länge. Flera olika alternativ finns att välja mellan.

En fantastisk möjlighet som finns för stadens skolor är FoU-projekt. Jag hade själv möjlighet att genomföra en studie om programmering som verktyg inom matematik, tillsammans med två kollegor för två år sedan. Studien gav mig många nya insikter som jag har nytta av i min fortsatta undervisning, inte bara inom programmering. Sista ansökningsdag 2017 är 15 mars, så ila iväg till rektor och be hen ansöka här. Jag önskar mig en hel mängd med studier på vad eleverna egentligen lär sig på de programmeringslektioner vi utsätter dem för. Tänk om vi kunde få till en hel grupp som bara jobbar med programmeringsrelaterade projekt. Vilka diskussioner vi skulle kunna ha!

/Karin

By travelwayoflife (Flickr: Owl Family Portrait) [CC BY-SA 2.0 (http://creativecommons.org/licenses/by-sa/2.0)], via Wikimedia Commons By travelwayoflife (Flickr: Owl Family Portrait) [CC BY-SA 2.0 (http://creativecommons.org/licenses/by-sa/2.0)], via Wikimedia Commons

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

Lärardriven forskning kring undervisning och lärande i programmering

Inom ramen för Stockholm Teaching & Learning Studies pågår sedan HT2016 lärardriven forskning kring programmering i teknikämnet.

samtal

Lärarna Annika Lundholm-Bergström, Madeleine Björn, Tove Wållberg oc Lena Åström genomför tillsammans med Birgit Fahrman och Maria Weiland, båda forskarstuderande lärare, samt undertecknad en ämnesdidaktisk studie kring hur undervisning i programmering kan utvecklas för att främja och synliggöra elevers förmåga att identifiera och analysera tekniska lösningar. Inom projektet närmar vi oss kod som en form av teknisk lösning som i likhet med andra tekniska lösningar kan beskrivas utifrån funktionalitet och ändamålsenlighet. Den övergripande frågan som vi intresserar oss för handlar således om hur undervisning kan organiseras för att stötta elever i att förstå och prata om kod utifrån funktionalitet.

tavla

Eleverna som deltar i projektet har inte programmerat tidigare och det material som analyseras för tillfället utgörs av de ”instruktioner” eleverna ombads skriva till en klasskamrat. Instruktionen skulle kamraten sedan utgå för att få sin robot att röra sig på ett specifikt sätt. Vi har alltså valt att utgå från elevernas erfarenheter och individuella sätt att uttrycka sig, snarare än att börja med att presentera färdiga definitioner på programmering och kod.

text

Elevernas instruktioner visade sig se mycket olika ut men kunde sorteras in i tre övergripande kategorier: (1) Text, (2) Symboler och (3) Bilder. Inom varje kategori fanns underkategorier och olika läsriktningar; lodrätt, vågrätt och rumsligt orienterat. Det visade sig att det vi trodde eleverna skulle tycka var kännetecknande för en bra instruktion (t.ex. enhetliga symboler i form av pilar), inte var det. En av lärarna menade att uppgifterna förmodligen var för enkla och att det krävs större komplexitet (mer kod) för att aspekter som enkelhet och effektivitet ska uppmärksammas av eleverna. Det vill säga det fanns ingen anledning för eleverna att använda något annat än ord och meningar. Ökar behovet av att uttrycka sig mer precist om det är 50 istället för 5 steg? Detta kommer vi att undersöka vidare.

bild

Materialet ska analyseras och kommer utgöra ett första underlag i arbetet i att utveckla aktiviteter som underlättar för lärare och elever att enas kring ett gemensamt sätt att skriva kod. Det är rimligt att anta att en gemensam förståelse är en förutsättning för samtal kring funktion och ändmålsenlighet, vilket utgör fokus för nästa klassrumsintervention.

/Per Anderhag

Vill du veta mer? Ta kontakt med birgit.fahrman@stockholm.se
Är du intresserad av delta i ramprojektet, läs mer här: https://pedagog.stockholm.se/stockholm-teaching-and-learning-studies/amnesdidaktiska-projekt-i-naturvetenskap-och-teknik/amnesdidaktiska-ramprojekt-i-naturvetenskap-och-teknik/