onsdag 10 september 2014

Makey Makey

Har fått stanna hemma från skolan två dagar på grund av förkylning och upplever alltid det som svårare att komma tillbaka mitt i en vecka. Tyvärr innebar det att jag missade programmeringen för eleverna i årskurs 6 i måndags och att det blir först på fredag som vi kommer kunna arbeta med det igen (då med eleverna i årskurs 5 och de elever som valt programmering som elevens val).

Jag berättade tidigare om min beställning av Makey Makey och då den kom i måndags fick jag möjlighet att testa den med eleverna idag. Det var en fantastisk upplevelse att se hur eleverna fick koppla ihop det abstrakta iprogrammeringen med det fysiska i att använda de möjligheter som Makey Makey möjliggör. Min tanke nu är att skapa övergripande projekt i programmering och teknik där eleverna ska få skapa sina program i Scratch för att sedan skapa en teknisk lösning på ett problem. Just nu funderar jag mycket på att de ska få skapa ett användargränssnitt för människor med rörelsehinder, ska se om jag kan få upp en struktur på det och givetvis lägga upp processen här på bloggen.

Några exempel på vad det går att göra med en Makey Makey:





fredag 5 september 2014

Elevernas val

Intresset för programmering som elevens val blev klart större än förväntad då jag nu har en grupp på 24 stycken elever som valt att spendera varje fredag eftermiddag med att fördjupa sig i programmering. 24 elever är ingen ovanlig storlek på en klass men när det gäller att programmera upplever jag att det antingen behövs mer än en lärare som befinner sig i klassrummet alternativt att alla datorer fungerar som det är tänkt att de ska göra. Tyvärr hade jag varken eller idag utan fick improvisera något.

Programmera elever

Till att börja med gick jag igenom vad jag förväntade mig av eleverna och vad de kunde förvänta sig av mig. Jag introducerade dem till tävlingen de är anmälda till i november och vi testade sedan tre olika övningsuppgifter som är tagna från tävlingen. De var väldigt lätta och bestod till största delen av mycket grundläggande logik (t.ex. i vilken ordning ska klossarna läggas för att bygga samma torn som på bilden). När de var klara med uppgifterna som de fick arbeta med gruppvis visade jag ett exempel på skriven kod som såg ut enligt följande:

if (om) lampan tänd:
            elev står up

och sedan:

if (om) lampan släckt:
            elev sitter ner

Jag använde dessa två små "koder" och tog hjälp av en av eleverna kring hur det fungerar med just att skriva kod och vilket resultatet blev. Vi diskuterade hur vi kunde utveckla koden och eleverna kom med följande förslag:

repeat(2)
      if (om) lampan tänd:
                   elev står up
      if (om) lampan släckt:
                   elev sitter ner

Koden i sig ser inte för vacker ut men det handlar mer om en tanke eller idé kring hur det fungerar. Vi diskuterade vad de olika delarna av koden betyder och när förståelsen infann sig för de flesta av eleverna lät jag dem börja arbeta med Scratch. Scratch är något jag kommer att återkomma till då det är en sida med en del fördelar (men även nackdelar) när det gäller att introducera programmering i skolan.

Vad jag lärde mig idag:


  • Fungerande teknik är alltid att föredra, speciellt om det är många elever som ska använda den samtidigt.
  • I och med att jag fortfarande letar efter en fungerande struktur är det bra om det finns mer än en lärare i klassrummet som kan bistå som resurs. Fungerar tekniken är behovet inte fullt lika stort.
  • Att använda fysiska exempel på hur programmering fungerar är ovärderligt. Det finns också vinter att skriva ut uppgifter på papper för att få eleverna att tänka utanför den miljö som de befinner sig i när de använder datorn.   

     

torsdag 4 september 2014

Projektet börjar

Dagarna har gått åt till att planera den fördjupning som kommer att ske för de elever som valt programmering som elevens val. Kopiatorn har gått varm när jag skrivit ut övningsuppgifter och material som jag tänker använda som grund för att utveckla elevernas förståelse kring informatik och logik. Jag kommer att lägga upp exempel på detta här under de kommande dagarna.

Imorgon har jag den andra halvan av eleverna i årskurs 5 vilket innebär att det är tid som kommer att gå åt att se till att alla kommer in på sina konton. Jag kommer därför att under den närmsta tiden fokusera på att skriva om den utveckling som sker i årskurs 6 och de elever som valt programmering som elevens val då de har kommit en bit längre.

Min plan den närmsta tiden ser ut enligt följande för eleverna som valt programmering som elevens val:


  • Introducera eleverna till programmering och se till att de förstår grunderna
  • Arbeta med övningsuppgifter och material "offline"
  • Börja med Python
För samtliga elever (dvs. alla elever i årskurs 5 och 6) är det följande som gäller:

  • Fortsätta med "kursplanen" som finns på learn.code.org
Detta beräknas ta hela terminen då jag har klasserna varannan vecka. Det innebär att det blir först till våren de kommer sätta sig in i Python ordentligt. 

Hur gör jag då med de elever som programmerar på elevens val?

Här gäller det att jag kan balansera deras arbete på elevens val med det de gör under lektionerna i programmering. Min vision är att de ska kunna hjälpa till med undervisningen för samtliga i Python och på så sätt även kunna utveckla sina förmåga att kommunicera och "prata" programmering. 

Jag kommer även att begränsa arbetet med uppgifter "offline" på elevens val till en tredjedel av passet och låta eleverna animera i Scratch den resterande delen. Scratch är något av en favorit för eleverna men jag vill som jag tidigare har skrivit, lyfta upp programmeringen ett par nivåer. 

Slutligen har jag beställt en "Makey Makey" från USA. Jag spånar redan på projekt jag kan genomföra tillsammans med eleverna med hjälp av en sådan. Drömmen hade varit en till varje elev men är övertygad om att vi kommer kunna göra väldigt mycket med min egen till att börja med.


måndag 1 september 2014

En långsam men lovande start

Idag hade jag genomgång med min andra halva av sexor som ännu inte fått möjlighet att bekanta sig med programmeringen. Det var en väldigt trevande start, inte minst då datorerna har passerat sitt bäst före - datum (datorer som stängs av genom att strömsladden dras ut tenderar att ha ett relativt kort bäste före - datum). Det är alltid lika frustrerande att behöva vänta en halvtimme från det att datorerna startas upp till det att eleverna är inloggade. Till denna frustration tillkom den stress som det icke - fungerande wifi - nätverket bidrog till under lektionens första tredjedel.

Grepp om begrepp

Som tur var kunde jag använda den första delen till att arbeta med begreppen som vi kommer att använda oss av i programmering, samt förklara mer om hur datorer fungerar, vad binärt talsystem är och vilken betydelse komponenter som exempelvis processorn i datorn har. När det gäller att undervisa programmering är jag övertygad om att det är minst lika viktigt att eleverna får en förståelse kring hur hårdvaran fungerar såväl som mjukvaran. Betydelsen av sammanhang för eleverna kan aldrig underskattas.

Jag upplevde själv genomgången av begreppen och i viss mån hur allt hänger samman, som stundtals något för abstrakt, men som jag ändå anser slutade relativt konkret på slutet. Det kommer dock krävas att jag återkommer till begreppen flera gånger för att vara säker på att eleverna förstår vad det handlar om. Viktigt här är att låta eleverna anteckna, då det skrivna ordet hjälper dem att första och minnas. Efter genomgången fick eleverna gå in på learn.code.org/flappy/1 och testa att programmera sin egen version av "Flappy bird" med hjälp av den blockteknik som finns på learn.code.org. Denna övning är mest som en enkel introduktion till hur själva blocktekniken fungerar och jag undvek att förklara för eleverna hur allt fungerar steg för steg. Det sparar jag istället till de kurser som finns på learn.code.org och som jag kommer att påbörja tillsammans med mina elever på måndag.

Fördjupning som elevens val

På tal om kurser så kommer jag att parallellt hålla en kurs för de tjugo elever som valt programmering som elevens val. Denna kurs kommer jag att se som en fördjupning av den programmering som alla elever har och mitt mål kommer att vara att eleverna ska delta i tävlingen på www.bebras.se. Jag planerar fortfarande hur jag ska lägga upp det; men troligtvis kommer vi använda oss av liknande strategier som används i matematiklyftet där vi tittar på enskilda problem och försöker hitta så många olika lösningar som möjligt på problemen och diskuterar oss sedan fram till den lösning som skulle kunna anses vara bäst. Min tanke är att lyfta upp våra diskussioner här på bloggen så att andra får möjlighet att delta i vårt arbete med att förstå och lära oss logiken i programmering.

fredag 29 augusti 2014

Konsten att logga in

Idag var tanken att börja med introduktionen till programmering för två halvklasser i årskurs 5. 80 minuter per klass är i sammanhanget egentligen fantastiskt då jag har möjlighet att få med eleverna en bra bit på vägen på den tiden. Problematik uppstod dock ganska snabbt då det var första gången som en majoritet av dem loggade in på deras konton.

Välkommen... Skrivbordet förbereds...

Detta med att få inloggningen att fungera är troligtvis en av de delar jag upplever som bland det mest frustrerande när det gäller att kunna undervisa med hjälp av datorer. Det tar inte bara ett bra tag för datorerna att starta, det är väldigt ofta något lösenord eller något användarnamn som inte fungerar som det ska. Jag räknar med att detta är problem som vi mer eller mindre har kunnat lösa efter den första gången men det är ändå en olustig känsla att en lektion på 80 minuter mer eller mindre gått åt, att ge eleverna möjlighet att logga in på datorerna.

@ och caps lock

Två andra saker jag ofta uppmärksammar i samband med arbetet med att ge eleverna tillgång till sina konton, är att elever idag väldigt ofta tenderar att skriva versaler (stora bokstäver) med hjälp av "caps lock" och att de genvägar på tangentbordet som jag lärde mig genom "trial - and - error"(som exempelvis hur man skriver @), är något som jag som lärare måste arbeta med. Detta är något jag kommer att återkomma till flera gånger i denna blogg och har enligt min mening mycket att göra med att den digitala tekniken idag är så användarvänlig att vi inte behöver reflektera över hur den fungerar. I detta finns det givetvis oerhört många vinster men även en viss problematik som det inte går att bortse från och som jag som sagt kommer att återkomma till.

Vinsten idag blev att jag fick eleverna att börja använda drive och att alla nu kan använda datorerna själva. Det blev dock inte särskilt programmerande utan det är något jag själv får arbeta med nu under helgen. Slutligen fick jag ett väldigt glädjande besked om att jag kommer att läsa en kurs i programmeringsteknik på distans på Kungliga tekniska högskolan nu under hösten.

onsdag 27 augusti 2014

Lektion 1a: Ett eller noll

Läsårets första lektion i programmering höll jag för en klass sexor i måndags. Upplägget utgår från att eleverna i årskurs 6 har programmering varannan vecka. Optimalt hade varit att ha det i halvklass men på grund av schematekniska skäl fick det bli på det här viset.  Fördelen med att ha en klass varannan vecka är att jag kan spegla lektionen, samtidigt som jag har möjlighet att förbättra de saker som eventuellt går fel på det första tillfället. 

Arbetsmiljön
Lokalen som vi använder oss av är en provisorisk datorsal som jag som IKT - utvecklare har ansvar för. Det är långtifrån en optimal sal att arbeta med datorer i, speciellt då salen har den där karaktäristiska värmen som datorsalar tenderar att ha. Datorerna vi använder är bärbara HP - datorer som är 4 - 5 år gamla och som inte har batteri som fungerar. Detta medför att det i salen finns väldigt mycket provisoriskt kablage som inte är särskilt bra för arbetsmiljön. Min förhoppning ligger i att vi blivit lovade Chromebooks vilket jag tror kommer underlätta möjligheterna för eleverna att lära sig programmera i större utsträckning. 

Läromedel
Inledningsvis använder vi oss av det program som finns på http://learn.code.org/ som är en sida skapad av dataingenjörer från Google, Microsoft, Facebook och Twitter. Det intryck jag har fått från sidan är att den är en väldigt bra ingång för att börja med programmering tillsammans med eleverna. På sidan finns det "färdiga" genomgångar, som ger en bra resurser att undervisa i programmering både utan och med dator. Det är också lätt att få en översyn kring hur det går för eleverna, då jag som lärare kan skapa konto för alla elever där jag ser hur de ligger till i de olika övningarna. 

Begrepp
Under vårt första pass började jag med att diskutera ett antal olika begrepp som hör till programmering. Detta är viktigt för att eleverna ska kunna samtala med varandra på samma sätt som de samtalar i de andra ämnena. När jag har försäkrat mig om att det finns en viss förståelse kring vad begreppen innebär är det de jag återkommande använder när jag undervisar. Följande begrepp diskuterade vi under det första passet:
  • automatisera - något som händer automatiskt (vi använde liknelser från människroppen)
  • datavetenskap - vetenskap om allt som hör till data (se nedan)
  • dataingenjör - en ingenjör som arbetar med att lösa problem som hör ihop med data
  • data - information
  • dator - maskin som använder sig av data
  • miljö - allt omkring oss men även något som kan skapas med hjälp av data
  • gränssnitt - hjälper oss att arbeta med data (t.ex. pekskärm)
  • öppen kod - program och kod som är öppen för alla att använda
  • programmering - ett verktyg (språk) som gör att vi kan bestämma vad vi vill att datorerna ska göra med datan
  • simulering - här väljer jag att ta spelen FIFA, The Sims och Battlefield som exempel på simuleringar, dvs. ett sätt att föra över delar av verkligheten till data
Jag låter eleverna diskutera vad begreppen kan betyda innan jag lyfter upp det i helklass. I diskussionen i helklass ser jag till att det finns väldigt konkreta och tydliga exempel kring hur begreppen används och vilken betydelse de har. Under den första lektionen fick jag föra diskussionen i ganska hög grad men min tanke är att vi ska återkomma till dessa (och fler) begrepp längre fram där eleverna kommer att ta ett större ansvar. 

Binärt
Den andra delen av lektionen bestod av att vi diskuterade hur vi använder datorer (surfplattor, mobiltelefoner, etc.) idag, samt hur de egentligen fungerar. Eleverna är på ett vis väldigt vana användare av digital teknik men de har ofta inte en djupare förståelse kring hur det fungerar eller vilka möjligheter som tekniken ger utanför de sociala medierna. I denna del tar jag upp hur datorerna behandlar information och förklarar väldigt allmänt hur det binära talsystemet fungerar och vilken koppling det har till datorer och programmering. Ett bra exempel här är att låta en elev ställa sig och tända och släcka klassrummets lampor och förklara att när de är motsvarar det 1 och när de är  av motsvarar det 0. Detta är ett moment som är väldigt svårt för eleverna men genom att koppla det till elektrisk ström och varför datorer inte förstår saker på det sätt som vi gör, så får eleverna en viss känsla av hur det egentligen fungerar.

Efter min genomgång kring det binära systemet ger jag varje elev ett papper där de ser den binära koden för varje bokstav (versal) i det engelska alfabetet. A motsvaras exempelvis av 0100 0001. Varje nolla (0) och etta (1) är en bit och 8 stycken bits är en byte. Där får jag kopplingen till något som är greppbart för eleverna då de är bekanta med hur mycket som ryms på deras datorer eller mobiltelefoner. Genom att förklara att 1 kB (kilobyte) är 1 000 stycken A eller att 1 MB (megabyte) är 1 miljon stycken A* (se fotnot nedan), får eleverna en mindre abstrakt bild över hur mycket data (dvs. information) som vi låter våra datorer behandla.  

Övning 1: Tänka binärt och arbeta digitalt

Många av eleverna har svårt att förstå detta och under lektionen ställde jag mig själv frågan om detta egentligen var något vi behövde ägna någon längre tid åt. Då delade jag ut små lappar med 8 tomma rutor där de skulle skriva valfri bokstav (A - Z) binärt (dvs. med bits). Eleverna fick välja mellan att färglägga rutorna (en färg för 1 och tomt för 0) eller skriva ner det binära värdet i varje ruta (dvs. 1 eller 0). Det var här jag insåg att genomgången ändå gav resultat då jag lät eleverna arbeta precis som datorer. De såg en bokstav, omvandlade det till ett binärt värde och fick sedan i helklass omvandla det till en bokstav igen (de andra eleverna fick gissa). Övningen avslutades med att jag skrev ett namn helt binärt och visade hur datorn tittade på talraden genom att dela upp den i delar med 8 bitar i varje (dvs. en byte). 

Övning 2: Flappy Bird
Slutligen fick eleverna äntligen starta upp datorerna där de fick "programmera" en version av spelet Flappy Bird på http://learn.code.org/flappy/1. Eleverna fick hjälpa varandra så mycket som de ville, då jag snabbt insåg att det var en något för svår övning att börja med utan en grundligare genomgång. När de var klara med alla tio övningar i programmeringen av Flappy Bird fick de själva välja vad de ville göra på datorerna.

Sammanfattning

Första lektionen i programmering gav mersmak och goda insikter om hur jag ska fortsätta med projektet. Det som fungerade bäst var diskussionen kring begreppen och i viss mån övningen där eleverna fick arbeta som datorer. En bättre genomgång av programmeringsövningen hade behövts, vilket jag kommer att ha med mig när jag genomför detta nästa gång på fredag med två klasser i årskurs 5. 

Daniel Pamp

2014 - 08 - 27

*Jag är medveten om att när det gäller beräkning av kilobyte och megabyte så finns det det två olika sätt att räkna och de har i viss mån olika betydelse. Jag väljer dock att inte gå in på detta tillsammans med eleverna utan försöker hålla det så korrekt som möjligt utan att röra till det för mycket för dem. Läs mer på: 
http://sv.wikipedia.org/wiki/Kilobyte och http://sv.wikipedia.org/wiki/Megabyte




tisdag 26 augusti 2014

Om mig och den här bloggen

Jag är lärare på en mellanstadieskola i Malmö stad och har börjat undervisa i programmering i årskurs 5 och 6 på min skola. Tanken bakom skapandet av den här bloggen är att hjälpa andra komma igång med programmering, samt utbyta tankar och idéer kring hur vi kan göra programmering begripligt i undervisningen. 

Vem är jag?

Jag heter Daniel Pamp och är utbildad gymnasielärare i samhällskunskap och historia. Min första anställning fick jag för tre år sedan som lärare i årskurs 6 och sedan dess har jag fortsatt att undervisa på mellanstadiet. Under de här åren har jag fått röra mig allt mer mot NO - ämnena och matematiken vilket också har medfört att jag fått större möjligheter att undervisa i just programmering. Just nu går jag på lärarlyftet i NO och teknik för årskurs 4 - 6 på lärarhögskolan i Malmö. samt deltar i matematiklyftet som Skolverket genomför över hela landet. 

Erfarenheter kring programmering

Uttrycket hellre än bra är väl något som kan sägas summera min första kontakt med programmeringen. Jag började i högstadiet med att köpa en bok som sa sig kunna lära mig programmeringsspråket C++ på tre veckor, det var svårare än jag hade tänkt mig och jag har ännu inte klarat av de tre veckorna. Intresset för programmering bestod och jag var inte och nuddade vi det när jag gjorde hemsidor (varav min sida om Pokémon gav mig min första inkomst inom IT - branschen). Det är dock först nu som jag verkligen kommit in i programmering på riktigt och med det tänker jag också hitta ett sätt att undervisa elever i grundskolan i kodandets förlovade värld. 

Varför en blogg?

Bloggen är till för att dela med mig av erfarenheter kring hur jag undervisa i programmering och min förhoppning är att andra ska kunna ta del av detta och själv testa. Jag har haft programmering som elevens val men faktiskt lyckats få in det som ett återkommande moment för eleverna i årskurs 5 och 6. Min förhoppning är att jag ska kunna visa upp både lyckade och mindre lyckade försök kring hur jag undervisar i detta ämne. 

Hoppas ni vill följa med och delta i utvecklingen av programmering som ett framtida skolämne.

Daniel Pamp
2014 - 08 - 26