Nada

Kursanalys för 2D1387 Programsystemkonstruktion med C++, hösten 2000

Kursdata

Tid: period 2 läsåret 2000/2001, dvs oktober-december 2000
Poängantal: 4 (varav 3 på labb, 1 på tenta)
Tenta: ordinarietenta efter period 2 (20 december 2000)
Föreläsningar: 16 timmar.
Övningar: 6 timmar.
Labbtillfällen: 18 timmar.
Kursledare och föreläsare: Johnny Bigert
Övningsassistenter: Mårten Björkman och Mattias Lindström (båda doktorander på CVAP)
Antal aktiva elever: 96 varav 22 från SU
Kurslitteratur: Bjarne Stroustrup "The C++ programming language", Stanley Lippman "C++ primer"

Avklarade moment efter ordinarietentan 2000-12-20:

Tenta         81 av 88 (92% G av tentander, 84% av alla)
Labb 1        94
Labb 2        80
Labb 3        71
Alla labbar   67 (70%)

Prestationsgrad:    73%
Examinationsgrad:   62%

Mål

Kursens mål är att för att eleverna ska

Sammanfattning

Resultatet på ordinarietentan var mycket bra med endast 7 underkända på 88 tentander (8%). Tentan speglade den ganska komplicerade teorin bakom språket och behandlade endast det som tagits upp på föreläsningarna. Min gissning är, och förfrågningar bekräftar delvis, att de som inte deltagit på föreläsningarna upplevde tentamen som mycket svår.

Labbarna har gett eleverna praktisk erfarenhet genom många timmars laborerande (genomsnittstider för labb1 15h, labb2 35h, labb3 90h). Labbarna upplevdes av somliga som extremt tidskrävande och med stundvis monotona och repetitiva moment (citat "cut-and-paste"). Andra elever som använt tekniker som språket tillhandahåller som t.ex. mallar (templates) hade inte samma åsikter. Mitt förslag till lösning är att viga lite tid till genomgång av labbarna med tips om olika tekniker (detta gjordes inte denna omgång).

Ingen specifik kursbok har utsetts vilket har bidragit till en viss förvirring, dock har två böcker rekommenderats (Stroustrup resp. Lippman). Anledningen till detta var att eleverna har olika förkunskaper och önskemål, vilket visar sig i de många motsägelsefulla kommentarer jag fått om de föreslagna kursböckerna (Lippman: "för många exempel", "för få exempel", "för pratig", "för kortfattad" etc.). Vissa elever vill ha ett renodlat referensverk medan andra vill ha en genomgång från grunden med många exempel. Till nästa år ska eleverna få välja bland böcker i olika kategorier såsom referensverk, nybörjarbok, mer avancerad etc.

Jag har dessutom fått många kommentarer på att det är svårt att hitta information om de olika funktionerna och klasserna i standardbiblioteket (och då speciellt STL). Eleverna kommer i nästa kursomgång rekommenderas böcker även inom detta område.

Förutom ovan föreslagna förändringar ska kursens innehåll förändras på följande punkter till nästa kursomgång:

Faktiskt innehåll i kursen

Kursen behandlade alla delar av språket med ett fåtal undantag. Dessutom behandlades de vanligaste behållarna i STL, iteratorer, strängar samt in- och utmatning.

Elevernas synpunkter

En enkät (49 svar, 51%) gjordes med Eval. Här följer en sammanfattning av enkätsvaren.

Kursinnehåll

Kursen ansågs vara ganska svår (41%) av dom flesta, medan några tyckte den var medelsvår (39%) eller mycket svår (4%). Jag tror att kursen är en av de tyngsta av datalogikurserna (och då inte endast på Nada) sett till arbetsbördan. Jag anser att detta är befogat eftersom språket är så stort och komplext. Det krävs mycket tid framför datorn för att få en känsla för teknikerna.

80% fick i början av kursen klart för sig vad kursens mål var; 18% var tveksamma. En stor majoritet (90%) tyckte kursen var intressant och meningsfull. 90% tyckte deras förkunskaper på Java var tillräckliga.

Kurslitteratur

50% använde Stroustrups bok, 23% använde Lippmans och övriga använde någon annan bok, såsom Stroustrup: 21% tyckte att boken var bra, medan 33% tyckte den var hyfsad. Kommentarer: Lippman: 36% tyckte att boken var bra, medan 45% tyckte den var hyfsad. Kommentarer: Efter kommentarerna att döma var både Lippman och Stroustrup svårlästa och innehöll dåliga exempel. De flesta tyckte också att de var dåliga som referenslitteratur. Jag ska införa en ny bok till nästa kursomgång om jag kan hitta en lämplig.

Föreläsningsanteckningarna (120 sidor), med kopior på alla stordiabilder som visades, ansågs vara mycket bra eller bra av 61%. 31% tyckte de var hyfsade. Veckans föreläsningsanteckningar delades ut i början av första föreläsningen varje vecka. Kommentarer:

Kommentarerna visade att eleverna tyckte exemplen var för få och därför inte alltid var tillräckliga för att se iden bakom teknikerna. Jag ska införa fler och mer utförliga exempel till nästa kursomgång.

Undervisningen

Kursen är upplagd så att den som vill läsa in den själv ska kunna göra det. Trots detta gick 47% på i stort sett alla föreläsningarna. 24% gick på mindre än 20% av föreläsningarna. 56% ansåg att föreläsningarna pedagogiskt sett var mycket bra eller bra. En person ansåg att dom var dåliga. Några kommentarer: Det framgår att eleverna upplevde att de svåra delarna fick för lite tid på föreläsningarna. Jag ska omfördela tiden så att grunderna får mindre tid och mer avancerade ämnen får mer tid. Dock tror jag inte att det lönar sig att lägga till flera föreläsningar med exempel. Det behövs helt enkelt mycket datortid för att ta till sig teknikerna.

24% gick på en av övningarna, 14% gick på två medan 16% gick på samtliga övningar. 45% gick inte på övningarna alls. 68% av de som gick på övningarna tyckte att de var bra eller mycket bra pedagogiskt.
Kommentarerna visade att övningarna höll en något för låg nivå.

Examinationen

Labbarna upplevdes som nyttiga och givande men väldigt tidskrävande. Laboration 1 tog 15 h i genomsnitt, laboration 2 tog 35h och laboration 3 tog 90 timmar i genomsnitt.

Kommentarer om labbarna:

Den första laborationen verkar ha varit en lagom introduktion till C++.

Laboration 2 medförde vissa svårigheter beroende på vilket angreppssätt man valde. Jag ska ge en skelettfil till nästa kursomgång för att undvika att eleverna fastnar med de otaliga datumproblemen.

Kommentarer gällande laboration 3 visade att de flesta elever upplevde labben som alldeles för tidskrävande. Jag tror att det finns flera orsaker till detta: dels var labben helt ny och det var därför svårt att uppskatta tidsåtgången, dels var kraven på antalet objekt orimligt höga utan att tillföra några kunskaper.

Mina slutsatser gällande labbarna var att de medförde en orimlig tidsåtgång på problem som inte är C++-relaterade. I vissa fall (och då speciellt labb 3) kunde tidsåtgången delvis ha undvikits genom tips på föreläsningen (t.ex. mallar). Jag anser dock att den tidsåtgång som återstår efter irrelevanta problem inte är orimlig. C++ är ett stort och komplicerat språk och det behövs många datortimmar för att få en känsla för teknikerna. Jag ska under nästa kursomgång förbereda eleverna på att labbarna tar lång tid samt ge skelettfiler att bygga på. Dessutom ska labb 3 övergå till att bli projektuppgift.

Ytterligare kommentarer på kursen

Planerade förändringar

Jag tycker att kursen har fungerat över förväntan och jag har fått många positiva kommentarer från eleverna. De negativa kommentarerna rörde mestadels tidsåtgången och monotona delar på labbarna. Jag ska därför fundera på hur man ska få tiden att kännas mer meningsfull. Planerade förändringar:

^ Upp till kursens hemsida.


Sidansvarig: <johnny@nada.kth.se>
Senast ändrad 5 mars 2001
Tekniskt stöd: <webmaster@nada.kth.se>