Dagens ord


Ansvar väger tyngre än frihet - Responsibility trumps liberty

12 maj 2012

Varför lära sig programmera?

Jan Sundström, lärare på Minervaskolan i Umeå, presenterar i dagarna sina tankar runt frågan "Varför undervisar man i programmering" för tekniklärare i grundskolan.

Att införa programmering på högstadiet är önskvärt av många skäl, menar Jan:
  • Programmering kan upplevas som roligt och motiverande.
  • Programmering kan vara ett stöd för andra ämnen. (Jag utvecklar denna tanke nedan.)
  • Kännedom om programmering och om hur datorer fungerar kan räknas till allmänbildningen och krävs för förståelse av omvärlden.
  • Vi kommer att behöva många duktiga programmerare med spetskompetens i framtiden.
Jan diskuterar bl.a. ett intressant (och oroande) fenomen, nämligen att det, i takt med persondatorernas utveckling, kommit att betraktas som "fult" och "opedagogiskt" att ta upp programmering och hur datorer fungerar i skolan. I stället har man talat om att eleverna endast skall lära sig att "använda datorn som ett verktyg".

Jag vill gärna bidra till listan ovan med några reflektioner.

Att lära sig programmera är att lära sig tänka. Att lösa problem på ett systematiskt sätt. Att klargöra och resonera kring en lösning på ett tydligt och otvetydigt sätt. Att strukturera. Att träna bevisföring. Att lära sig att förstå det mänskliga intellektets svagheter och styrkor. Att kritiskt ifrågasätta sina antaganden och konstruktioner. Att felsöka.

Att träna upp sin metakognitiva förmåga att, genom introspektion, göra klart för sig själv hur man faktiskt gjorde när man löste en uppgift "i huvudet", så att man kan beskriva detta för en "dum" dator (eller en annan människa). Just denna förmåga är vad som krävs - och saknas hos så många - för att i matematiken gå från rutinartade procedurer till generella algebraiska lösningar, resonemang eller bevis. (Jag såg på TV häromdagen att man på en del skolor i Ryssland använder schack i skolorna för att åstadkomma ungefär samma saker.)

I förlängningen handlar det, för att vara pretentiös, om att fostra goda medborgare, tjänstemän och politiker; kunskapsproducenter och -konsumenter.

Jan för ett resonemang om att programmering kräver att den mentala utvecklingen har nått en viss nivå, och att det kanske är för tidigt att börja i mellanstadiet. Det stämmer nog, delvis. Men å andra sidan är sådant som programmering en nödvändig förutsättning för att en viss typ av utveckling över huvud taget ska ske.

Efter att tidigare ha undervisat på universitetet befinner jag mig sedan sex år på gymnasiet. Den mest slående erfarenhet jag har gjort där är att så många elever finner programmering så svårt. Framför allt upplever jag att de flesta elever egentligen borde kunna ta till sig undervisningen, men att många inte gör det. Mitt mantra - att man först måste lösa problemet (i huvudet, med papper och penna) och ha klart för sig vad man vill göra, innan man kan skriva någon programkod (vilket då blir närmast trivialt) - verkar ofta ringa för döva öron, på ett anmärkningsvärt sätt. Jag får ibland känslan av att detta är första gången eleverna tvingas försöka lösa problem över huvud taget, och att det är alldeles för lite alldeles för sent. De tänker helt enkelt inte algoritmiskt, och har därför ingen möjlighet att skriva (god) programkod.

De nya ämnesplanerna efter gymnasiereformen, Gy11, lägger ännu större vikt vid (avancerad) kodning än de tidigare. Men detta förutsätter en - icke-existerande - grundkurs, eller motsvarande färdigheter, i grundläggande problemlösning. En uppenbar risk är att eleverna tappar bort sig i syntax och objektbibliotek och vare sig lär sig programmera eller att skapa algoritmer.

2 kommentarer:

  1. När jag började lära mig programmering (året 1984) så hade jag inte tillgång till dator. Språket: FORTRAN IV. Landet: Kosovo. Halva terminen gick på algoritmer och blockschema. Halva terminen kodning på papper! Sista veckan fick vi en konkret uppgift där vi skrev koden på ett A4 papper som vi lämnade till läraren. Han i sin tur testade kodningen i lugn och ro på en dator som fanns i den lokala banken. Och det gick bra! Jag förespråkar också algoritmer först och kodning sedan.

    SvaraRadera
    Svar
    1. På 90-talet, när jag läste datavetenskap på universitetet, hade vi många skriftliga programmeringstentor. Det blev en hel del A4-sidor med kod i olika språk. Visst glömde man något semikolon här och där, men man fick vara sin egen kompilator och se till att köra programmen i skallen tills man var säker på att de var korrekta.

      Goda färdigheter i samband med kontrollerade kognitiva funktioner beror på två saker: intelligens (IQ); och självkontroll. Jag tror att det är det senare som ofta saknas.

      Radera