Jag lärde mig programmera…

Jag började denna blogg med att berätta hur jag lärde mig programmera. Jag tycker att det är intressant att höra hur olika personer lärt sig programmera och det är också något som folk är rätt benägna att dela med sig av. Denna typ av berättelser var också del av den första videon av de som jag skrev om igår. Man kan också hitta en hel del sådana historier på nätet.

Idag vill jag tipsa om ilearnedtoprogram.com. Där finns hundratals korta historier om hur folk lärde sig programmera – jag har valt ut fyra som tilltalade mig. Jag gillar bredden av perspektiv som lyfts fram när man tvingas att koka ner historien till en mening på ganska få tecken. De flesta jag har sett handlar om varför (ibland konkret, ibland med känsla av efterkonstruktion) och vad (här är det ofta mycket konkret, språk, hårdvara, etc.).

Däremot pratar vi sällan om hur vi lärde oss läsa. Jag tänker mig att detta beror på att vi alla lär oss läsa på ungefär samma sätt, men är inte säker på att det är hela svaret. Om programmering tar större plats i skolan, kommer då sådana här historier att bli ointressanta, irrelevanta? Eller är programmering mer mångfacetterat och något som många ändå inte kommer att ägna sig åt (även om värdet i att ha förståelse för det består), vilket gör att denna typ av historier kommer att berättas även av våra barn och barnbarn?

ilearnedtoprogram-pamelafox

ilearnedtoprogram-animeshagarwal

ilearnedtoprogram-eliafreedman

ilearnedtoprogram-joncotter

Filmer som inspirerar till kodning?

När President Obama var en del av inledningen till Code Week gav det, inte helt oväntat, en del uppmärksamhet. Det finns även en kort video där presidenten berättar för amerikanska barn att det är viktigt att skapa saker och hur det är en del av den amerikanska identiteten.

De stora amerikanska initiativen som vill få fler att koda, som code.org och madewithcode.com, har producerat en hel del inspirationsfilmer som denna. Flera av filmerna riktar sig till elever, några till lärare och del är snarast framtagna för att bilda opinion. En del bygger på att kända personer (både de som är kända inom IT-industrin och sådana som är kända för annat) berättar om varför programmering är viktigt och varför det är viktigt för dem. I många fall handlar det om att visa förebilder, ibland mindre välkända sådana, för att visa på bredden av personer som arbetar med programmering. Här är några exempel på sådana filmer.

What Most Schools Don’t Teach (code.org)

Det här var en av code.orgs första filmer, som har fått förhållandevis stor spridning. Förutom att kända personer är med, så visar den även upp en bredd av personer som arbetar med programmering på företag som många känner till. De berättar om hur de började koda och en hel del handlar om att avdramatisera. Att detta handlar om en långsiktig rekrytering blir tydligt när man visar sina coola kontor. Man tar upp att datavetenskap finns överallt, att det kan ses som en ”super power” och att de som kan det kommer att vara framtidens rockstjärnor. Filmen är nästan fem minuter lång, vilket känns som att det är i längsta laget.

Code – The New Literacy (code.org)

En kortare film med liknande upplägg, men som framförallt handlar om att mjukvara finns överallt runtomkring oss och att det är viktigt att förstå språket som mjukvara är uppbyggt med även om man inte jobbar med det. Som titeln antyder kopplar man denna förmåga till läs- och skrivförmågan.

Made with Code – Erica Kochi

Här möter vi Erica som arbetar på UNICEF, där hon berättar hur de arbetar med mobiltelefoner. De flesta av filmerna från Made with Code lyfter fram kvinnor och tjejer som berättar om vad de gör med kod, till exempel cancerforskning, dans (denna är riktigt snygg!) och spelutveckling.

Computer Science for elementar school (code.org)

Denna video riktar sig till lärare i de yngre årskurserna. Man får möta lärare som arbetar med kod i klassrummet, som berättar om varför det är viktigt om och sina erfarenheter. Och så ser vi en massa barn som är glada och entusiastiska.

Funkar det?

Jag är lite kluven till dessa filmer. Men jag tänker att man får ta dem för vad de är, något som ska fånga uppmärksamhet och hitta olika sätt som elever kan identifiera sig med de som sysslar med kod. Frågan är hur väl de funkar för svenska elever?

code.org-youtube

Vill du kolla på fler a filmerna så kan du gå direkt till Code.org på YouTube (väldigt många videos) eller MadeWithCode på YouTube.

Översättningsbestyr

code.org-translation1

Idag blir det bara ett kort inlägg, jag använde min ”blogg-tid” för att översätta material till hourofcode.org. Nu är detta inget som ni kan se (i alla fall inte just nu) för det visar sig att minst 75% av materialet måste vara översatt för att ett språkalternativ ska visas någon av code.org:s siter (där ju hourofcode.org ingår). Dessvärre är bara 15% av hourofcode-siten översatt (av mig och några andra) till svenska i nuläget, så det känns inte görbart för mig att översätta så värst mycket av den (kodveckan är ju dessutom redan påbörjad – var inne och översatte en del för några veckor sedan, men kom av mig).

(Däremot är nästan 100% av code.org översatt!)

Ett problem med dessa typer av översättningssystem är att de kan vara ganska kontextlösa. Det finns flera typer av filer, och det är inte alltid tydligt hur de mappar till siten. Och på motsvarande vis kan det vara svårt att hitta var en översättning ligger om man hittar ett fel på siten. Vad jag kan se så finns det ingen sökfunktion i det översättningsplattform som code.org använder (sökrutan i ovankant verkar söka i alla projekt på plattformen Crowdin). Något jag gillar är att en del filer representerar hela sidor, så då kan man se sammanhanget. Det finns även översättningsfiler som har enstaka ord och fraser, som då används på flera ställen på siten.

code.org-translation2

Funderingar när jag översätter:

  • Hur viktigt är det att materialet finns på svenska? Särskilt sådant som snarast vänder sig till vuxna?
  • Hur viktigt är det att språket är rätt och kanske till och med har finess?
  • Hur hantera att man inte har någon att diskutera översättningar med i stunden (Hour of Code? Kodtimmen?) – det finns grundläggande diskussionsfunktioner, men jag har ju ingen aning om någon kommer att se dem den närmsta tiden.

Om du vill göra en insats, så hittar du instruktioner här. Jag tänker mig (hoppas!) att det kommer en kodtimme nästa år också, och att en hel del av materielet kommer att vara detsamma, så det är väl lika bra att bara gå in och översätta i god tid.

Kodtimmen – massor av aktiviteter att prova!

Måndagen 8 december till söndagen 14 december 2014 är det CSEdWeek, det vill säga datavetenskapsutbildningsveckan (säg det tre gånger snabbt…).

Kodtimmen är kopplad till denna vecka och riktar sig till grundskolan och gymnasiet. Det finns massor av olika programmeringsintroduktioner man kan prova, där tanken är att dessa ska kunna utföras på en timma, och att denna timma kan infalla när som helst under veckan. (De flesta av aktiviteterna är tillgängliga även innan och efter veckan.) Ett tänkt upplägg är att lärare ska avsätta klassrumstid för att alla elever ska prova på en av dessa aktiviteter – om man gör det uppmanas man att berätta det och det visas som en av många pluppar på världskartan.

Kodtimmen kördes för första gången förra året av code.org. Initiativet sponsras av flera stora teknikföretag, för dem handlar det om att säkra framtidens rekryteringar. Tycka vad man vill om detta, men det har skapat många ingångar till programmering och filmer med kända personer som berättar om varför programmering är intressant och viktigt.

Här kan du läsa om några exempel på kodtimmesaktiviteter. Jag får erkänna att jag hittade betydligt fler resurser än jag väntat mig när jag började leta material för detta inlägg. Code.org, Scratch och Codecademy var givna, men det finns en massa annat som ser roligt ut.

Code.org

code.org-hoc

Code.org, som lanserade kodtimmen förra året, har flera kodintroduktioner som är tänkta att funka för alla åldrar (givet att man kan läsa). Förra årets aktivitet är med bland annat Angry Birds. I våras lanserades Flappy Code, där man bygger sitt eget Flappy Bird-spel. I senaste tillskottet är temat Disneys Frozen. Övningarna görs i ett visuellt programmeringsspråk, Blockly, som är likt det som används i Scratch.

code.org-hoc-frozen

Fler övningar hittar du på studio.code.org. En hel del av materialet finns översatt till svenska, men inte allt. Du kan göra en insats och översätta mer!

Grok Learning

grok-hoc-diseaseoutbreak

Grok Learning har fyra Python-aktiviteter och en Blockly-aktivitet som en del av sin kodtimma. Man kan bland annat bygga en enkel chatbot (som heter Eliza, en fin vink till ett historiskt program :-)), skapa en modell för ett sjukdomsutbrott eller göra ett textbaserat spel. Det verkar vara bra övningar om man vill köra kodtimmen med lite äldre barn. Mitt första intryck av interfacet var att det inte var helt lätt att se vilket steg man var på, och att det inte var helt intuitivt att man behövde köra programmet innan man fick trycka på rätta-knappen (även om det är ett rimligt upplägg). Detta går nog bra att komma runt med hjälp av instruktioner. Allt innehåll är på engelska.

Processing

processing-hoc

Processings kodtimme har ett lite annat upplägg en flera av övriga aktiviteter. Dels för att den kör ett upplägg med små videoföreläsningar (med en mycket entusiastisk föreläsare), följt av övningar i webbläsarfönstret. Dels för att den har en något annan målgrupp: elever som är intresserade av konst och design (vilket inte är så konstigt, eftersom det är detta som språket Processing syftar till). Allt innehåll är på engelska.

Fler möjligheter

Detta var bara några av aktiviteterna jag hittat. Här är några fler kodtimme-övningar:

  • Scratch interaktiva julkort, som jag skrivit om tidigare och gjort mitt eget.
  • Hopscotch hour of code – Specialvariant av ipad-appen Hopscotch. Det finns youtube-filmer för att stödja aktiviteterna, där man bland annat bygger ett spökbollsspel där man kastar mat. På engelska.
  • Codecademy hour of code – Introduktion till JavaScript där man bygger ett program som gör en färgglad, interaktiv animation av sitt namn. På engelska.
  • App Inventor hour of code – Filmer och handledningar som bland annat visar hur man kan skapa en Android-app som omvandlar text till tal. MIT App Inventor är ett verktyg där man använder visuell programmering för att bygga Android-program. Mest givande om man har Android-telefoner att köra på. På engelska.

Programmering som julpyssel

julgran

Made with Code: Julgran och snöflinga

Google har ett projekt för att skapa intresse för programmering som heter Made w/ Code. Just nu får det en del uppmärksamhet, eftersom de har ett programmeringsprojekt där vem som helst kan koda (en del av) designen för hur julgransljusen på granarna utanför Vita huset ska lysa.

Skärmavbild 2014-12-05 kl. 20.17.09

Med hjälp av grafiska kodelement ställer man in bland annat färg och hastighet på ljusen. Man kan sedan välja ett träd där denna design ”spelas upp” vid ett tilldelat klockslag. Min design visas på Florida-trädet den 18 december runt kl 16:38 (EST). Frågan är hur stämningsfullt det blir när trädens ljusmönster skiftar hela tiden?

madewithcode-snowflake

Made w/ Code har ett annat projekt med jultema, där man skapar sin egen animerade snöflinga (den jag skapade ser ni ovan, minus animationen då, för den fick man visst inte med i delningen). Jag tyckte att denna var roligare och mer intuitiv än julgransbelysningen – vilket är lite märkligt med tanke på att julgransbelysningen stod som nybörjare och denna som mellansteg.

Scratch: interaktiva julkort eller julinspirerade spel

Scratch har en guide för att hjälpa en att bygga interaktiva julkort, som visar hur man väljer juliga sprites, flyttar och växlar klädsel på dem. Den visar även hur man kan välja en vintrig bakgrund och spela bakgrundsljud. När man är färdig kan man ladda upp dem till projektgalleriet, där man kan kika på andras kort.

Scratch-julkort

Förutom animerade julkort kan man även göra julinspirerade spel med Scratch. Vad sägs om en jultomte-racer eller en nisse som fångar klappar från jultomtens flygplan? Tomte-racerna kommer med detaljerade instruktioner (på engelska) för hur man kan skapa en egen. Man kan också ladda ner Scratch-filen för att göra en egen version, eller bara kolla hur koden ser ut för en viss del av spelet.

Några exempel på hur man kan använda programmering som julpyssel – kanske kommer det några fler under december. I vilket fall som helst så lovar jag att återkomma med mitt egna julkort i Scratch.

Att lära ut programmeringskoncept med fiktionens hjälp

Jag var tretton år när Sofies värld kom ut på svenska. Även om jag inte minns så mycket av handlingen så minns jag att jag gillade idén om att lära mig om filosofi och filosofihistoria genom en roman.

De senaste åren har det kommit ut ett antal böcker för barn och ungdom som handlar om programmering. En del rena programmeringsböcker (som Python for Kids och Learn to Program with Scratch), men också sådana som använder berättelsens form för att tillgängliggöra koncept som algoritmer, rekursion och länkade listor.

Den bok som kanske fått mest uppmärksamhet (även DN har skrivit en artikel) har faktiskt inte kommit ut ännu: Hello Ruby av Linda Liukas. Boken drog in drygt $380.000 på Kickstarter och väntas komma ut hösten 2015.

Boken Lauren Ipsum

Lauren Ipsum, skriven av Carlos Bueno och illustrerad av Ytaelena Lopez, är en barnbok för att lära ut datavetenskapliga koncept. Bilderna är charmiga och vad jag kan se på recensionerna på Amazon så går den i alla fall hem hos 9-åringar. Några av bokens kapitel kan man läsa på bokens hemsida.

Böckerna Computational Fairy Tales och Best Practices of Spell Design

Jeremy Kubica har skrivit två böcker med liknande teman: Computational Fairy Tales och Best Practices of Spell Design. Computational Fairy Tales går igenom hyfsat avancerade datavetenskapliga begrepp genom att läsaren följer princessan Ann när hon ska rädda kungariket från Mörket. Enligt recension på Wired så passar boken för en alla från gymnasieåldern, eller yngre med guidning av vuxen eller fallenhet för ämnet. Best Practices of Spell Design handlar om goda vanor vid programvaruutveckling, som testning, kommentarer och variabelnamn. Författaren har även en blog där det verkar finnas rätt mycket material, som eventuellt är snarlikt det som finns i böckerna.

Kopplingen till magin och trollformler är ett inte helt ovanligt grepp. Den görs bland annat i Code Crafter, som får lite mer blandade recensioner än böckerna ovan på Amazon.

Dessvärre så finns böckerna inte på svenska.

Jag har länkat till Amazon ovan, eftersom det finns mer information om böckerna där än på t ex Adlibris och Bokus, där böckerna också finns att köpa.

Jag har ännu inte läst någon av dessa, men tänker köpa några av dem och återkomma.

Primo – programmering för de yngsta

Den här upptäckte jag för bara någon vecka sedan och blev kär direkt! Primo lär yngre barn en av grunderna i programmering – att logiskt sätta samman sekvenser – genom att använda fyra typer av klossar, med olika färg och form. Målet är att guida en leende robot till sitt mål (dess hem) genom att placera klossarna i en fungerande ordning i en ”gränssnittslåda”.

Vad är det då som gjorde att jag föll för Primo?

  • Den ger en tydlig inbyggd visualisering av instruktionen (till skillnad från till exempel Bee Bot) – vilket jag tänker mig bland annat underlättar felsökning.
  • Man kan lägga till en funktion, så att ett visst mönster kan upprepas flera gånger.
  • Det är något visst med att den är gjord i trä.
  • Den är open source och bygger på Arduino – så jag kan bygga en egen. Instruktionerna har ett intressant bakgrundsavsnitt också. Jag kommer att behöva lära mig lite nya skills för att bygga en, men en utmärkt anledning att bli medlem i Fabriken på Stpln.

Man kan så klart även köpa en färdig. Den kostar drygt 200 euro och levereras i början av nästa år  (det verkar som att de som deltog i deras Kickstarter inte har fått sina ännu).

Alla ska koda?

För någon vecka sedan var det Geek Girl Meetup Öresund på Media Evolution City. Ett utmärkt tillfälle att prata om programmering i skolan, och givet forumet en liten twist om varför det är förhållandevis få kvinnor som läser till och arbetar som programmerare (och hur vi kan ändra det). En del av problemet är att många som läser datavetenskap sedan inte stannar kvar inom branschen, men det är inte det som jag fokuserar på.

Jag tror att om fler kommer i kontakt med ämnet på ett genomtänkt och mångfacetterat vis som en del av grundskolan, så kommer det att få stort genomslag. Det är dessutom väsentligt ur ett demokratiskt perspektiv, för att förstå samhället och de system som vi använder dagligen.

Det är idag förhållandevis många som arbetar för att barn ska programmera, och det finns många olika sätt att börja, till exempel:

  • Helt utan datorer, genom att barnen ”programmerar” sin förälder enligt ett begränsat instruktionsset.
  • Med Primo och Bee Bot lär man sig bygga enkla program för att styra en robot, till exempel genom en enkel labyrint.
  • code.org, som har flera olika programmeringsintroduktioner och som kör kodtimmen 8-14 december i år.
  • Scratch – ett populärt grafiskt verktyg för att lära sig programmera genom att bygga spel och berättelser.

Men, i många fall så sker detta genom fritidsaktiviteter. Inget ont om dessa, de är ofta drivna av engagerade volontärer. Min bild är dock att det ofta är de som redan på ett eller annat vis skulle komma i kontakt med programmering som nås av dessa fritidsaktiviteter. Därför tror jag det är viktigt att programmering kommer in i skolan. Just nu är jag inne på att det främst bör ske genom att integrera det i de ämnen som redan finns, snarare än som ett eget ämne. Dels för att det finns kopplingar till alla skolans ämnen, i olika utsträckning, dels för att det blir mindre sårbart än om ett barns bild av programmering formas av säg en lärare och en kurs i en viss årskurs. Här ska det bli spännande att se vad Karin Nygårds och Terese Raymond kommer fram till på Teacherhack, där de kommer att gå igenom hur programmering och digitalkunskap kan förankras i läroplanen.

Förutom att se bortom fritidsaktiviteter och teknik, behöver vi också se bortom kod och programmering (därav frågetecknet i rubriken, bland annat). Detta genom att titta på det större begreppet datalogiskt tänkande (eng. computational thinking) som handlar om koncept och angreppssätt som är en del i att bygga mjukvara, men som också är användbara i många andra sammanhang. I presentationen har jag med en bild som illustrerar vad som kan ingå i begreppet (bilden är från Barefoot Computing). Jag planerar att skriva mer om detta under december.

Det kom många intressanta frågor under presentationen och ännu mer diskussion på slutet. Jag avslutade med att fråga efter

  • kontakt med lärare och skolor
  • om någon vill dra igång Geek Girl Mini Öresund med mig
  • och om någon vill köra en omgång av Coursera-kursen Tinkering Fundamentals med mig efter jul (den gick i somras och går igen nästa sommar, men har man ett socialt sammanhang och inte behöver intyget så hindrar ju inget att man kör den när man vill)

Jag fick mer respons än jag väntat mig! På torsdag kör vi en första planeringslunch om Geek Girl Mini Öresund.

En början

Här tänker jag skriva om programmering och datalogiskt tänkande (det engelska ordet, computational thinking, är betydligt mer etablerat), i skolan, med barn och i allmänhet. Det blir nog även lite om maker-rörelsen och allmänna nörderier.

Passar på att göra #blogg24 – det passar väl i tiden för mig att komma igång med min blogg (tack för tipset Ida).

Vem är jag? Jag avslutar just en anställning som lektor i datavetenskap på Malmö högskola. Nu vill jag arbeta för att programmering ska in i skolan, eftersom jag tycker att datalogiskt tänkande och det som hör till är verktyg som alla i alla fall ska ha kommit i kontakt med.

Till slut, min programmerings-”origin story”: Jag började inte programmera förrän jag började läsa datavetenskap vid Lunds universitet, vilket jag gjorde främst för att jag ville läsa kognitionsforskning på D-nivå (och tänkte att datavetenskap nog var nyttigare än bara psykologi eller filosofi, som det också blev en del av). Det blev en kandidat i datavetenskap, och jag undrade varför jag aldrig föll för programmering när jag var yngre. Stötte på det i sjuan i USA, men det gav inte mersmak (har funderat en del på vad det berodde på – min bild är att vi inte gjorde något som var problemlösande eller utmanande – jag gick å andra sidan bara halv kursen pga flytt). Försökte mig också på AMOS på Amigan (det införskaffades en Amiga 1000 någon gång på 80-talet), men kom aldrig riktigt igång – ingen jag kände höll ju på med något sådant. När jag väl lärde mig att programmera så tyckte jag att det var något som jag gärna ägnat mer tid åt under min tonår.