qr code

Datalogi och didaktik

Introduktion

Datalogi och didaktik

Introduktion

Från och med höstterminen 2018 är det obligatoriskt att undervisa programmering i svensk grundskola. Programmering är inte ett enskilt skolämne utan ingår som delmoment i ämnena teknik och matematik.

På gymnasienivå finns, liksom tidigare, valbara kurser i programmering. En nyhet på gymnasiet är att programmering ingår i en del av gymnasiets matematikkurser, kurserna Ma1c, Ma2c, Ma3b, Ma3c, Ma4 och M5. Programmering i matematikämnet på gymnasiet ingår alltså för elever som studerar matematikintensiva program såsom naturvetenskapsprogrammet eller teknikprogrammet. För elever som studerar andra program, kommer programmering in i matematikämnet endast om de läser Ma3b.

Programmering i matematikämnet

Vi ska se hur programmeringsdelen av matematikämnet formuleras i skolans kursplaner.

För årskurs 1‐3 ingår programmering i matematikämnet med följande formulering under rubriken Algebra:

Hur entydiga stegvisa instruktioner kan konstrueras, beskrivas och följas som grund för programmering. Symbolers användning vid stegvisa instruktioner.

Lägg märke till att det inte står att eleverna ska programmera. Undervisningen kan istället gå till på så vis att eleverna ger instruktioner till varandra.

För årskurs 4‐6 ingår programmering i matematikämnet med följande formulering under rubriken Algebra:

Hur algoritmer kan skapas och användas vid programmering. Programmering i visuella programmeringsmiljöer.

Denna formulering knyter inte an till matematikämnets övriga innehåll. Det handlar alltså inte om programmering för att lösa matematiska problem. Istället handlar det om allmän programmering som i sig innehåller mycket matematik som är relevant på mellanstadiet.

För årskurs 7‐9 ingår programmering i matematikämnet dels under rubriken Algebra med formuleringen:

Hur algoritmer kan skapas och användas vid programmering. Programmering i olika programmeringsmiljöer.

och dels under rubriken Problemlösning med formuleringen:

Hur algoritmer kan skapas, testas och förbättras vid programmering för matematisk problemlösning.

Den första formuleringen knyter an till mellanstadiet med den skillnaden att eleverna nu inte bara ska använda sig av visuella programmeringsmiljöer. Det är alltså fortfarande så på högstadiet att programmeringsundervisningen till stor del handlar om allmän programmering, som i sig innehåller mycket matematik relevant för högstadiet.

Den andra formuleringen för högstadiet knyter an till matematikämnets övriga innehåll och påminner om det som väntar vissa elever på gymnasiet, närmare bestämt de elever som kommer att studera på matematikintensiva gymnasieprogram.

För gymnasiets matematikkurser Ma1c, Ma2c, Ma3b, Ma3c, Ma4 och M5, ingår följande formulering under rubriken Problemlösning:

Strategier för matematisk problemlösning inklusive modellering av olika situationer, såväl med som utan digitala verktyg och programmering.

Visuella och textbaserade programmeringsmiljöer

I en visuell programmeringsmiljö behöver man inte skriva programmeringskod utan kan istället sätta ihop ett program genom att pussla ihop visuella kodblock. Sådan programmering kallas blockprogrammering.

fråga i Scratch
Exempelkod i blockprogrammeringsspråket Scratch.

Med textbaserade programmeringsmiljöer skrivs koden som text. I framtiden kommer man kanske kunna skapa kod genom att tala, eller skapa kod med andra metoder. De nuvarande kursplanerna för högstadiet specificerar inte vilka programmeringsmiljöer som menas med "olika programmeringsmiljöer" men i nuläget måste denna formulering tolkas som "både visuella och textbaserade programmeringsmiljöer".

När programmet körs

Kursplanerna för högstadiet specificerar att olika programmeringsmiljöer ska användas men nämner inget om hur det ser ut när programmet körs.

När ett program som är skapat i en visuell programmeringsmiljö körs, körs programmet i regel i i en visuell miljö.

körning i Scratch
Körning av ett Scratchprogram.

Med en textbaserad programmeringsmiljö kan man också skriva program som körs i en visuell miljö, men för de vanligaste programmeringsspråken är detta inget man gör som nybörjare i programmering. Traditionellt har nybörjare i programmering lärt sig programmera genom att använda programmeringssspråk som körs i en så kallad textkonsol.

Exempel 1

Följande kod är skriven i programmeringsspråket Python.

svar = input("Vad heter du?")
for i in range(10):
  print("Hej", svar, "!")

När koden körs visas körningen i en textkonsol.

Python-körning
Körning av Python-kod.

Du kan testa att köra koden själv. Gå till sidan repl.it och välj programmeringsspråket Python. Kopiera och klistra in koden, klicka sedan på run.

För programmeringsspråket Python är både koden och körningar av nybörjarprogram textbaserade.

Det finns programmeringsspråk som skrivs i en textbaserad programmeringsmiljö men körs med ett så kallat grafiskt användargränssnitt.

Exempel 2

Följande kod är skriven i programmeringsspråket Processing.

function setup() {
	createCanvas(windowWidth, windowHeight);
	background(100);
}

function draw() {
	ellipse(mouseX, mouseY, 20, 20);
}

När koden körs ritas det upp små vita cirklar när man drar med muspekaren över skärmen.

Processing-körning
Körning av Processing-kod.

Du kan testa att köra koden själv på sidan editor.p5js.org/.

Ett program som körs med ett grafiskt användargränssnitt använder sig av grafiska objekt som användaren kan interagera med. Användaren kan styra vad som kan hända genom att klicka på menyer eller knappar, eller använda tangenttryckningar. Ett program som styrs av den här sortens händelser, exempelvis musklickningar och tangenttryckningar, sägs vara händelsestyrt.

Programmering på högstadiet

De elever som framöver ska lära sig att programmera i grundskolan skiljer sig från traditionella nybörjare i programmering på så vis att de är yngre och att de inte själva väljer att lära sig programmera. Förutsättningarna för undervisningen är väsentligen annorlunda än frivilliga kurser på gymnasium och universitet.

Digitala infödingar?

Dagens barn är vana användare av digital teknik i allt yngre åldrar, exempelvis använder ungefär hälften av alla åttaåringar och en femtedel av alla tvååringar internet dagligen ‐ enligt Statens medieråd. Att de i en tidig ålder gör bekantskap med digital teknik innebär dock inte att dagens elever är exceptionellt digitalt kompetenta eller att inlärning sker på ett väsentligen annorlunda sätt. År 2001 skrevs en artikel[1] av Marc Prensky i vilken han myntade begreppet "digital native". Prensky menade att dagens unga är födda in i en digital värld till skillnad från dagens äldre, vilka Prensky beskriver som immigranter i den digitala världen. De digitala infödingarna inhämtar och bearbetar information på ett sätt som skiljer sig från hur de digitala immigranterna gör, enligt Prensky. Sedan dess har det skrivits flera rapporter[2, 3] som slagit hål på myten om de digitala infödingarna och framför allt framhållit att dagens unga inte är bättre på multitasking.

Tre programmeringsspråk

Programmeringsundervisningen på högstadiet ska både knyta an till programmeringsundervisningen på mellanstadiet och förbereda eleverna för vidare studier på gymnasiet. Det är på högstadiet som eleverna ska ta steget från visuella till textbaserade programmeringsmiljöer. Detta steg är troligen den högsta tröskeln de ska ta sig över då de lär sig programmera.

De flesta högstadieelever är mycket vana vid att köra datorprogram av olika slag men de allra flesta har aldrig använt något datorprogram som körs i en textkonsol. Även om program som körs i en textkonsol traditionellt har varit inkörsporten för nybörjare i programmering, är det inte alls säkert att detta är en lämplig inkörsport för elever i grundskolan. Vi kommer därför att använda tre programmeringsspråk:

  • Scratch är ett programmeringsspråk med en visuell programmeringsmiljö.
  • Processing är ett programmeringsspråk som skrivs i en textbaserad miljö. Program skrivna i Processing är händelsestyrda och har grafiska användargränssnitt. Processing är speciellt lämpligt som en övergång från visuell till textbaserad programmeringsmiljö.
  • Python är ett programmeringsspråk som skrivs i en textbaserad miljö. Som nybörjare gör man program i Python som körs i en textkonsol.

Dessa tre programmeringsspråk finns i varianter som kan laddas ner och varianter som kan köras online.



Referenser

Skolverket: Läroplan och kursplaner för grundskolan > Matematik

Skolverket: Läroplan, program och ämnen i gymnasieskolan > Ämne - Programmering

Skolverket: Läroplan, program och ämnen i gymnasieskolan > Ämne - Matematik

Statens medieråd: Småungar & medier 2017

[1] 2001, Digital Natives, Digital Immigrants, av Marc Prensky

[2] 2008, The 'digital natives' debate: a critical review of the evidence, av S.Bennet m.fl.

[3] 2017, Nature: The digital native is a myth