Programmering 1 – Översikt

Inledning

Denna artikel riktar sig till gymnasielärare inom programmering. Detta är en handledning för hur materialet på csharpskolan skulle kunna användas i undervisning för att uppnå skolverkets kursplan inom kursen programmering 1. Tolkning av kursplan är givetvis upp till undervisande lärare så detta kan ses som en tillämpning av kursmålen inom språket C#.

Praktiska tips om prov, inlämningar och undervisning ges också.

Dags att söka TE4!

Ansökningen är igång!
25 april till 15 maj!
ansök via skanegy.se

Öppet hus/info-möte den 8:e maj kl. 17-18 hos NTI Lund, Sankt Lars park!

Är du intresserad av programmering, t.ex. spelutveckling, appar eller webbserverprogrammering?
Går du på Teknikprogrammet på gymnasiet och läser Programmering 1? (eller har gått och är max 22 år)

Till höst startar jag ett nytt 4:e tekniskt år tillsammans med NTI i Lund för dig som vill bli Gymnasieingenjör. Målet är att du efter 4:e året kommer ut i arbete inom mjukvaruutveckling!

/MVH
Jonas Nilsson
skapare csharpskolan.se

Kursplan samt tolkning

Ämnets syfte

Undervisningen i ämnet programmering ska syfta till att eleverna utvecklar kunskaper om principerna bakom datorprogram samt färdigheter i programmering i ett eller flera programmeringsspråk. Eleverna ska ges möjlighet att utveckla kunskaper om programmeringens grunder, färdigheter i att genomföra programmeringsprocessens olika delar samt förmåga att analysera, designa, implementera, testa, resultatbedöma och vidareutveckla program...

Läs mer på skolvekets kursplan för programmering 1.

Undervisningen i ämnet programmering ska ge eleverna förutsättningar att utveckla följande

  1. Kunskaper om datorstyrda industriella system och om industriell datorkommunikation.
  2. Förmåga att formulera och planera programmeringsuppgifter med pseudokod och diagramteknik.
  3. Förståelse av och färdigheter i att använda datalogiska begrepp och algoritmer.
  4. Kunskaper om programmeringsspråk samt förmåga att skriva, läsa, strukturera, analysera, dokumentera och kommentera källkod i ett eller flera programmeringsspråk.
  5. Kunskaper om gränssnitt mot användare, filer, filsystem, operativsystem, databaser och internet.
  6. Kunskaper om objektorienterad programmering i teori och praktik.
  7. Förmåga att finna, diskutera, åtgärda och förhindra syntaxfel, programkörningsfel och programmeringslogiska fel.
  8. Kunskaper om samspelet mellan program, körtidsmiljö, operativsystem och hårdvara.

Ovanstående lista riktar sig till ämnet programmering, i vilket Programmering 1, Programmering 2, Industriell programmering samt Datalogi ingår. Det betyder alltså att vi inte ska klämma in alla i just kursen Programmering 1.

Punkterna 2, 3, 4, 6 samt 7 ligger närmast det centrala innehållet men även 5 och 8 kan ingå. Det är endast punkt 1 som avviker lite och som har större fokus i t.ex. kursen Industriell programmering. Därmed inte sagt att det inte hade passat bra med kommunikationsövningar i Programmering 1.

Centralt innehåll

  • Sekventiell programmering i det eller de valda programmeringsspråken. Språkurvalet kan göras från såväl programspråk och skriptspråk som kompilerande och tolkande språk. Ett av de valda språken ska stödja objektorientering på ett påtagligt sätt.(SEKV)
  • Programmeringsspråkets eller språkens grundläggande datatyper samt fördefinierade strukturer, regler och syntax. (GRUND)
  • Traditioner och trender i utvecklingen av programmeringsspråk.(TREND)
  • Problemlösning och problemstrukturering. (PLPS)
  • Kontrollstrukturer, till exempel sekvens, selektion och iteration skrivna i ett implementerat programflöde. (KONTROLL)
  • Grunderna för klasser, objekt, egenskaper och metoder. (OP)
  • Variablers och konstanters synlighet och livslängd. (SYN)
  • Enkla algoritmer, till exempel för sökning eller sortering. (ALG)
  • Implementeringar av datastrukturer, till exempel array, lista eller trädstruktur. (DATA)
  • Felsökning av källkod och undantagshantering. (FEL)
  • De vanligaste programmeringsspråkens krav på körtidsmiljöer och operativsystem samt deras aktuella användningsområden. (INFO)

Listan har getts förkortningar (t.ex. SEKV, GRUND, TREND etc) som kommer att användas framöver.

Det nämns klart och tydligt att det skall ges både praktiska och teoretiska kunskaper inom ett objektorienterat språk. Nu är C# ett komplett objektorienterat språk därav råder nog ingen tvekan. Det som kan vara problematiskt är balansen mellan teori och praktik. Vår inställning är att undervisningen ska vara lösningsinriktad, d.v.s. att undervisningen ska lägga fokus på praktiska tillämpningar som löser problem. Eleven bör efter avslutad kurs ha tillräckliga praktiska kunskaper för att kunna skriva enklare program som löser problem eller skriva enklare spel.

Problem uppstår om det läggs för mycket fokus på teoretiska detaljer då själva programmeringen snarare är ett hantverk som kräver mycket praktisk träning. Därmed bör läraren vara försiktig med att presentera de "bästa" lösningarna direkt. Eleven bör ges utrymme att få göra dåliga lösningar, annars uppskattar inte eleven när en bättre lösning presenteras. Det finns en klar pedagogisk poäng i att först låta eleven försöka lösa problemet själv. Först då vet läraren på vilken nivå eleven befinner sig och kan börja arbetet med att möta eleven på rätt nivå.

Kunskapskrav

Läs komplett beskrivning på skolverkets kursplan för programmering 1.

Vi kommer här kort att ge en tolkning för varje betygsnivå.

Betyget E

Eleven löser uppgifter som handlar om PLPS samt ALG i samråd med handledaren. Tänk på ordvalet: handledare. Det kan betyda en annan elev med möjlighet att handleda. Eleven producerar enkelt kommenterad källkod.

Formuleringen trycker på att eleven ska få handledning i viss grad under tiden eleven gör uppgifter eller prov. Det nämns också att eleven implementerar någon sökningsalgoritm, sorteringsalgoritm eller annan algoritm.

Betyget C

Eleven löser uppgifter som handlar om PLPS samt ALG efter samråd med handledaren. Formuleringarna tyder på att eleven ska kunna arbeta mer självständigt på denna nivå. Samtidigt ska resultatet vara noggrant. Ordet enkla används inte längre. Eleven ska kunna analysera och utvärdera sitt resultat i några situationer.

Betyget A

Eleven löser uppgifter som handlar om PLPS samt ALG efter samråd med handledaren. Eleven implementerar några algoritmer, dvs. fler än för betyget E och C. Resultatet beskrivs som noggrant och utförligt. Eleven ska kunna analysera och utvärdera resultat nyanserat och även kunna ge förslag på förbättringar. Formuleringar med gott och med säkerhet förekommer ofta.

Oavsett nivå så nämns sök- eller sorteringsalgoritmer som förslag på algoritmer som ska ingå. Sekventiell programmering och grundläggande objektorienterad programmering nämns. Pseudokod och aktivitetsdiagram samt felsökning nämns som aktiviteter som ska bedömas. Namngivningen, strukturen och kommentarer i källkoden nämns också i betygskriterierna. Datalogiska begrepp ska också ingå.

Allt detta är ledtrådar till vad som ska ingå samt vad som är betygsgrundande.

Verktyg för bedömning och undervisning

Betygskriterierna i kursen lämpar sig bra för en formativ bedömning. Mer diskussion om betygskriterier och bedömning senare. Ord som "i samråd" och "efter samråd" samt "med viss säkerhet" finns med i kunskapskraven. För att mäta insatser och samla in information under kursens gång behövs effektiva verktyg. Efter att något samlats in är det viktigt att eleverna får en feedback. Detta kan ske på en rad olika effektiva sätt.

Dagböcker/loggbok

Dagböcker är ett utmärkt sätt att få eleven att dokumentera sin inlärningsprocess samt för att senare kunna utvärdera vilka kvaliteter eleven besitter. Det är viktigt att skapa rutiner till detta och verkligen ta det på allvar. Det är så många nya begrepp inom programmering som eleven ska lära sig och det är viktigt att eleven får formulera egna tankar kring detta. Rent praktiskt skulle det kunna följa detta mönster:

  • Lektionen startar med att eleven läser sin loggbok från föregående lektion. Tid ca. 3-5 minuter.
  • Arbete.
  • Lektionen avslutas alltid med att eleven skriver i loggboken vad lektionen har handlat om och vad tiden använts till. Tid ca. 5-8 minuter.

Det går att utöka skrivandet till att eleverna kan lämna kommentarer om vad som var bra/dåligt eller lämna förslag på vad de vill lära sig mer om. För att få skrivandet att fungera så måste läraren verkligen läsa loggarna efter varje lektionspass och lämna någon slags feedback.

Loggböcker kan även användas med fördel under projektarbeten och inlämningsuppgifter.

Hemprov

Denna variant av prov har många fördelar. Det behöver inte gå åt ett extra lektionspass till att genomföra provet. Uppgifterna på provet kan vara mer utmanande och givande då eleverna har mer tid på sig att lösa provet. Nackdelen är att eleverna kan komma att dela för mycket av lösningarna mellan varandra. Detta problem går att eliminera på många sätt. Det hela hänger på hur provet ska redovisas. Ska provet bara rättas så krävs mycket detektivarbete för att utreda om fusk förekommit och vilka som då är inblandade. Fuskare bör konfronteras och ges en möjlighet att visa vad de kan. Det bästa är om rättning sker tillsammans med eleven och att eleven då muntligt får förklara tankarna bakom lösningen. Läraren kan då samtidigt ge bättre feedback. I detta läge spelar det inte längre någon roll hur eleven har fått fram resultatet, kan eleven förklara tankar, arbetsgång och ge analyser så har hemprovet fyllt sin funktion.

Det är såklart oerhört tidskrävande att sitta med varje eleven med ett hemprov som kanske tar 20-60 minuter att gå igenom. Alternativen kan vara att bara muntligt gå igenom en uppgift på provet med varje elev eller kanske slumpvis välja ut att granska ett fåtal elever och rätta resten. En bra och effektiv lösning till att rätta hemprov och inlämningar under begränsad tid presenteras längre fram under rubriken "Skärminspelning".

Det är naivt att tro att eleverna inte kommer att samarbeta. Det bästa är istället om att samarbete och kommunikation uppmuntras men med vissa regler, t.ex. att kommunikationen ska ske på ett öppet forum som du som lärare kan övervaka. Du kan då se vem som har behövt mest hjälp men också vem som förklarar och delar med sig av kunskaper.

Vad det gäller programvara så är bygger allt csharpskolan.se på gratis programvara. Med Community Edition för Visual Studio så har alla tillgång till en professionell utvecklingsmiljö.

Praktiska prov

Denna variant fungerar som hemprov men tar såklart ett lektionspass av din undervisning. Här elimineras risken för fusk till en större grad. Problemet är att provsituationen inte liknar arbetssättet hos en programmerare. Tillgång till böcker, Internet och kontaktnät är vardag för det som jobbar med programmering. För att ändå simulera detta och uppmana kommunikation mellan elever så borde det finnas en 10-20 minuters rast mitt i provet där alla elever får måste lämna klassrummet. Ute på rast så kan sedan provet fritt få diskuteras hur mycket de vill. Eleverna får då träning på att förklara sina lösningar och prova sina antaganden gentemot andra. Elever som behöver lite extra hjälp kan få träning på att ta in information och betydelsen av den för att senare kunna återvända till provet och utnyttja informationen.

Prov på papper

Prov på papper ska inte underskattas. En programmerare behöver ha vissa saker i ryggmärgen, t.ex. hur en for-loop formuleras eller hur en enkel klass skrivs. Dessa prov behöver inte ta så lång tid att genomföra. Prov är kanske inte rätt ord i sammanhanget, diagnos är nog mer passande. Den stora nackdelen med prov på papper är att eleven under provet inte lär sig något nytt utan bara bekräftar vad eleven redan kan eller inte kan.

Inlämningar

Antalet inlämningar och omfattningen av dem bör noga planeras innan kursstart. Går det att få in många olika moment i en och samma inlämningsuppgift, utan att den blir för svår, så blir det mer effektivt. Inlämningarna bör utformas så att det ger stort utrymme för individuella lösningar.

Skärminspelning

När det är dags för dig att rätta inlämningar, hemprov eller praktiska prov så är skärminspelning verkligen en tidssparare. Du slipper framförallt att skriva ut källkod på papper. Du kan lugnt lämna dina kommentarer som om eleven hade suttit bredvid dig. Du kan backa och spela över partier som inte blev bra. Jämfört med skrivna kommentarer så hinner du förmedla både fler och djupare analyser av elevens arbete. När kommentarerna väl är gjorda kan du enkelt mail'a dem till eleven. Inga papper någonstans som kan slarvas bort. Eleven kan också spela upp kommentaren om och om igen.

Det är inte bara läraren som ska använda skärminspelning. Vid inlämningar och hemprov kan det vara idé att låta eleverna lämna in skärminspelningar där eleven beskriver sina tankar och kommentarer kring koden. På så sätt kan fusk ytterligare förebyggas vid hemprov och inlämningar. Elever som tycker det är obehagligt med muntliga redovisningar kan i lugn och ro spela in hemma. Inspelningen skickas sedan tillsammans med hemprov/inlämning via t.ex. email eller lämnas in via utbildningsplattform.

Artiklar i serien

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *

Scroll to top