Kursanalys fovopad04

Objektorienterad programmering, analys och design med Java, 2D4135, 5 poäng

Kursdata

 

 

Mål

Kursens mål är att
- ge kännedom om principerna och begreppen inom objektorienterad analys, design och programmering
- ge kännedom om metoder för att utveckla objektorienterade program
- ge ökad färdighet i objektorienterad programmering

Kursen gavs för första gången

Kursen gavs för första gången och var alltså ny läsåret 2003/2004. Kursen är tänkt att läsas efter de två fov-kurserna Datalogi I 10p (grundkurs med Java och Haskell) och Datalogi II 5p (algoritmer och datastrukturer).

Sammanfattning

Rolig kurs att hålla och jag tror att studenterna uppskattade kursen. Nästan alla studenter hängde med bra, gick på alla lektioner, deltog aktivt i diskussioner under lektioerna. Det var mycket trevlig stämning.

Undervisningen

Kursens undervisning låg i två intensiva veckor, vecka 13 (slutet av mars) och 19 (början av maj) under vårterminen. Var och en av dessa veckor gavs måndag - torsdag salsundervisning 3 timmar på fm och laboration i datorsal 4 timmar på em. Fredag var lektionsfri med laboration 4 timmar på fm men inte garanterad handledning. Jag har bevakat SimaManager från mitt arbetsrum och ställt upp ändå vid behov.

Från början fanns en avsikt att (som på grundkursen) presentera nytt stoff mån-ons och ha repetition och exempel på torsdagen. Detta fungerade inte, det var för mycket stoff och det blev nödvändigt med vanliga lektioner även på torsdagen, endast sista timmen ägnades åt repetition.

Några studenter valde att göra laborationerna på egen hand och på egen dator men de flesta deltog i de schemalagda laborationerna. Vissa har gjort båda delarna.

Examination

Laborationerna examineras vid dator här på KTH, små kompletteringar har studenterna fått göra på distans via epost.
Tentan har en teoridel om 20 poäng och en problemdel om ca 30 poäng. På teoridelen är inga hjälpmedel tillåtna och på problemdelen får man ha alla skriftliga hjälpmedel. För godkänt krävs ca 25 poäng varav minst 10 från tentans problemdel. Godkända laborationer före tentan kan ge 1-4 bonuspoäng som adderas till tentapoängen (mycket effektivt för att få studenterna att redovisa labbar före tentan).
Betygen 3, 4 eller 5 sätts på labkursen och tentan var för sig. Betyget på labkursen ges av hur många extrauppgifter man gjort. Kursens slutbetyg (3, 4 eller 5) sätts som medelvärdet av tentabetyg och labkursbetyg med avrundning uppåt.

 

Kurslitteratur

Litteraturen specificeras under kursdata ovan. Jias bok fungerar ganska bra, den täcker kursen väl, har bra genomgångar både av Java och av designkriterier och designmönster men innehåller tyvärr ganska många fel, felen är dock små. Registret är mycket dåligt, innehåller för få uppslagsord, det man vill slå upp finns ofta inte. Exemplen är bra, det finns både små exempel och lite större tillämpningar.

Skansholms bok är mycket bra som programmeringslärobok men innehåller ingenting om designmönster. Det är dock ganska lätt att hitta websidor om designmönster, det finns t.o.m. hela böcker tillgängliga gratis på Internet.

Elevsynpunkter

Tyvärr är ingen enkät genomförd. Den mycket goda närvaron på lektionerna känns som ett gott betyg. Flera studenter har sagt att de är nöjda med kursen, att den var bra och rolig och lagom svår och att labanvisningarna var bra. En student tyckte att labbarna var för tillrättalagda, med för mycket instruktioner och tips, det blev inget kvar att "bita i".

Kursens belastning för eleverna

Allt tyder på att belastningen för "normalstudenten" är lagom, den enda studenten med för lite förkunskaper (se nedan) fick jobba mer än nominellt, några som var överkvalificerade behövde jobba mindre. Flera sa att det var lagom mycket arbete.

Förkunskaper

Som vanligt på fov-kurser är förkunskaperna är väldigt olika hos studenterna. Det var dock mindre spridning än vad det varit på grundkursen 2D4112. Några studenter hade mindre formella förkunskaper än det vi kräver (2D4112 samt 2D4117 eller motsv). Av dessa hade ett par gått andra programmeringskurser och några arbetade med programmering. Endast en hade bara gått grundkursen. Denna elev hade svårt att klara kursen men klarade sig till slut. Nästan alla andra som försökte klarade både labbar och tentan i första försöket. Det ser ut som om programmerarerfarenhet kan uppväga de formella förkunskaperna i algoritmer och datastruktuer.

Övrigt - Verkligt kursinnehåll

Skulle vilja ändra på kursens namn. Namnet kom till långt innan kursen planerades. Det är i första hand en kurs i objektorienterad programmering där principer för god design hela tiden beaktas. Det är också en fortsättningskurs i Java, både för dem som läst en grundkurs i Java eller kan mer än grunder i något annat språk. Kriterier och principer för god design samt designmönster är mycket viktigt i kursen men hela tiden exemplifierat i program. Objektorienterad analys förekommer inte så mycket, annat än att det definieras. Helst skulle ordet analys strykas ur kursens namn för att inte ge studenter fel förväntningar (en enda student väntade sig att kursen inte skulle handla särskilt mycket om programmering)

Få studenter, många avhopp före kursstart

Antalet studenter som sökte och antogs till kursen var över 40 st. Endast 20 registrerades, 16 följde kursen och 12 examinerades på allt. Några av skälen till att de första 40 reducerades till 20 kan ha varit att KTH:s informationssidor hade missvisande och motsägande information om kursen samt att KTH inte skickat ut antagningsbesked. Man angav ett veckonummer och ett datum för kursstart och dessa stämde inte överens. Jag fick veta för sent att flera som inte kom till kursen hade valt att gå någon annan kurs därför att de inte fått antagningsbesked om den här kursen. Jag trodde att KTH:s administration som sköter antagningen även meddelar studenter att de är antagna! Detta måste skötas bättre nästa gång.

Planerade förändringar

Lite mer utrymme för egna initiativ i några labbar skulle vara bra (önskemål från en student). Kursboken är ganska bra men det vore intressant att titta på alternativ. I år var kursuppläggningen sådan att allt om designmönster togs upp andra kursveckan, man kan fundera på att föra in designmönster tidigare kombinerat med att föra in designmönster i den sista labben i Labkurs 1. Detta kan göras utan att göra labben svårare.