Visar inlägg med etikett begrepp. Visa alla inlägg
Visar inlägg med etikett begrepp. Visa alla inlägg

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.

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 på 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