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 andra gången kursen gavs och förändringarna jämfört med förra året var små. De förändringar som planerades vid förra kursanalysen har dock genomförts.

Största enskilda förändringen var att vi bytt kursbok. Den amerikanska boken som vi använde förra året ansågs som pratig och innehållet var ibland inte av bästa kvalitet. I år använde vi den nyutkomna "Java direkt" av Jan Skansholm. Boken visade sig ha en del barnsjukdomar men på det hela taget har både lärare och elever uppskattat den.

Förra året hade vi medvetet satt tidsgränsen för laboration 4 tätt efter kursslutet men ändrade detta i sista stund när vi upptäckte att eleverna hade ett mycket pressat schema under denna tidsperiod. Då eleverna även i år hade flera tentor efter period 3 valde vi att redan från början ge gott om tid för laboration 4.

En annan förändring var att vi gjorde laboration 1 lite mer krävande mot slutet för att göra övergången till laboration 2 lättare. Detta verkar ha fungerat bra. Alla laborationer har också frächats upp och anpassats till Java version 1.2.

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 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 154 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

Den nya 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. En synpunkt var att vissa elever skulle vilja ha lite försiktiga "uppmjukningsuppgifter" vid de första övningarna samt att övningarna skulle kunna vara bättre koordinerade med föreläsningar och labbinnehåll. En annan synpunkt var att vi borde ha en extra handledare på laborationerna som bara svarar på snabba frågor eftersom handledarna med nuvarande system ibland ägnar mycket tid åt någon grupp som behöver mycket stöd.

Vi diskuterade också kring hur eleverna resonerar när de väljer att göra den betygshöjande laboration 4 eller ej. En slutsats var att vi borde presentera kursen som att det är "normalt" att göra labb 4 så att även de elever som upplever sig som "halvbra" vågar försöka.

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.

Detta år tycks det snarare ha varit belastningen från andra kurser, med hemtal m.m., som upplevts som pressande för eleverna, speciellt under period 3.

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 för någon elev. 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

Inför nästa år planerar vi inga större förändringar. Det är snarast så att kursen nu tycks ha funnit en bra form som bör kunna behållas ännu några år. Ett önskemål skulle kunna vara en mer anpassad lärobok samt en lämplig exempelsamling men det finns inga konkreta planer på detta redan inför nästa år.