Lär dig programmera - bakgrund
Programmering - en eftertraktad kunskap på arbetsmarknaden
År 2012 nämndes inte ordet programmering i läroplanen, programmeringskurserna på gymnasiet var inte obligatoriska och den sneda könsfördelningen, som vi såg på LTHs civilingenjörsutbildningar inom Elektro- och Datateknikvetenskap, var synlig redan i grundskolan.
Med tanke på att mänskligheten idag befinner sig i en digital samhällsrevolution och att kompetens i programmering är högt eftertraktad på arbetsmarknaden insåg vi att vi kunde göra en insats för att stärka denna kunskap hos skoleleverna och deras lärare.
Institutionen för datavetenskap och Vattenhallen Science Center inledde 2012 ett samarbete för att utveckla koncept för att fler ungdomar skulle få prova på att programmera. Vi har sedan dess arbetat systematiskt, och på bred front, för att påverka situationen.
Några av de viktiga projekt och aktiviteter som vi tillsammans har utvecklat och genomfört är:
- Fria utbildningsmaterial att användas i skolorna, i programmeringsspråken: Kojo/Scala, Arduino, Micro:bit och Python.
- Aktiviteter för skolklasser och praoelever som besöker Vattenhallen Science Center.
- Aktiviteter som används i ExperimentExpressens outreach-verksamhet på skolor, festivaler och allmänna institutioner.
- Aktiviteter för allmänheten.
- Skolteman: Rymden och robotar (förskolan), Programmering för alla (årskurs 4-6) och Robotprogrammering (årskurs 7-gymnasiet).
- Robotshow.
- Lärarfortbildningskurser, workshops, inspirationsdagar och fler fortbildningstillfällen som har ställts samman utifrån lärarnas behov.
- Medverkan i Lärarlyftet i teknik för högstadielärare vid Malmö universitet.
- 7.5 hp kurs i programmering för högstadielärare.
- Medverkan i Psykologiska institutionens forskningsprojekt om ungas kompetenstro: "Klart jag kan koda".
Finansiärer och samarbetspartners genom åren har varit: LTH, LU uppdragsutbildning, Lalit Pant grundare av Kojo, Sparbanken Skåne, Malmö universitet, Skolverket, Svenska Science Centers, Rymdstyrelsen, ELLIIT, ICOS, Google och code@LTH.
Lärare från flera institutioner vid Lunds universitet har genom åren engagerat sig i utvecklingen: Datavetenskap, Naturgeografi och ekosystemvetenskap, Reglerteknik, Elektro- och informationsteknik, Psykologi.
Därför borde alla lära sig programmera
När den obligatoriska och kostnadsfria allmänna folkskolan beslutades av Sveriges riksdag 1842 så var det under livlig debatt. Idag ifrågasätts inte att alla barn ska lära sig läsa och skriva. Då ifrågasattes det om jordbruksarbetare verkligen behövde ges dessa tillgångar. Idag ifrågasätts det av vissa om alla barn behöver lära sig programmera i grundskolan. Vissa tror det räcker med "digital kompetens" som fokuserar på användande av de program som finns idag (men som är föråldrade i morgon). Jag är övertygad om att kärnan i den kompetens som behövs hos alla medborgare i morgondagens samhälle ligger i förståelsen för hur mjukvara blir till och förmåga att själv delta i utformingen av datorernas beteende.
Hur detta kan ske rent praktiskt med hjälp av Kojo kan du se i en film (ny flik, video) med svensklärare Karin Nygårds på Sjödalsskolan i Stockholm.
Några framsynta skolor går redan före och har programmering på schemat. Detta är ett viktigt steg på vägen till att de politiker och skolledare som bestämmer över skolans budget inser att samhällsomvandlingen kräver programmeringskunskaper till alla! Detta är inte bara en debatt om vilka ämnen som ska ingå i grundskolan utan en grundläggande principiell fråga om vilka tankeverktyg och påverkansmöjligheter vi ger morgondagens medborgare för att de ska kunna delta i demokrati och samhällsutveckling. De som kan programmera har väsentligt bättre förutsättningar att ta makten över maskinen, samhällsutvecklingen och sin egen framtid. Alla som kan lära sig läsa och skriva kan lära sig programmera! Och det är dessutom en himla kul utmaning...
Därför börjar vi med Scala-programmering och Kojo
Det finns många olika språk och system för att lära sig programmera, så varför just använda språket Scala och programmeringsverktyget Kojo när vi ska hjälpa barn att upptäcka programmering?
Kojo är det bästa verktyg jag sett för att göra "riktig" programmering tillgänglig för barn genom en låg lärandetröskel och samtidigt med fördjupningsmöjligheter ända upp till universitetsnivå.
Kojo använder Scala som är ett modernt och kraftfullt språk med det allra senaste inom programmeringsforskningen. Scala används professionellt av fler och fler systemutvecklare över hela världen. Scala erbjuder en avancerad verktygslåda som gör att programmen blir både kortfattade och lätta att bygga vidare på och lämpar sig för programmering både i liten skala för nybörjare och i extremt storskalig programmering med miljoner rader programkod. Om man lär sig Scala som sitt "modersmål" för programmering har man en flygande start i framtidens programmeringsvärld!
En stor fördel med Scala jämfört med till exempel Java är att Scala har så kallad typhärledning, vilket innebär att kompilatorn (det program som tolkar koden du skriver och gör om den till maskinkod som datorn kan köra) är smart nog att lista ut en hel del saker som du därmed slipper att skriva. Kompilatorn förstår om du vill ha ett heltal, en textsträng eller ett decimaltal då du använder dessa utan att du även måste skriva ett speciellt typnamn som i Java och många andra äldre språk.
I många barnprogrammeringsprojekt används det som kallas dynamiskt typade språk, där Python och Javascript är vanliga exempel. Fördelen med dessa, jämfört med statiskt typade språk så som Java, är att det blir mindre att skriva och man kan göra lite hur som helst med typerna utan att kompilatorn bryr sig. Den stora nackdelen med dessa språk är att kompilatorn inte i särskilt stor utsträckning kan hjälpa till att hitta buggar (programmeringsmisstag), utan man får vänta tills man kör programmet och då klia sig i huvudet medan programmet ”går sönder”. Med statiskt typade språk kan kompilatorn redan när du skriver programmet hitta många kluriga buggar och dessutom ge ett vettigt felmeddelande. Scala är statiskt typat men undviker "pratigheten" tack vare sin smarta typhärledning.
Jag har använt Scala i flera år nu med både barn i lågstadiet och doktorander vid LTH och språket är ett fantastiskt verktyg både för nybörjaren och för dataforskarna. Jag tycker man ska börja lära sig grunderna i ett professionellt språk direkt (precis som engelskundervisningen börjar med engelska) och jag tycker man ska använda ett språk som har typkontroll och därmed ger bra stöd för att hitta buggar redan innan man kör sin kod. Dessutom är Scala gratis, och fritt (i meningen att det inte är ett enskilt kommersiellt företag som bestämmer) med en global, öppen utveckling som kontrolleras av ett välrenommerat universitet i Lausanne (EPFL) med forskningsmedel från EU:s ramprogram.
Därtill finns det en het diskussion som har att göra med hur morgondagens programmering kommer att se ut när vi har allt fler kärnor i processorerna som tvingar oss att tänka på ett helt annat sätt när vi programmerar. Så kallad funktionsprogrammering hjälper till så att programmen lättare kan köras parallellt på tusentals olika kärnor. I Scala kan man kombinera funktionsprogrammering med s.k. objekt-orienterad programmering på ett enhetligt och kraftfullt sätt. Vinsten med funktionsprogrammering blir extra tydlig när vi gör riktigt stora program och framtidens massivt parallella superdatorer finns i varje lite grunka, vilket våra barn kommer att få ta del av när de växer upp och ska forma morgondagens samhälle ...