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

Denna kurs var helt ny fr.o.m. i år. Kursen ersätter den betydligt mer omfattande Inda-kursen från tidigare år. Meningen är att programkonstruktion-kursen tillsammans med en planerad datalogikurs om 4 poäng i årskurs tre ska ge samma nivå på kunskaperna och programmeringsfärdigheterna som den gamla Inda.

Vi har tidigare använt programspråken Scheme (en Lisp-variant) och C. Scheme för att ge ett matematiskt (funktionsbaserat) sätt att formulera och angripa problem och C för att det är ett i många avseenden traditionellt verktyg. Nackdelen var att det för många elever var tungt att lära sig två olika språk. I den nya kursen valde vi därför att istället satsa på ett språk, Java, som är ett modernt objektorienterat språk byggt på traditionell (C-liknande) grund.

En annan stor förändring jämfört med tidigare kurs är att kursen saknar tentamen och examineras endast genom laborationerna. Risken med detta ä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 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 tidigare 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.

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.

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.

Vi kan nu konstatera att denna policy fungerade mycket bra. Endast 9 elever avbröt kursen innan de var helt klara (av de 166 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

Varken elever eller lärare var helt nöjda med kursboken. En fördel med boken var att vi kunde följa dess uppläggning och i stort sett behandla stoffet från ett kapitel per vecka på både föreläsningar och övningar. Eleverna upplevde dock att boken var svår att slå upp saker i, något som är mycket viktigt under projektuppgifterna. Lärarna upplevde att boken ofta använde onödigt röriga metoder för att lösa olika uppgifter.

Utbudet av läroböcker baserade på Java ökar snabbt och inför nästa år planerar vi att välja en annan bok.

Elevenkät

En kursutvärdering med hjälp av elevenkät (frivillig och anonym) genomfördes under kursens sista veckor. Endast 40 elever besvarade enkäten men många av dessa bidrog också med genomtänkta och konstruktiva kommentarer.

Genomgående i enkätsvaren är att eleverna tycks vara mycket nöjda med det mesta. De flesta tycker att kursen är viktig och intressant, att de lärt sig mycket och att den tid de lagt ner på kursen varit rimlig. Examinationsformen upplevs också som positiv (inte så förvånande) och rättvis (inte lika självklart).

Några elever anser att avståndet mellan föreläsningarnas abstrakta teori och laborationernas handfasta praktik är för stort. Här har salsövningarna en viktig uppgift att fylla och vi bör tänka på detta till nästa år.

Kursens belastning för eleverna

Det är med glädje vi kan konstatera att eleverna inte upplever att arbetet med denna kurs inkräktar på andra kurser som läses parallellt. Det är utan tvivel så att vissa elever "rushar" igenom denna kurs utan att lägga ner mer tid än nödvändigt medan förvånansvärt många t.o.m. gör frivilliga utvidgningar av de obligatoriska uppgifterna.

Vi hade planerat in tidsgränserna för laboration 3 och den betygshöjande 4 till slutet av tentamensuppehållet efter period 3 (när kursen tar slut). Detta gjordes främst för att undvika att belasta eleverna med arbete under period 4. Många elever upplevde dock slutet av period 3 som pressad då de samtidigt hade flera tunga tentor i andra ämnen. I samråd med elevrepresentanterna i kursnämnden beslutade vi på ett ganska sent stadium att flytta tidsgränserna så att de som ville göra laboration 4 även kunde utnyttja Påskuppehållet för detta. Det hade varit mycket bättre om vi hade kännt till denna belastningstopp för eleverna när vi ursprungligen bestämde tidsgränserna.

Flera elever upplevde den första laborationsuppgiften som lite för lätt och därigenom steget till den andra uppgiften som stort. Anvisningarna till den första uppgiften är såpass utförliga att man kan genomföra stora delar av uppgiften utan att riktigt förstå vad man gör. Vi bör fundera på om vi kan ändra på detta förhållande. Samtidigt måste man komma ihåg att många elever aldrig har programmerat förut och att det därför är viktigt att de aktivt styrs in i ett arbetssätt som gör att de senare kan arbeta effektivt med mycket större problem.

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 kommer den viktigaste förändringen att vara att vi byter ut kursboken. Detta kommer också att påverka vilka uppgifter som behandlas på salsövningarna eftersom vi föredrar att plocka uppgifter ur boken.

En annan förändring är att vi redan från början kommer att ta hänsyn till arbetsbelastningen från andra kurser mot slutet av period 3 och närheten till Påskuppehållet när vi bestämmer tidsgränserna för laboration 3 och 4.