Introduktion av programmering

Denna termin har jag börjat introducera programmering för mina elever i åk 7. Min plan för programmeringen i högstadiet består av tre steg med en tydlig progression. Det första steget är en form av analog programmering med lego. Nästa steg blir någon form av  blockprogrammering som sedan övergår till textbaserad programmering som utgör det sista steget. De två sista stegen sker med digitala verktyg som till exempel Swift Playground eller Kojo. I detta inlägg ska jag dock fokusera på det första steget som är ett utmärkt exempel  på hur vi med penna, papper och legobitar kan lära eleverna att skapa ett helt eget programmeringsspråk.

När jag arbetar med legoprogrammering så delar jag in klassen i grupper med fyra elever i varje grupp. Varje grupp får sedan var sin påse med två uppsättningar av legobitar i olika färger och former samt två plattor. Bilden nedan visar en lagom mängd bitar att börja med.

Varje grupp får sedan i uppgift att skapa en egen kod som beskriver hur legobitarna är placerade på plattan. Koden får endast bestå av versalerna A till Z samt siffrorna 0 till 9. Koden ska skrivas på ett papper med 50 rutor där endast ett tecken per ruta är tillåten. Att kodens längd begränsas till maximalt 50 tecken innebär att det gäller att komprimera koden så mycket som möjligt för att få plats.
Bilden nedan visar hur det skulle kunna se ut.

Eleverna ska alltså tillsammans skapa en kod som beskriver hur legobitarna på en platta är placerade. Denna kod ska kunna skickas till en annan gruppmedlem som enbart utifrån koden ska kunna bygga upp en kopia av plattan. Till sin hjälp har de en loggbok där de med penna och papper skriver ner koden för att slippa ha allt i minnet. Men målet är att koden tillslut ska bli så enkel att de inte behöver någon lathund.

För att hjälpa eleverna att komma igång med arbetet så brukar jag föreslå att de ska börja med att hitta ett system för de olika färgerna. För då stöter de ganska snabbt på problem som får dem att komma in i rätt tänk. Den första insikten är att de måste hitta förkortningar för att få plats då de max kan använda 50 tecken . Gul och röd färg kan därmed inte få koden GUL respektive ROD utan istället G och R. Detta leder dock till problem eftersom gul och grön färg inte båda kan vara  symboliseras av bokstaven G. Efter ett tag har förhoppningsvis gruppen enats om ett system som skrivs ner i loggboken.  Ofta brukar det se ut som exemplet nedan.

G = Grön färg
Y = Gul färg (Yellow)
R = Röd färg
P = Rosa färg (Pink)
S = Svart färg
V = Vit färg
B = Blå färg
o.s.v.

Nästa utmaning är att hitta ett system att välja legobit med rätt storlek. Den första idén brukar vara ett ange antalet “pluppar” efter färgen. Till exempel är Y4 en gul bit med fyra pluppar och B8 ett blå bit med åtta pluppar. Problemet med detta system är det finns olika typer av bitar med fyra respektive åtta pluppar. Koden måste därför förändras och ofta leder detta till att eleverna anger antalet pluppar på bitens sidor.

Till exempel så blir Y41 och Y22 en tydlig kod som visar om den gula legobiten med fyra pluppar är formad som en rektangel (4×1) eller en kvadrat (2×2). Här börjar även vissa grupper diskutera ifall det bör vara skillnad på Y14 respektive Y41. Vissa grupper kommer då på att den första siffran kan ange basen och den andra siffran anger höjden. På så sätt kan de utan att använda fler tecken ge information ifall en rektangulär legobit är placerad horisontellt eller vertikalt.

När koden för färg och form är utarbetat så gäller det att hitta ett system för var biten är placerad på plattan. Här inser de flesta grupper relativt snabbt att någon form av koordinatsystem vore lämpligt. Dock kan dessa se väldigt olika ut. Vissa grupper använder siffror till båda axlarna medan andra använder bokstäver till ena eller båda. När koordinatsystemet är bestämt återstår dock ytterligare ett problem. Två koordinater anger ju endast en punkt och större legobitar täcker ju ofta flera av plattans punkter.

Det skiljer såklart en hel det i hur snabbt de olika grupperna löser ovanstående problem. För att differentiera undervisningen och fortsätta utmana de elever som med säkerhet kan skriva en kod och utifrån den välja rätt legobitar och placera dessa korrekt på plattan så ökar jag svårighetsgraden. Det finns lite olika sätt att göra detta. Jag brukar bland annat lägga till fler bitar med nya färger och former samt sätta bitarna ovan på varandra i flera lager.

Ett annat sätt att differentiera undervisningens tempo är att lägga in tävlingar mellan grupperna. Dessa kan gå till på lite olika sätt men jag brukar bygga ihop färdiga plattor i ett grupprum. En elev från varje grupp får sedan gå in i grupprummet där de får skriva en kod som sedan skickas till resten av gruppen som är kvar i klassrummet. Den grupp som blir klar först utan några fel får fem poäng, tvåan får fyra poäng och så vidare. För att alla i gruppen ska få skriva koden så kör vi minst fyra omgångar och den grupp som har flest poäng när vi är klara vinner.

Jag brukar avsluta detta arbetsområde med ett skriftligt test som alla gör individuellt. I detta test vill jag att eleverna dels ska förklara hur deras kod fungerar samt vilka för och nackdelar koden har. Jag ställer även frågor om vilka problem som de har stött på under arbetets gång samt hur dessa problem fixades till. Syftet med testet är både att få eleverna att reflektera över sitt arbete men även för att göra det enklare för mig att göra en rättvis individuell bedömning. Detta test visar ofta tydligt hur väl varje elev förstår koden samt hur involverade de har varit i arbetet.

Att diskutera:

  • Hur kan programmering introduceras på ett konkret och tydligt sätt?
  • Ska programmering vara mest analog eller digital i början?
  • Kan lego användas i andra undervisningssammanhang?
  • Hur kan undervisningen av programmering differentieras på fler sätt?
Share Button
Om författaren

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *