Torben Mogensen header

Programmering for børn

Dette indlæg følger op på diskussionen om en artikel om, at børn i Estland skal lære at programmere fra første skoleklasse.

Selv om jeg er enig i præmissen om, at børn har godt af at lære programmering, så synes jeg ikke, at programmeringen er målet i sig selv. Det er mest af alt evnen til at arbejde systematisk, eksakt og reflekterende med komplekse problemer, der bør være i fokus. Denne evne kan bruges i mange situationer, der slet ikke vedrører programmering af datamater, for eksempel:

  • Til at vurdere kompleksiteten af opgaver.
  • Til at skrive en tekst på dansk (eller andre "menneskesprog"), hvor tvetydigheder og usagte antagelser minimeres. Dette er særligt hensigtsmæssigt i forhold til lovtekster, instruktioner og lignende tekster.
  • Til at finde hensigtsmæssige arbejdsgange i virksomheder og organisationer.
  • Til at designe brugbare redskaber, apparater og lignende.

Men idet den systematiske tilgang til problemer er essensen i projektet, bør denne inddrages i undervisningen alle steder, hvor det er relevant, og ikke nødvendigvis altid sammen med en computer.

Da jeg første gang sad ved en datamat, kunne jeg ret hurtigt finde ud af at lave ikke-trivielle programmer. Det skyldtes ikke, at jeg var et geni, men at jeg allerede før, jeg så en datamat, havde lært den systematiske metode. Det havde jeg dels i kraft af nogle gode lærere i folkeskolen og dels i kraft af, at jeg var glad for både logiske opgaver og brætspil, som begge involverer systematisk arbejde i situationer, hvor reglerne er ufravigelige. Ikke dermed sagt, at man ikke kan lave alternative regler for brætspil (hvad jeg og min bror ofte gjorde), men det giver først mening, når man har forstået de oprindelige regler og deres konsekvens (modsat eksemplet i mandagens xkcd).

Så mit forslag er, at man ikke begynder med at sætte børnene foran en computer, men først indøver basale færdigheder i systematisk tænkning i aktiviteter, der ikke nødvendigvis involverer en computer. Det kan være brætspil, konstruktionsproblemer (Lego o.lign) og blot det at følge mundtlige eller skriftlige anvisninger.

Som noget helt enkelt (som man kan begynde på allerede i børnehaven) kan man bede børnene om at stille sig i rækkefølge efter fødselsdato. I første forsøg vil det tage meget langt tid at få på plads, og der vil givetvis være fejl i opstillingen. Så kan man spørge børnene om, hvordan de kan være sikre på, at rækkefølgen er rigtig. Hvis de ikke har forslag, kan man fortælle dem, at de kan sammenligne fødselsdage med deres naboer. Hvis de allesammen har fødselsdag før (eller samme dag som) deres sidemand til højre, er rækkefølgen rigtig. Det er i øvrigt ikke helt oplagt for børn, at det forholder sig sådan, så her kan man passende bringe et systematisk argument for, at det er tilfældet. Børnene kan så prøve igen, og her vil deres bevidsthed om, hvordan man sikrer korrekthed (selv om de nok ikke vil bruge det ord), hjælpe dem til at blive ved med at bytte plads indtil de står i den rigtige rækkefølge. Man kan efterfølgende diskutere, om det hjalp at tænke over korrekthedskriteriet (igen med andre ord), mens de udførte opgaven anden gang.

I denne øvelse indgår flere vigtige elementer (omend på et uformelt plan): Formulering af opgaven, en metode til at afgøre om opgaven er løst, udvikling af en metode til at løse opgaven med udgangspunkt i kontrolmetoden og refleksion over metode og resultat. I bund og grund det, man altid bør gøre, når man laver et program, men som alt for mange undlader. Så hvis denne fremgangsmåde er indøvet gennem "dagligdags" opgaver, inden børnene bliver præsenteret for programmering, så skal de nok hurtigt lære at programmere, og med bedre resultat end hvis de bliver kastet ud i det uden den slags forberedelse.

Så mit forslag er: Indfør gerne programmering i folkeskolens yngste klasser, men lær først børnene systematisk problemløsning, og brug dette gradvist mere og mere i alle fag. Og undgå, at tænke på programmering som et mål i sig selv: Tænk i stedet på det som et af mange aktiviteter, der indlærer systematiske arbejdsmetoder.

Nogen vil nok indvende (som det skete i diskussionen til artiklen om børnene i Estland), at det vil gå ud over børnenes kreativitet at skulle tvinges til at gå så systematisk til værks. Men jeg ser ikke nogen modsætning i dette: Kreativitet er ikke at kaste ting tilfældigt sammen og håbe, at der kommer noget interessant ud af det. Det er tværtimod at arbejde systematisk mod et bestemt mål. Romanforfattere skal kunne deres sprog og meste litterære virkemidler, ellers bliver deres bøger ulæselige. Komponister skal forstå tonearter, kontrapunkter, skalaer m.v, ellers bliver det ikke til andet end tilfældig støj. I begge tilfælde kan det gøres uden formel undervisning, idet nogle af begreberne kan komme ind i underbevidstheden ved at opleve andres værker og prøve at efterligne dem uden egentlig at have forstået hvad, der gør disse værker til noget særligt. Men det er først når man har forstået begreberne (bevidst eller ubevidst), at man kan skabe selv. Og det tager alt andet længere tid at forstå begreberne, når de læres gennem trial and error i stedet for at læres systematisk fra lærere, der ikke alene kender begreberne til fingerspidserne, men også ved, hvordan og i hvilken rækkefølge, man bedst lærer dem. Og den "autonome" læring giver også anledning til selvbedrag: Man behøver blot at se prøverne til X-Factor for at se eksempler på folk, der groft overvurderer egne evner. Det samme gælder i alle fag, kreative såvel som tekniske: Hvis man ikke har været igennem en systematisk indlæringsproces, hvor refleksion af egne resultater indgår centralt, så kan man nemt overvurdere sine evner.

Så der er alt mulig grund til at indøve systematik og refleksion helt fra børnehaven. Og lad gerne programmering være en af værktøjerne til dette.

Kommentarer (12)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Deleted User

Det handler vel i bund og grund om, at kunne overføre de gode ting man lærer af programmering tværfagligt- det skader næppe børns forståelse af matematik, at lære at lave en funktion der kan lægge to tal sammen, og en funktion der kan dividere dem, og så videre, og så videre.

Tror denne effekt kaldes for superkompetence.

  • 3
  • 0
Jon Loldrup

At lade børnene skulle sortere sig selv efter fødselsdato lyder som et rigtig godt eksempel på en opgave til træning af problem-orienteret tænkning. Hvor finder man så en opgavesamling med den slags opgaver? Jeg kan selv anbefale 'The Little Schemer' (den er fantastisk), men er der andre?

  • 4
  • 0
Nicolas Guilbert Blogger

... kan det gå hen og blive en udfordring at finde pædagoger eller sågar lærere, der "kender begreberne til fingerspidserne", både i dag og i den overskuelige fremtid.

Det er ikke mit indtryk, at IT som fag nyder nogen særlig anerkendelse på seminarierne, med undtagelse selvfølgelig af begejstringen for Smartboards og iPads.

  • 1
  • 0
Simon Kibsgård

Jeg har længe gerne ville introducere mine drenge (7 og 4, men mest den ældste) til programmering. Jeg vil netop ikke sætte dem mere foran skærmen end de allerede selv tager initiativ til, så jeg synes din analoge tilgang er spændende. Bidrag meget gerne med flere eksempler på analoge programmeringsopgaver for børn.

  • 2
  • 0
Kenneth Geisshirt

Jeg har - med succes - lært min datter på 8 år algoritmerne bisektion og bubblesort. Ved bisektion er legen at gætte et tal i et interval ved at spørge "større end" og så halvere intervallet hver gang. Hun har sorteret en række tal på papirlapper efter at jeg forklarede hende "reglerne" (byt med nabo). Og ja, jeg retter også mine børn når de taler upræcist.

Torben, du har en pointé: jeg spillede også en del skak (dog uden at blive rigtig god) inden jeg kastede mig ud i Comal-80 programmering. Det er vigtigt at lære systematik og præcis formulering.

  • 2
  • 0
Peter Juhl

Mange tak for at sætte fokus på dette vigtige emne, som bør blive en endnu større del af den offentlige debat.

MIT Media Lab har tilsvarende fokus og har udviklet et ikonisk programmeringssprog Scratch specielt til børn, som jeg mener forener kreativitet og systematisk forståelse, samtidig med at oplevelsen er baseret på en social platform, hvor børnene kan dele deres kreationer:

Scratch is a programming language that makes it easy to create your own interactive stories, animations, games, music, and art -- and share your creations on the web. As young people create and share Scratch projects, they learn important mathematical and computational ideas, while also learning to think creatively, reason systematically, and work collaboratively.

Applikationen kan hentes her http://scratch.mit.edu/

God fornøjelse ;)

  • 0
  • 0
Nicolas Guilbert Blogger

Jeg ærgrer mig over, at programmering ikke er eksplicit nævnt i Fælles Mål 2009 for matematik.

Fælles Mål ville være et godt sted at starte, det ville i hvert fald være et statement.

Men de egentlige flaskehalse er * aktuelle lærerkompetencer * den generelle opfattelse af, at programmering er "nørdet", "uinteressant i sig selv", "ikke kreativt" * at skolen udvikler sig i klasseværelser, de facto isoleret fra det øvrige samfund(s kompetencepulje).

Se evt. vores evaluering af et Scratch-forløb: http://blog.ecolefrancodanoise.dk/programmering-med-scratch

  • 0
  • 0
Log ind eller Opret konto for at kommentere