Grundläggande programmering med matematikdidaktisk inriktning för lärare som undervisar i gy eller komvux gy nivå, 7,5 hp Dag Wedelin, bitr professor, och K V S Prasad, docent Institutionen för data- och informationsteknik Göteborgs universitet och Chalmers tekniska högskola KURSENS SYFTE Kursen fokuserar på lärare i gymnasieskolan, i första hand i matematik. Den kan även läsas av gymnasielärare i andra ämnen som exempelvis teknik eller samhällskunskap. Kursens syfte är att: 1. Lära ut grundläggande programmering. 2. Visa hur man kan lära och lära ut ett modernt undersökande arbetssätt att lösa problem där matematik, programmering och andra datorverktyg kombineras. I detta ingår även att lära ut matematiken själv, även om fokus kommer att ligga på att lösa realistiska tillämpade problem. 3. Ge en god grund för fortsatt lärande inom dessa områden. INNEHÅLL Kursens kärna är ett antal moduler med övningsuppgifter i programmering, kombinerat med realistiska och meningsfulla problem som löses med inslag av matematisk problemlösning, matematisk modellering, programmering och andra datorverktyg. Särskild hänsyn tas till hur uppgifter och problem direkt kan användas i gymnasieskolan, så att kursens olika delar och material kan fungera som en förebild. Uppgifterna och problemen inom varje modul är kopplade till gällande styrdokument för gymnasieskolans matematikämne. För att ge kursen en tydlig struktur organiseras innehållet i moduler. De första modulerna fokuserar på grundläggande begrepp och byggstenar inom programmering, inklusive sekvens, alternativ, villkor, upprepning och funktioner. Dessutom ingår felsökning och testning, samt hur man kan läsa, förstå och förbättra befintlig programkod: 1. Introduktion till programmering 2. Introduktion till programmering, fortsättning De senare modulerna fokuserar på hur man löser problem med hjälp av modellering, programmering och andra datorverktyg. För att uppnå kursens mål är problemen är utvalda så att de samtidigt uppfyller flera syften: att visa hur man i verkligheten använder matematik, algoritmiskt tänkande och programmering, utveckla kunskaper i matematik och programmering, samt ett sätt att tänks om hur man löser problem. Samtliga problem använder och övar algoritmiskt tänkande och programmering och i vissa fall andra datorverktyg på ett naturligt sätt. Modulerna är:
3. Funktioner, ekvationer och geometri (den mest grundläggande matematiken) 4. Optimeringsmodeller (en viktig typ av modeller där man kan modellera många praktiska problem) 5. Dynamiska modeller (inklusive simulering inom olika tillämpningsområden) 6. Sannolikhetsmodeller och statistik (inklusive stokastisk simulering) 7. Diskret matematik och datavetenskap För varje modul ges en introduktion samt en uppföljande reflekterande föreläsning/diskussion där även didaktiska aspekter tas upp. Exakt hur detta organiseras beror lite på möjligheten till fysiska träffar. Om exempelvis kursen inleds med en fysisk träff kan beskrivningar av grundläggande begrepp inom programmering blandas med att deltagarna själva får pröva direkt på sin dator. Till modulerna hör också föreläsningar och skriftligt material där programmering och problemlösning sätts in i ett övergripande sammanhang, där bland annat följande teman tas upp: Hur datorn fungerar och lite datorhistoria. Skillnader och likheter mellan olika programmeringsspråk och hur programmering skiljer sig åt i olika tillämpningar. Praktiska aspekter av programmering: olika programmeringsmiljöer, installation på egen dator och onlineverktyg. Utveckling och felsökning av program. Matematiska datorverktyg (tex. Mathematica) Vad är matematiskt tänkande (att resonera matematiskt, problemlösning, modellering), och hur används det? Hur påverkas det matematiska tänkandet och arbetssättet av datorn som kraftfullt verktyg? Matematisk respektive datalogisk problemlösning. Grundläggande principer och tänkesätt inom programmering och datavetenskap (abstraktion, problem och algoritm, datastrukturer, algoritmer, tidskomplexitet) Didaktisk forskning för problemlösning, matematisk modellering och programmering. Orientering om olika forum och projekt som fokuserar på didaktik för matematik och programmering. Ett mål med kursen är att lära ut programmeringsspråk och datorverktyg som är vanliga utanför skolans värld. I kursen används därför främst programmeringsspråket Python och i viss mån Javascript. Vi använder också vanliga datorverktyg som exempelvis Mathematica. I kursen kombineras att självständigt skriva enklare program med att förstå och modifiera lite mer komplicerade program - på detta sätt kan vi nå längre med att förstå principer och arbetssätt inom problemlösning, modellering och programmering. LÄRANDEMÅL Efter genomgången kurs ska deltagaren: Kunskap och förståelse kunna förklara grundläggande principer för datorn och hur den programmeras,
kunna förklara grundläggande programmering, särskilt med hjälp av Python och Javascript, kunna förklara grundläggande principer för matematiskt och datalogiskt tänkande. Färdigheter och förmåga behärska metoder för att skapa program i Python och Javascript, och kunna reflektera över arbetssätt med programmering, utifrån problemställningar kunna skapa enklare program, kunna läsa, förstå, felsöka, testa och förbättra mer komplicerade program, kunna lösa problem som kombinerar modellering, programmering och andra datorverktyg, behärska metoder för att använda programmering och andra datorverktyg såsom Mathematica i sin undervisning, inklusive att kunna identifiera moment och innehåll i kurs-/ämnesplan där programmering är ett användbart verktyg, kunna lära ut programmering, kunna lära ut matematik och tillämpad matematisk problemlösning med hjälp av programmering och andra datorverktyg, kunna hitta och tillgodogöra sig kunskap om matematik och programmering på nätet. Värderingsförmåga och förhållningssätt använda ett modernt undersökande arbetssätt som kombinerar det matematiska tänkandet med datorns möjligheter. LITTERATUR Eftersom kursen fokuserar på praktiska övningar och problemlösning finns det inte någon enskild kursbok som täcker kursen. Kursen kommer att få en öppen hemsida med kursens eget material samt länkar till olika resurser, t.ex. för Python och relevant didaktik, samt referenser till annan litteratur. ORGANISATION Kursen ges på distans med minst 4 fysiska träffar som kan förläggas där det är lämpligt för deltagarna. Mellan träffarna arbetar deltagarna med modulerna. En möjlighet för att snabbt komma igång med programmeringen är att starta kursen med en heldag. Modulerna ger kursen en tydlig logisk struktur exakt hur modulerna organiseras tidsmässigt kan därför anpassas till lämplig schemaläggning av kursen. EXAMINATION En skriftlig inlämning för varje modul samt en kort avslutande uppsats som bland annat ger deltagarna möjlighet att reflektera över hur de kan använda det de lärt sig i sin egen undervisning.
Appendix SKISS TILL DETALJERAT GENOMFÖRANDE AV MODULERNA 1. INTRODUKTION TILL PROGRAMMERING Inledande föreläsning/övning: olika programmeringsmiljöer, praktiska frågor. Grundläggande begrepp inom programmering Interaktiv Python Aritmetiska beräkningar Strängar och operationer på strängar Köra enkla program 2. INTRODUKTION TILL PROGRAMMERING, FORTSÄTTNING De viktigaste datatyperna och programspråkskonstruktionerna. Funktioner och funktionsbibliotek. Ett flertal exempel att pröva/köra/ändra/utöka. Ett lite större program, tex spelet hänga gubben. 3. FUNKTIONER, EKVATIONER OCH GEOMETRI Exempel på problem: (samtliga problem inkluderar att läsa eller skriva ett enkelt program) Iterativ beräkning av kvadratrot Avbetalning av lån (problemet är konstruerat så att det kräver att programmet gör en intervallsökning) De enklaste möjliga programmen för att skapa olika matematiska funktioner Kurvanpassning (skapa en matematisk funktion till ett antal punkter, plottning av funktion) Pejling 4. OPTIMERINGSMODELLER Inkluderar exempel på optimering utan och med bivillkor. Optimering av produktion Optimal placering av anläggningar tex. brandstationer. Modellering och lösning av kortaste-vägen-problem (tex för kollektivtrafik) 5. DYNAMISKA MODELLER Huvudsakligen simulering av olika dynamiska system Simulering av ekologiskt system. Simulering av studsande bollar. Simulering och styrning av enkelt reglersystem 6. PROBABILISTISKA MODELLER Stokastisk simulering Simulering av tärningskast och upptäckande av normalfördelningen. Stokastiska modeller för text. Enkelt program för identifiering av olika språk.
7. DISKRET MATEMATIK OCH DATAVETENSKAP Modellering med mängder, sekvenser, träd och grafer samt hur dessa kan användas i program. Sökning, sortering och andra algoritmer. Tidskomplexitet. Tillämpade exempel: projektplanering, design av cirkulär sensor,