Nada

2D1358 OOPK period 4 98/99 för B,F,I,K,L,M,T,V
Kursanalys

Kursdata

Mål

De formella kursmålen är att för att studenterna ska kunna tillämpa objektorienterade metoder vid design och implementation av moderna programsystem.

Eftersom dessa mål är väldigt ambitiösa för en fyrapoängskurs och eftersom de flesta eleverna verkar välja denna kurs för att lära sig C++ är mina informella mål med kursen att studenterna ska

Resultatet av detta är att objektorienterad modellering (med bl.a. UML) då får mindre utrymme och att fönsterbaserade utvecklingsmiljöer nästan inte tas upp alls.

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

För en jämförelse med kursen förra året, se kursanalysen för period 3, 1999.

Ändringar sedan kursomgången i period 3:

Sammanfattning

Studenterna är över lag mycket intresserade och motiverade, och de flesta är nöjda med kursinnehåll och undervisningen. Kursen uppfattas dock som svår och mycket arbetskrävande. Det var också mycket trångt i laborationssalarna, bl a därför att många elever från E som egentligen skulle följt kursen i period 3 även dök upp på labtider i period 4, se Planerade förändringar nedan.

Undervisningen

Föreläsningarna till största delen varit baserade på stordia, och papperskopior av dessa har delats ut i förväg. Sådana föreläsningar riskerar att bli tråkiga, men gör det å andra sidan möjligt att visa många diagram och kodexempel utan att tappa tempo. Generellt verkar studenterna nöjda med förläsningarna och föreläsningsanteckningarnas kvalitet.

Övningarna är problematiska. Iden är att övningsassistenten i dialog med studenterna ska lösa ett antal enklare övningsuppgifter på tavlan. Det har dock visat sig vara svårt att aktivera studenterna. Det kan delvis beror på att övningsgrupperna var för stora, men också att design och programmering kräver eftertanke och att det helt enkelt är för svårt att snabbt föreslå lösningar på ett givet problem. Det har väckts förslag (från bl a Karl Meinke och några studenter) att man bör dela ut (lätta) hemuppgifter och använda övningarna till att gå igenom lösningar på dessa istället. Det kan höja studentaktiviteten, och i kursen 2D1359 har man betydligt mer seminarieaktivitet. Det ökar dock ytterligare arbetsbelastningen för eleverna och måste balanseras av att något annat moment tas bort. Ett annat alternativt är att helt ta bort övningarna och använda tiden till mer schemalagda handledningstid i labsal.

De schemalagda laborationerna är centrala i kursen. Där sker dels all examination, dels ges individuell hjälp och handledning. Det är tänkt att ungefär hälften av studenterna kommer på ett labpass, dvs 60 st. Vi hade betydligt fler handledare på varje pass än föregående år, i regel 6-8 st. Väntetiderna för handledning och redovisning har i allmänhet varit korta. Däremot skulle flertalet elever vilja ha möjlighet till handledning och redovisning i tentamensveckorna efter läsperiodens slut och helst även efter terminens slut. Jag kunde lägga in ett antal extra redovisningstider i juni, men igen extra handledning. Handledarna var i stort sett desamma som i period 3, och hade denna period betydligt mer erfarenhet. Det märks också i elevenkäten att eleverna är betydligt nöjdare med handledningen än i period 3.

Examination

Examinationen består enbart av laborationsredovisningar. Laborationerna utförs i grupper om högst tre elever. Tidigare år har man tydligt kunnat se att vissa lösningar återkommer gång efter gång. I år har vi därför förtydligat reglerna för vad som anses vara tillåtet och otillåtet samarbete, och vi har uppmanat studenterna att inte göra sina lösningar allmänt tillgängliga. Dessutom har vi registrerat all programkod som redovisas.

För högre betyg än tre måste studenterna göra extra laborationer. Dessa ska ta upp nya moment och öka studenterna förståelse av ämnet, och inte bara ge mer arbete av samma typ. Årets extrauppgifter tar upp mer avancerad design av klasshierarkier och gränssnitt, samt undantagshantering. Min erfarenhet är att det är lättare att göra en rättvis betygssättning mha extrauppgifter än genom att betygsätta enskilda redovisningar.

Kurslitteratur

Kurslitteraturen borde täcka såväl grundläggande teori om objektorientering och programdesign som C++. Det är dock svårt att hitta en bok som täcker detta tillfredsställande. Erfarenheten visar att det behövs en komplett och tillförlitlig bok i C++ när man ska programmera i detta språk, annars kör man mycket lätt fast på enkla programmeringsfel. Eftersom C++ och dess bibliotek har förändrats rejält de senaste 2-3 åren valde jag den nya utgåvan av en välkänd och respekterad bok, "C++ Primer", som huvudbok. Som komplement hade jag helst sett en bok om mjukvaruarkitektur, med tyngdpunkt på objektorienterad design och designmönster. Eftersom två kursböcker är väl mycket för en 4p-kurs valde jag att istället inkludera ett utdrag ur "Design Patterns".

Det har dock visat sig att få elever tar sig tid att läsa huvudkursboken. Istället verkar de flesta utgå från föreläsningsanteckningarna och försöker använda "C++ Primer" som uppslagsbok. Detta kan förklara de stora problem många studenter i kursen upplever. Det går helt enkelt inte att programmera i ett så komplext språk som C++ utan att behärska de grundläggande språkkonstruktionerna, objektmodellen och minnesmodellen. Föreläsningsanteckningarna är klart otillräckliga för det.

Att så få elever läser kursboken är ett stort problem. En tänkbar åtgärd är att byta ut en eller två laborationer mot ett antal små övningsuppgifter ur boken som ska lämnas in skriftligen eller presenteras på en övning.

Elevenkät

En elevenkät har besvarats av 14 elever. Arbetsbelastningen för eleverna diskuteras nedan. Här följer en sammanfattning av övriga synpunkter.

Kursens mål verkar vara klart och ingen direkt kritik har riktats mot innehållet i kursen. De elever som besvarat enkäten tycker i stort sett att deras förkunskaper är tillräckliga. Jag tror inte det gäller generellt, se Förkunskaper nedan.

De flesta verkar nöjda eller mycket nöjda med föreläsningarna. Även övningarna verkar ha fungerat bra.

Kritik har främst riktats mot att det var för lite plats i labsalarna, att kursen bara går över en period, och att handledning och redovisningstider inte finns att tillgå efter periodens slut.

Många är missnöjda med kursboken. Den vanligaste kritiken är att boken är för tjock och att den är svår att slå i. Däremot anser många att den är utmärkt när man läser hela kapitel.

Utdraget i kursbunten som behandlade designmönster ansågs vara relevant och bra, men klart otillräckligt. Utdraget om UML ansågs ligga på för hög nivå och ta upp avancerade konstruktioner som aldrig användes i kursen.

Kursens belastning för eleverna

Av de kommentarer jag fått, personligen och via enkäten, verkar flertalet elever uppfatta kursen som mycket arbetskrävande. Den uppskattning av tiden som eleverna gjort för de tre obligatoriska laborationerna hamnar dock ungefär på den beräknade laborationstiden på 120 timmar. Jag tror i alla fall att många elever ägnar denna kurs alldeles för mycket tid pga att de inte arbetar systematiskt. Typiskt Ofta har jag fått hjälpa elever som säger sig ha suttit med en bugg "i timmar". Med enkel, systematisk felsökning har vi hittat felet på tio minuter. Med trial-and-error klarar man inte laborationerna i denna kurs, C++ är helt enkelt för komplicerat. Bristen på rationellt utnyttjande av tiden vid programmering är någonting vi (NADA) delvis är ansvariga för. Tredje- och fjärdeårsstudenter borde ha lärt sig att arbeta effektivt i de grundläggande datalogikurserna.

Förkunskaper

Förkunskaperna var väldigt varierande. Uppskattningsvis en tredjedel var väl förtrogna med programmering och språket C. En del av dessa hade gått INDA, andra hade skaffat sig dessa förkunskaper på annat sätt. Ca en tredjedel hade dock inte någon erfarenhet av C alls. De flesta av dessa hade gått TILDA (som är förkunskapskrav) men hade gjort sina laborationer i Java. Det gjorde det mycket svårt att lägga föreläsningarna på rätt nivå i början av kursen.

Verkligt kursinnehåll

Förläsningarna genomfördes enligt planen. Föreläsningsanteckningarna visar det som verkligen gicks igenom. Laborationerna finns också tillgängliga i PostScript.

Planerade förändringar

En ny kursledare utses till nästa läsår. Jag kan dock rekommendera följande förändringar:

Början av föreläsningskursen bör anpassas till de elever som saknar kunskaper i C. T ex kan man byta ut föreläsningen om UML:s dynamiska modell och föreläsningen om mallar mot två förläsningar som ordentligt går igenom minnesmodellen (t ex om lokala variabler på stacken, dynamiskt allokerat minne i heapen etc), scope, livslängd, parameteröverföring, grundläggande kontrollstrukturer, de inbyggda arrayerna, pekare.

Ett stort praktiskt problem var att kursomgången i period 4 var öppen för elever från alla program, även E. Det var ett beslut vi fattade för några år sedan. Hittills har det inte varit något problem. En del elever från E har gått i period 4, och en del elever från andra program har gått i period 3. I år blev det dock en lavineffekt och dussintals elever från E bytte till kursomgången i period 4, vilket start bidrog till trängseln i terminalsalarna. I det läget fanns inte mycket att göra. En del av E:arna hade ju redan från början planerat att gå i period 4 medan andra redan hade följt en del av undervisningen i period 3 men släpade efter med kursen. Det fanns inga praktiska möjligheter att utestänga vissa från kursomgången i period 4. Till nästa år måste detta regleras bättre. Enklast är troligen att hänvisa alla E:are till period 3 och alla andra till period 4. Sedan delar man inte ut konton till E:are, dvs alla E:are stryks från listan som systemgruppen får. Den informationen måste göras mycket tydlig på WWW-sidorna och i annat informationsmaterial.

^ Upp till Kursomgång period 4 98/99 för B,F,I,K,L,M,T,V.


Sidansvarig:
Senast ändrad 7 juni 1999
Tekniskt stöd: <webmaster@nada.kth.se>