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 tredje 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.

Ett önskemål från förra året var att det borde finnas en extra handledare som tar hand om snabba frågor så att de "vanliga" handledarna med gott samvete kan ägna ordentligt med tid för att hjälpa någon när det verkligen behöv. Till denna kursomgång anlitade vi därför ett par speciellt erfarna handledare som fick "flyta omkring" mellan datorsalarna och rycka in när eleverna behövde hjälp. Detta fungerade bra och i år har vi inte upplevt att det varit några längre väntetider alls för eleverna under laborationerna.

Liksom förra året gav vi eleverna förhållandevis lång tid innan de behövde redovisa laboration 4. Detta är uppskattat, men genom detta arrangemang uppstår också ett behov av handledning under tiden från det att sals undervisningen upphört till dess att labbarna lämnas in. Vissa men långt ifrån alla har upptäckt möjligheten avv fråga vi kursens speciella e-post adress.

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 som vanligt 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 förhållandevis 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.

Jämfört med traditionella programmeringskurser har vi framförallt förändrat laborationerna. Dessa har karaktären av programmeringsprojekt som skall genomföras parallellt med att man lär sig teknikerna (jfr problembaserad inlärning). Eleverna genomför förhållandevis omfattande projekt: 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 procedurer, variabler, villkor, slingor 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 mycket 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 projektuppgifterna. För att få betyg 4 eller 5 krävdes ytterligare en projektuppgift som genomfördes individuellt och redovisades både muntligt och skriftligt. Huruvida betyget blev 4 eller 5 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).

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.

Risken med att inte ha någon tentamen är naturligtvis att det är lättare att "slinka igenom" utan att riktigt tvingas visa att man behärskar kursinnehållet självständigt. Vi har därför genomfört laborationerna under mer ordnade former t.ex. att handledarna följer samma elevgrupper från gång till gång.

Vi kan nu konstatera att denna policy fungerade mycket bra. Endast 10 elever avbröt kursen innan de var helt klara (av de 132 som gjorde någon laboration). Med tanke på att detta är en kurs i årskurs 1 är detta extremt få eftersom denna siffra innefattar de som helt slutat på utbildningsprogrammet.

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 mycket 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 45 elever. Resultatet finns här.

Vi har haft två möten i kursnämnden. Protokollet från det andra mötet finns här.

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.

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.

Det är nu bestämt att Ann Bengtson kommer att vara kursledare nästa gång kursen går. I stort kommer kursen att behålla samma form som tidigare.