Kodning på schemat

I många länder har man infört programmering på schemat som ett eget skolämne. England är troligtvis det land som kommit längst och det finns en uppsjö med bra material på engelska, för den som vill fördjupa sig.

I Sverige är det mest olika eldsjälar som jobbar med att ge eleverna kunskap om programmering. Den första frågan man måste ställa sig är "vilket ämne skall tappa timmar till förmån för programmeringen"? Det finns bara ett vist antal minuter på varje skoldag. Om något skall in måste något annat obönhörligt ut. Blir det:

* Elevens val, här finns 60 minuter per vecka och är troligen den est logiska platsen att ta med tid. Men inte om programmering blir obligatoriskt eftersom elevens val också är obligatoriskt. Dessutom inkluderas bara de som väljer elevens val frivilligt, alla andra hamnar utanför.

* Matematik, men problemet enligt egen erfarenhet är att det är de svagaste eleverna som har svårast att förstå och som skulle gynnas mest av vanlig matematikundervisning som helst sätter sig med programmering eftersom de då slipper det de tycker är ändå tråkigare. På det viset lär de sig varken matematik eller programmering och tiden blir helt bortkastad.

* Slöjd, en del menar att man slöjdar med kod. Men då urvattnas slöjdämnet som redan nu är i strykklass på många skolor.

* Teknik, vilket troligen är det vettigaste alternativet inom skolans väggar enligt mig. Men då får programmeringen bli ett tema på samma grunder som "konservering" eller "hemmets tekniska system" och något man endast jobbar med 4-8 lektioner varje läsår.

**Blockbaserad programmering**

Med blockbaserad programmering skriver man ingen riktig kod utan man väljer istället kodblock och bygger ihop dem till ett fungerande program. Blockbaserad programmering ger många begränsningar, men det underlättar mycket för de yngre eleverna.

* An hour of code är en fantastiskt bra plats att börja på. Den finns här: http://studio.code.org/ uppgifterna är skrivna på svenska och det är enkelt att sätta igång. För de flesta eleverna innebär det en rätt låg tröskel att sätta igång och de känner igen flera av spelen man jobbar med, som "Flappy bird". Du som lärare bör skaffa ett konto. Det behövs inte för att kunna programmera, men utan konto kan du inte spara det du gjort. Att registrera sig är gratis.

* Scratch är ett mer avancerat system med blockbaserad programmering och som jag själv använt ner till år 4. Det krävs tydliga instruktioner och en hel del handledning. Men det är inget större problem och vissa elever blir fantastiskt engagerade. Scratch hittar du här: https://scratch.mit.edu/projects/editor/?tip\_bar=getStarted och du som lärare bör skaffa ett konto. Det behövs inte för att kunna programmera, men utan konto kan du inte spara det du gjort. Att registrera sig är gratis.

Handledning i Scratch, barnhack 1: http://marstrandingarna.se/Barnhack-del1.pdf
Handledning i Scratch, barnhack 2: http://marstrandingarna.se/Barnhack-Kom\_igang\_med\_Scratch-del\_2.pdf

**Storybook programmering**

Istället för att skriva en bok som börjar på sida 1 och slutar på sida 20 kan eleverna skriva böcker som fortsätter på olika vis beroende på vilka val man gör.

* Power Point, i sin enklaste form kan man använda Power Point som har en inbyggd funktion där man kan hoppa mellan sidorna om man trycker på olika knappar. Skriv t.ex. ett stycke på första sidan om ett barn som funderar på att rymma och längre ner två knappar med texten "Smiter utan mat" och nästa "Smyger ner till köket först". Koppla första meningen till sida 2 och andra till sida 3. Sedan är det bara att fortsätta skriva berättelsen. Det underlättar mycket om man gjort en mind-map innan som visar hur alla sidorna hänger ihop.
* AXMA har en gratis historieskapare som dessutom använder sig av samma kodstandard som wiki-sidor använder.I alla fall tills man kommer till mer avancerad programmering. Det är en kul idé och kräver ingen installation på PC, bara att man tar hem programmet och startar ett nytt projekt. Sa jag att det är gratis? Det hittas här: http://sm.axmasoft.com/about.php

* Ren'py, kräver tid och intresse och passar litet äldre elever Spelmotorn är avancerad och det är inte värd tiden att sätta sig in i den om du inte själv tycker att det är roligt. Vad gör den då? Egentligen inget annat än en avancerad Power Point. I Ren'py skapar man spel där man har en snygg bakgrund och bilder av människor som talar genom att pratbubblor visas upp. Spelaren klickar på alternativ och kommer till nya scener beroende på vilka val man gjort. Har man litet äldre elever är Ren'py ett utmärkt sätt att kombinera svenskan med något annat skolämne och låta eleverna samarbeta om ett enklare spel. När koden är klar och alla bilder, musik och ljud finns sparat kan man skapa en .exe fil av alltihop som går att spela upp på vilken PC som helst. Det skall finnas kloner för olika operativsystem i mobiler, men det har jag aldrig prövat. Spelmotorn laddar man ner här: http://renpy.org/

* Twine, är ett rent textbaserat verktyg, gratis, som kan användas online. man bygger ickelinjära spel genom att ge spelarna olika alternativ efter varje beskrivning av miljön de är i. Precis som gamla MUD-spel som fanns före Internet, något äldre lärare kanske fortfarande minns. Twine är ett enkelt sätt att få eleverna att skriva mer och/eller längre texter. Avsaknaden av grafik och ljud kan få en del elever att tycka att det är tråkigt. Twine finns här: http://twinery.org//

**Programmera kod**

När jag var ung och gick i skolan skulle alla lära sig "Basic" eftersom man sa att "i framtiden måste alla lära sig att skapa sina egna program". Det blev inte så då och jag tror inte själv att det kommer att bli så i framtiden heller.

Problemen är tre när man lär ut programmering till ungdomar. För det första är det väldigt abstrakt. Få barn förstår kopplingen mellan att man skriver vit text i ett svart fönster och så händer något. För det andra har de oerhört vårt att förstå att det krävs så mycket kod för att få så litet att hända på skärmen. För det tredje tycker de att det är tråkigt när det inte finns bild och ljud med. Ändå, det finns några enklare kompilatorer som går att använda tillsammans med motiverade elever.

* Vill man pröva olika programmeringsspråk finns ett flertal on-line färdiga att testa: http://www.tutorialspoint.com/codingground.htm

* Vill du släppa iväg eleverna på egna äventyr rekommenderas Code combat http://codecombat.com/ som är ett fantasyspel där eleverna måste lära sig programmering för att komma djupare in i spelet. De mest användbara språken de lär sig i spelet är JavaScript och Python, men det finns andra som Closure och Lua.

* Javascript, är ett hyfsat enkelt programmeringsspråk som inte kräver någon spelmotor eller kompilator. Det räcker med en webbläsare och ett program att skriva text i. Firefox rekommenderas, eftersom det har stöd för många bra tillägg för just javascriptprogrammerare. Men Internet Explorer, Chrome, Safari osv. går lika bra. Det är gratis och genom den nya HTML5 standarden går det t.o.m. att programmera rätt avancerade 2D spel direkt med javascript. För inspiration kan du titta på: http://spelprogrammering.nu/ Eftersom det inte kräver speciellt mycket och är helt gratis är det ett lämpligt språk att lära ut grunderna i

* Kids ruby, som är en riktig ruby-kompilator. Det går att göra exakt samma saker med "kids" varianten som med den riktiga. Ruby är dessutom ett enklare programmeringsspråk än många andra och erkänt lätt att lära sig. Jag har använt det i år 6 inom ramen för matteämnet och de smartare lärde sig snabbt hur det fungerar, även om de hellre ville sitta med matteböckerna för betygens skull. Ruby går dessutom att programmera on-line utan någon installation, även om det inte går att spara koden efteråt om man väljer on-line versionen.

Kids ruby hittar du här: http://kidsruby.com/
Ruby on-line hittar du här: http://www.tutorialspoint.com/ruby\_terminal\_online.php eller http://www.tutorialspoint.com/execute\_ruby\_online.php

* Lazarus, är ett freeware man kan skapa hyfsat intressanta windowsprogram med. Dock inte spel. Därför är det mest riktat mot litet äldre elever, och lärare. Lazarus använder sig av programmeringsspråket Pascal och klarar av att hantera Borlands numera avstannade Delphi koder. Det var väldigt populärt i början av 2000-talet så det finns mängder med kodsnuttar att söka upp på Internet. Pascal kan inte användas för objekt orienterad programmering. Lazarus hittar du här: http://www.lazarus-ide.org/ Jag undervisade högstadieelever i Delphi/pascal i början av 2000-talet inom ramen för elevens val och de som gick i nian hade inga problem att förstå hur det hängde ihop. det hade däremot eleverna i sexan och sjuan.

* Java, är ett stort gratisspråk som kräver mycket av användaren. Fördelen är att program skrivna i java går att köra på många olika plattformar. Främsta anledningen till att lära sig programmera i java är att Android är baserat just på java. Vill man skapa android-appar är java bästa vägen att gå, om än inte den enklaste. Få, om någon, elev i grundskolan klarar av att programmera i java. Det tar nästan lika mycket tid att lära sig java som C++ och min egen uppfattning är att C++ är ett bättre språk att lära sig om man måste välja. Java kan du ladda hem här: http://www.oracle.com/technetwork/java/javase/downloads/index.html Javaprogram skapas i ett terminalfönster med enbart text och siffror. Vill du skapa program med grafik måste du hänga på andra moduler. De är inte alltid gratis. Det mest kända och äldsta är "Swing" som du hittar här: http://docs.oracle.com/javase/6/docs/technotes/guides/swing/ Swing är gratis men passar sig bäst till kontorsprogram.

* C++ är tungviktaren och rekommenderas inte för elever i grundskolan. Ändå är den industristandard. Den som kan programmera C++ kan programmera i princip vad som helst. Om man vill lära sig grunderna och är nöjd med att sitta vid ett svart terminalfönster och bara få fram siffror och bokstäver har Microsoft sin egen kompilator Visual Studio Express 2013 gratis för nedladdning här: http://go.microsoft.com/?linkid=9832280 Du måste registrera dig, men det är som sagt kostnadsfritt.

* C++ och SFML, om man vill komma ifrån terminalfönstret i Visual Studio Express och är mer intresserad av att skapa 2D spel än att skapa kontorsprogram kan man koppla ihop C++ med biblioteket SFML. Det är lättanvänt samtidigt som det har en aktiv grupp utvecklare och användare som gärna hjälper till om man kör fast. Eftersom utvecklaren är fransman finns all kod både på engelska och på franska. Jag har själv undervisat programmering i C++ kurs A till C, numera 1 till 3, på gymnasiet med just SFML som grafisk motor med bra resultat. Däremot har jag svårt att tänka mig att elever i grundskolan klarar av den här nivån på kodningen. SFML hittar du här: http://www.sfml-dev.org/ och det är helt gratis att använda. Licensen tillåter att man får sälja spel man tillverkat med SFML kommersiellt.

**Programmera appar**

Som ett brev på posten kommer eleverna att vilja programmera appar till sina telefoner. Det finns tre stora operativsystem att rikta sig mot,

* Windows phone. Man använder Visual studio, som inte är gratis. Tvärtom är det snuskigt dyrt. För att göra det ändå värre måste man betala en månadsavgift på runt 2000:- för att få publicera appar man gjort själv. Så även om C++ är rätt språk att lära sig, eller egentligen C#, så innebär kostnaderna kring utvecklingen att det inte är en vettig väg att gå innan man lärt sig att programmera.

* iPhone, vilket baseras på ett programmeringsspråk som heter cocoa objective C. C++ och det här språket har samma pappa, programmeringsspråket C. Det innebär att det är ungefär lika svårt att lära sig cocoa objective C som C++ och om ankan det ena är det relativt lätt att lära sig det andra. Har man programmerat en app i cocoa objective C är det inte bara att lägga ut den. det kostar pengar att lägga ut appar på app-store. Man kan gå runt det problemet och dela ut appen direkt till iPhones men då måste man "jailbreaka" mobilen. Hacka den, på enklar svenska. När telefonen hackats slutar garantin att gälla. Då är det ditt ansvar som lärare om något händer, och det är det inte värt. Läs mer här (engelska): https://developer.apple.com/programs/ios/

* Android, som är gratis. Kan du programmera java kan du skapa android-appar. Det är dock inte samma sak som att de går att publicera på Google play. Däremot kan man ställa in mobilen till att godkänna installation av appar utanför Google play. Då är det enklast att lägga ut app-filen på Internet, skapa en länk till den och låta eleverna surfa till sidan med länken i sina mobiler. När de klickar på länken installeras appen automatiskt.

Finns det ingen omväg?

Jo. Den ena är programmet Phone Gap. Det fungerar så att man skapar en hemsida. Anta att du vet i förväg vilka måltider som skall serveras i matsaen under hela läsåret. Skapa en hemsida med den informationen. Öppna sidan i Phone Gap och välj sedan viken sorts app du vill skapa. Det går att skapa appar både till Android och iPhone på det här viset. Däremot går det inte att skapa mer avancerade appar med Phone Gap. Appar som skapats med Phone Gap får man inte ta betalt för. Phone Gap hittar du här: http://phonegap.com/

Det andra är siter med snabbkonvertering av en existerande hemsida som byggts upp för mobiler i baktankarna. En är Appgeyser. Den fungerar endast för Android, men urvalet är större och man kan skapa annat än rena informations-appar jämfört med Phone Gap. Även Appgeyser är gratis. Appgeyser hittar du här: http://www.appsgeyser.com/create/start/ En annan är Appy Pie med liknande upplägg men den klarar även appar för iPhone. http://snappy.appypie.com/ men pumpar in en massa reklam i appen om du tar gratisversionen.

Den tredje går över ruby, men är inte gratis. Lär man eleverna ruby kan man sedan gå vidare med app-programmering med hjälp av ruby motion (http://www.rubymotion.com/ ) men den kostar runt 100:- i månaden för enklaste utvecklarversionen. Fördelen är att man kan ta betalt för apparna och samma kod skapar appar både till Android och iPhone.