Kursanalys, Programkonstruktion för F, 2D1342, 4 poäng

Kursdata

Mål

Kursens mål är att ge eleverna för att de effektivt ska kunna kunna utnyttja datorer i sina fortsatta studier och i arbetslivet. Kursen ska även ge den bas eleverna behöver för att kunna läsa fortsatta kurser inom datalogi och numerisk analys.

Förändringar inför denna kursomgång

Detta var fjärde gången kursen gavs och eftersom kursen på det hela taget fungerar mycket bra har vi inte gjort några större förändringar. Några förtydliganden i anvisningarna och några nya extrauppgifter till laborationerna 1-3 har gjort. Anvisningarna till laboration 4, den fria betygshöjande uppgiften har ändrats en del. Fler konkreta förslag på uppgifter finns nu.

Betyget 6

Den största förändringen för kursen är att man från och med detta läsår kan få betyget 6. Kraven för detta är att man gör en betygshöjande uppgift som uppfyller kraven för betyg 5 samt ytterligare några krav. Programmet skall ha fysik- eller matematikanknytning, vända sig till en viss målgrupp av skolelever och dess användargränssnitt skall utvärderas. En timme extra föreläsning om människa-dator-interaktion hölls, i första hand för dem som ville satsa på betyget 6.

Liksom under tidigare kursomgångar gav vi eleverna förhållandevis lång tid innan de behövde redovisa laboration 4, ända till slutet av period 4. Ett problem med detta var att många studenter inte började med lab 4 förrän i slutet av maj. De schemalagda handledningstillfällena i mars och april var inte särskilt välbesökta medan de allra sista i maj blev proppfulla med långa väntetider. Vi blev tvungna att sätta in extra redovisningstillfällen då terminen egentligen var slut.

Sammanfattning

Både elever och lärare tycks vara mycket nöjda med kursen. Stämningen bland eleverna har genomgående varit god. De elever som valt att göra den extra projektuppgiften har lyckats producera mycket välskrivna program som klart visar att de har nått kursens mål. Det är svårare att bedöma hur kunskapsnivån ligger för de elever som nöjde sig med att bara göra de obligatoriska uppgifterna.

Undervisningen

Undervisningen bedrevs på ett traditionellt sätt. Föreläsningarna användes för att ge den teoretiska basen, övningarna för att visa hur man praktiskt konstruerar program och laborationerna för att eleverna själva ska få erfarenhet av programmering.

Det centrala i den här kursen är laborationerna. Dessa har karaktären av små programmeringsprojekt som skall genomföras parallellt med att man lär sig teknikerna. Första projektet handlar om att beräkna och grafiskt visa hur ljusstrålarna från en ljuskälla bryts i ett antal linser. Andra projektet handlar om att numeriskt lösa vågekvationen och animera resultatet. Tredje projektet handlar om simulering av hur personer förflyttar sig i en byggnad. Vi har medvetet konstruerat uppgifter som har en klar koppling till fysik.

Varje projektuppgift introducerar nya programmeringstekniker. I den första uppgiften måste eleverna sätta sig in i grundläggande programelement som variabler, villkor, slingor, metoder och vektorer. I den andra uppgiften används en uppdelning av programmet i olika moduler: en för den fysikaliska modellen, en för den grafiska presentationen och en för användarens manipulation av simuleringsparametrarna. I den tredje uppgiften används hierarkiska objekt för att representera olika aktörer i en realtidssimulering.

Vi har också försökt anpassa den schemalagda laborationstiden så att eleverna till största delen ska hinna genomföra uppgifterna då. Detta har flera fördelar, den främsta är kanske att elever som fastnat på något problem eller arbetar i "fel riktning" snabbt kan fångas upp av handledarna. Våra erfarenheter från andra kurser visar att de elever som lagt ned alldeles för mycket tid på programmeringsuppgifterna ofta har arbetat på ett ineffektivt sätt som skulle ha kunnat avhjälpas om de fick stöd tidigare. Man måste dock komma ihåg att eleverna också måste få en chans att lösa problemen själva. Alltför mycket handledarhjälp riskerar att förstöra idén med egen problemlösning.

Examination

Kursen examinerades endast genom laborationerna. För att få godkänt på kursen krävdes att man genomförde och kunde redogöra för de tre uppgifterna. För att få betyg 4, 5 eller 6 krävdes ytterligare en projektuppgift som genomfördes individuellt och redovisades både muntligt och skriftligt. Huruvida betyget blev 4, 5 eller 6 avgjordes utifrån kvalitén på det skriftliga materialet (betyget 3 var också möjligt när kvalitén på programmet var alltför låg eller ingen redogörelse lämnats in).

För betyg 6 finns en rad extra krav som skall uppfyllas förutom att redovisningens kvalité skall vara tillräckligt hög för betyg 5. Uppgiften skall ha fysik- eller matematikanknytning och programmet skall vända sig till skolelever i en viss ålder och dess användargränssnitt skall utvärderas.

Ett problem med programmeringsuppgifter som examinationsmoment brukar vara att många elever skjuter upp redovisandet/inlämnandet på obestämd tid. Ofta blir detta jobbigt både för lärarna och eleverna. Väl medvetna om risken för detta fenomen valde vi att redan från början införa definitiva tidsgränser för de olika uppgifterna. Eleverna uppmanades att redovisa i god tid före tidsgränserna och handledarna instruerades att hålla koll på elevgrupper som riskerade att inte hinna färdigt i tid.

Laborationerna 1-3 genomförs i grupper om två personer och studenterna får ganska så detaljerade anvisningar till laborationsuppgifterna. Kursen har ingen tentamen utan laborationerna är hela examinationen. Det finns en risk att studenter "slinker igenom" kursen utan att ha lärt sig så mycket som de borde (kommentarer från fortsättningskursen pekar även på detta).

Kurslitteratur

Kursboken uppskattas speciellt av eleverna som upplever den som lättläst. En brist är dock att boken innehåller få övningsuppgifter, både för salsövningarna och för självstudier. På övningarna har vi därför ofta använt egenproducerade exempel eller plockat exempel från andra böcker.

Ett annat problem som vi haft med den nya boken är att den inte tar upp begreppen i den ordning som krävs för att klara av laborationsuppgifterna. Vi har därför tvingats att frångå ordningen i boken ibland och eleverna har själva fått hoppa runt bland kapitlen för att hitta nödvändig information. I rimlig omfattning kan detta t.o.m. vara nyttigt och det verkar faktiskt som att lärarnas farhågor var större än elevernas verkliga problem.

Elevsynpunkter

De flesta eleverna tycks vara mycket nöjda med kursen. I dialogen med elevrepresentanterna i kursnämnden har ingen allvarlig kritik framkommit. I positiv anda har vi istället diskuterat hur vi bäst ska kunna få kursen ännu bättre. Ett önskemål var att man borde ha olika övningsgrupper för elever med olika stor programmeringsvana. Många elever har redan programmerat en hel del medan de flesta är totala nybörjare. Det har visat sig svårt att anpassa övningarna så att de passar alla och effekten har ofta blivit att de som redan behärskar delar av kursinnehållet upplever övningarna som lite meningslösa.

En kursenkät besvarades av 27 elever. Resultatet finns här. Endast 22% av dem som fullföljt kursen har besvarat enkäten. Anledningen till detta är säkert att enkäten lades ut så sent. Kursen slutade i period 3 för majoriteten av studenterna men i period 4 för de flesta som gjorde lab 4. Kursenkäten lades ut först i slutet av period 4.

Vi har haft ett formellt möte i kursnämnden samt några informella möten. Tyvärr finns inga protokoll.

Kursens belastning för eleverna

Många programmeringskurser har en tendens att belasta eleverna med ett stort antal laborationsuppgifter som kan ta mycket längre tid än avsett att slutföra. Vi har i denna kurs medvetet försökt begränsa antalet uppgifter och styra arbetet till schemalagd tid där det finns handledare tillgängliga. Liksom förra året tycks detta ha fungerat bra. Ambitiösa studenter utan tidigare programmeringserfarenhet upplever dock att kursen varit krävande.

Förkunskaper

Eleverna förväntas kunna hantera en dator eller snabbt kunna lära sig detta på egen hand. Detta tycks inte ha varit något större problem. Många elever tar också gärna på sig rollen som "experter" och hjälper gärna sina kompisar med praktiska problem. Vi upplever detta som positivt, både för de som får hjälp och de som hjälper. Enda risken är att "hjälpen" ibland inte är den rätta och blir "björntjänster" som kan virra till begreppen ytterligare.

Som alltid finns det många elever som redan när de börjar på KTH kan programmera mycket väl. Vi har försökt konstruera kursen så att den ska vara givande både för totala nybörjare i programmering och de som redan kan en hel del. Vi tycker att vi har lyckats ganska väl med detta men det är ändå troligt att de som har programmerat tidigare har ett försprång och t.ex. lättare för att få högre betyg.

Planerade förändringar

Kursen nu tycks ha funnit en bra form som bör kunna behållas ännu några år. En önskvärd förbättring är att införa någon form av nivådifferentiering på övningarna så att de som redan kan en hel del programmering kan få chansen att lära sig mer utan att de andra drabbas.

En annan förändring som bör övervägas är att införa en obligatorisk individuell laboration för att minska risken att studenter inte lär sig det grundläggande som är nödvändigt för senare obligatoriska kurser. Om man måste arbeta med en uppgift ensam går det inte att klara kursen endast genom att "hänga med" någon annan. Att bara lägga till detta skulle ge studenterna för stor arbetsbelastning och man bör därför överväga att ersätta laboration 3 med en obligatorisk individuell laboration.

Närvaron på föreläsningar och övningar var låg under de sista veckorna i period 3 jämfört med resten av kursen och så var det även förra kursomgången. Motivationen till att att gå på undervisningen sjunker då man är nästan klar med de obligatoriska momenten. I början av kursen hinner man inte gå igenom all teori som behövs för laborationerna. En lämplig åtgärd vore att flytta 1-2 föreläsningar från slutet av period 3 till början av period 2, ev. också minska antalet föreläsningar med en.

Jag skulle också önska att det vore lättare att få betyget fyra på kursen. Det är för få fyror och för många treor. Det är ett stort steg för studenterna att ge sig på att göra en individuell uppgift som man (oftast) själv hittar på. De flesta som gör detta klarar att få betyget fem eller sex. De flesta som är "ganska duktiga" och borde klara att få fyra stannar på tre. Ett förslag gavs av en student i enkäten: Låt extrauppgifterna i anslutning till de obligatoriska laborationerna ge betyget fyra. Detta är ett tänkvärt förslag. Man fick förstås tänka igenom dessa på nytt, se till att de blir lagom omfattande och kanske kräva att de görs individullt.