Att integrera ämnena matematik och programmering

För mig så är programmering kreativ problemlösning lika mycket som logik och konstiga krumelurer (syntax) på den skimrande datorskärmen framför näsan. Jag tycker själv om och är ganska engagerad i webbutveckling och programmering så det låg inte särskilt långt borta att försöka integrera detta i min undervisning i matematikundervisning på gymnasiet. Så under det gångna läsåret testade jag i två olika projekt att låta eleverna programmera matematik. I den här artikeln vill jag lyfta fram och tipsa om vad som varit bra och vad som kunde gjorts bättre. Jag vill även lyfta fram några bra resurser för dig som själv är intresserad att testa på något liknande.

Förutsättningarna och möjligheterna

Eftersom varje skola, skolklass, elev och inte minst läraren har sina alldeles unika förutsättningar så vill jag berätta om de jag själv har haft först. Jag jobbar själv deltid på en gymnasieskola på teknikprogrammet där alla elever har tillgång till en egen laptop (PC med windows) och med internetuppkoppling i klassrummet. Eleverna läser ett Teknikprogram med IT inriktning och går det första året på gymnasiet. De hade inte läst någon programmering innan, däremot hade de påbörjat en kurs i webbutveckling. Vi genomförde det första av projekten i kursen Matematik 1C och det andra i Matematik 2C.

Jag hade alltså goda förutsättningar för att kunna genomföra de här bägge projekten. Eleverna är intresserade av teknik och datorer och alla tekniska grundförutsättningar fanns där. Det är ändå intressant att reflektera över ett sådant här projekt och vad det egentligen ger i matematikundervisningen, och vilka kunskaper som utvecklas, men mer om det längre fram.

Att välja språk och rätt verktyg

Jag valde ganska snabbt att välja bort objektorienterade programspråk som java eller C samt webbserverspråk som tex php och valde programspråket (eller skriptspråket) javascript. Anledningen till detta var för att göra startsträckan så kort som möjligt. Eleverna kunde en aning html och css och det kändes då snabbt och naturligt att välja ett språk där man snabbt kom igång och enkelt kunde se resultatet i webbläsaren som alla hade tillgång till. För att testa på javascript krävs egentligen bara en kodeditor, tex notepad++, och en webbläsare för att komma igång. Huvudsyftet med projektet var heller inte primärt kunskap i ett programmeringsspråk utan att de skulle kunna tillämpa sina matematikkunskaper praktiskt och göra något ”på riktigt”.

En annan fördel med att just börja med javascript är för att det idag finns en fantastisk gratistjänst som heter Codecademy där eleverna kunde komma igång och lära sig grunderna i javascript. Det här kan jag också rekommendera till dig som är lärare och vill lära dig grunderna i programmering.

Uppgiften – Vad skulle eleverna ”Koda”?

Så vad gjorde då egentligen eleverna? Jag försökte nivåindela de bägge projekten så att alla skulle klara minst 1 – 2 uppgifter och att de som var allra mest intresserade fick lite tuffare utmaningar. Det första steget i ett av projekten var tex att bara kunna utföra en beräkning i javascript ungefär så här:

Beräkna 4*5 + 10^2 med hjälp av javascript vilket kan göras på följande vis:

var sum = 4*5 + Math.pow(10, 2);
document.write(sum);

Sedan höjdes nivån stegvis mot att kunna göra en funktion i javascript och förstå hur detta kan kopplas ihop med en matematisk funktion och beteckningen f(x). En sådan uppgift kunde se ut så här:

Skapa en javascriptfunktion som beräknar funktionsvärdet till f(x) = 3x + 2 vilket exempelvis kan lösas på följande vis:

var myFunction = function (x) {
 y = 3*x + 2;
 return y;
};

Tanken är då att eleven skall förstå dels hur lika en matematisk funktion och en programmeringsfunktion kan vara samt att träna på att använda begreppet f(x). Sedan kunde de som ville utveckla detta ännu mer och lägga till textfält för att i webbläsaren fylla i det värdet man ville beräkna. Nivån kunde sedan höjas ännu mer och i slutändan skapades bland annat följande saker i klassrummet:

  • Ett skript som kunde beräkna linjens lutning (k – värde)
  • Skript som utförde operationerna i pq formeln när man fyllde i p och q i två olika textfält.
  • Ett skript som kunde rita ut linjära funktioner i webbläsaren (ett fåtal nådde hit).

Vad lärde sig eleverna?

Så vad lärde sig egentligen eleverna av detta, fick de ut mer av sina nya programmeringskunskaper än bara nyttan av lite mer variation i undervisningen? Det finns ganska mycket slutsatser som jag själv har dragit kring att genomföra dessa ibland lite tidskrävande projekten och jag skall försöka sammanfatta några av dem här. Det som var bra var:

  • En stor fördel som jag ser det är att eleverna ser vilken nytta de faktiskt kan ha av goda matematikkunskaper i praktiskt datorarbete.
  • En positiv bieffekt av att sitta och grotta med kod och formler är faktiskt att eleverna lär sig vissa formler utantill. Det var få som inte kunde pq formeln utan och innan efter projektet.
  • Det är väldigt roligt att som lärare observera hur vissa elevers kreativa och logiska förmågor utvecklas mycket snabbt när de väl har förstått grunderna och på egen hand kan utveckla användbara webbsidor.

Några av de saker som jag tror var mindre bra i dessa bägge projekt var:

  • Elever som hade mindre intresse av programmering och inte hade så mycket kraft att själva ta tag i detta och lära sig hade svårt att komma igång. Startsträckan som krävdes blev lång och jag som lärare behövde stötta mycket.
  • Om inte eleverna själva hade så stort intresse av projektet lärde de sig också mindre matematik under perioderna projekten pågick vilket i en tajt kurs på gymnasiet kan kännas som bortslängd tid.

Sammanfattningsvis tycker jag själv ändå att man kan rekommendera att våga prova på det här sättet att bedriva projekt i matematik. Om de grundläggande förutsättningarna finns så är det ett alldeles utmärkt sätt att tillämpa elevernas matematikkunskaper.

Resurser

  • Codecademy – Bra för att lära sig javascript
  • Notepad++ Gratis kodeditor
  • Firebug – Addon till Firefox för att felsöka kod, även javascript i konsolen

Om Simon

Simon Rybrand jobbar deltid som gymnasielärare i matematik samt på sajten MatematikVideo.se. Han skriver även på sin lärarblogg Enrödtråd och twittrar som @matematikvideo.

3 Comments

Filed under IKT, Matematik, Skolutveckling

3 Responses to Att integrera ämnena matematik och programmering

  1. Väldigt intressanta tankar kring hur vi kan minska tröskeln när det gäller att börja programmera och att se till så att vi tillämpar matematik. De flesta elever kommer bara ha nytta av den tillämpade matematiken.

    Min erfarenhet är att för vissa elever kan programmering upplevas som oerhört svårt och de nya matematikkurserna är en stor utmaning med många nya begrepp som ska introduceras i raskt tempo. Invändningarna att en del elever kan sitta fast i grunderna och inte komma så långt och att det blir svårt att hinna igenom matematikkursen är troligen så starka att de flesta lärare får inse att det här inte går att pröva för deras grupper. Vi ska dock inte glömma möjligheten till ämnessamverkan och exempelvis Teknik 1 kursen på teknikprogrammet kan ge fler möjlighet att pröva den här typen av idéer.

  2. Kul att se lärare som vågar prova programmering i undervisningen. Ett tips för att få fler med på tåget från början kan vara att börja med visuell programmering dvs dels att programmera med grafiska block typ Scratch o.dyl men även att man skapar program som presenterar något grafiskt och inte bara ett tal (ett illustrerande exempel: http://blogs.sitepointstatic.com/examples/tech/canvas-curves/bezier-curve.html).

    Det kan tyckas fåfängt för en matematiker som tycker att formlerna i sig är vackra :) men för elever som inte är like drivna på programmerandet per se kan resultatet av det samma vara drivkraft nog för komma igång med kodandet.

  3. Pingback: Javascript för lärare

Kommentera