bild
Skolan för
elektroteknik
och datavetenskap

Kursanalys för DD2458, popuph11 (HT 2011)

Författare: Mikael Goldmann

Kursdata

Data har hämtats från VIS och baserar sig på resultat inrapporterade senast 2012-01-22

Kurs DD2458, Problemlösning och programmering under press, 9hp
Examination programmeringsuppgifter, problemsessioner och anteckningar
Genomförd HT 2011
Föreläsningar 26 timmar (13 st)
Kurslitteratur (rekommenderad) Kompendium med föreläsningsanteckningar. Rekommenderade komplement: Skiena: the Algorithm Design Manual eller Cormen et al.: Introduction to algorithms eller liknande.
Antal studenter 21, inga kvinnor
Prestationsgrad76%
Examinationsgrad62%
Ansvarig/föreläsare Mikael Goldmann
Övriga lärare Cenny Wenner och Lukáš Poláček

Sammanfattning

En mer normal omgång än föregående, vilket tyvärr betyder fler avhopp. Vid förra kurstillfället gick ett falskt rykte om att det var sista tillfället att gå kursen.

Examinations- och prestationsgrad

Siffrorna är betydligt lägre än för omgången på vårterminen. VT-11 var studenterna tvungna att slåss om platserna vilket antagligen ökade deras motivation.

Tyvärr tycks en del av studenterna som följde kursen under hösten registrerat sig vid något annan tillfälle, för jag hittar resultat för fler personer i rapp än i VIS. Jämför jag med Mina Sidor sä är där ännu färre studenter uppräcknade som "förväntade deltagare". Det är alltså omöjligt att avgöra vilka studender som utgör underlag för siffrorna VIS presenterar för mig.

Det jag kan säga om studenterna som fanns i rapp är att några hoppade av mycket tidigt. Därefter återstod 21, varav ett par från SU. Av dessa är samtliga klara med momentet LAB1 (4,5 hp) medan endast 14 är klara med momentet OVN1 (4,5 hp). Av de sju som inte är klara saknar en endast momentet "hemtalsanteckningar" medan övriga sex även har löst för få uppgifter i Kattis. En till tre av dem skulle kunna tänkas bli klara till sommaren.

Studenter

Studenterna går i huvudsak fjärde året av sin utbildning. Majoriteten kommer från D-programmet men det finns även studenter från IT, F och SU.

Mål

Kursens mål är att studenten ska kunna
  • analysera effektiviteten hos olika lösningsmetoder för att avgöra vilka som i ett givet sammanhang är rimligt effektiva,
  • jämföra givna problem med avseende på svårighetsgrad,
  • använda och anpassa grundläggande algoritmer inom områden som grafteori, talteori, geometri på givna problem,
  • använda algoritmkonstruktionsmetoder som giriga algoritmer, dynamisk programmering, dekomposition och kombinatorisk sökning för att konstruera algoritmer för att lösa givna problem,
  • givet en specifikation av en algoritm eller datastruktur, implementera den korrekt i ett programmeringsspråk,
  • kommunicera med andra studenter under problemlösning i grupp,
  • i skrift beskriva algoritmer, datastrukturer och problem på ett koncist och begripligt sätt.
för att studenterna ska
  • kunna arbeta effektivt under tidspress,
  • bli duktigare på praktisk problemlösning och programmering,
  • kunna delta framgångsrikt i nationella och internationella programmeringstävlingar.

En förhoppning är också att deltagarna ska inspireras att delta i tävlingar utanför kursen, speciellt i SM/NM.

Verkligt kursinnehåll

Vi har följt den planering som finns på kursomgångens hemsidor. Kursen innehåller en mindre mängd teori utöver det som ingår i ADK-kursen, men förståelsen för specifika algoritmer och datastrukturer fördjupas och förmågan att använda dessa kunskaper praktiskt tränas grundligt. Tonvikten ligger på kombinatoriska problem men det förekommer även enkla problem inom talteori och geometri.

Undervisning

Undervisningen har dels bestått av teoriföreläsningar och dels av praktiskt orienterade övningar/labbar. Dessutom har ett antal obligatoriska problemsessioner varit en del av examinationen. De entimmesövningar som kursen innehåller har använts för att gå igenom hemtalen och ge tips inför kommande hemtal. Övningarna har inte helt fungerat vilket antagligen beror på osäkerhet från lärarnas sida, även vad gäller mig själv, om hur mycket hjälp man ska ge studenterna med examinationen. Det är svårt att ge tips som stöder elevens lärande. Det blir lätt antingen för vagt eller att man avslöjar nästan hela lösningen.

Föreläsningarna är enligt enkäten bra, men det var trots det många som slutade komma på dem. Eftersom inget tyder på att föreläsningarna stött bort studenter så beror det kanske på att en del klarar examinationen utan dem. Mot slutet var det i många fall fem eller färre studenter, vilket känns som ett slöseri med resurser. Kanske man skulle koncentrera föreläsningarna mer i början av kursen för att sedan låta exmination pågå efter det att föreläsningarna är över? En möjlig nackdel är att studenterna skulle kunna känna sig lite övergivna när föreläsningarna är slut.

Alexander Baltatzis och Torbjörn Granlund har hållit var sin gästföreläsning à 90 minuter. Mikael Lagerkvist har hållit en gäst föreläsning om 45 minuter.

Den trettonde föreläsningen ställdes in då vi redan täckt allt stoff och det dessutom var väldigt få som kom på föreläsningarna i slutet.

Examination

Kursen har två moment som vardera består av två delmoment:

LAB1

  • Problemsessioner: fyra st fyra-timmars problemlösningspass i labbsal
  • Bygga ett litet kodbibliotek

OVN1

  • Hemuppgifter: programmeringsuppgifter som endast redovisas via Kattis
  • Anteckningar med lösningsförslag:: färdigställa anteckningar med ösningsskisser i latex från en hemtalsomgång.

Problemsessionerna genomförs i grupper med två personer (i undantagsfall tre personer). Meningen är att delar av kodbiblioteket ska vara användbart på problemsessionerna.

För i stort sett varje vecka finns en uppsättning med sex hemuppgifter. Det är dock inte alls nödvändigt att lösa alla för att få godkänt på kursen. För anteckningar med lösningsförslaf finns vissa krav på språk, presentation och typografi. Meningen är att anteckningarna ska kunna användas som kurslitteratur. Anteckningarna kan göras av en grupp på två.

Kurslitteratur

Kurslitteraturen utgörs av ett kompendium baserat på tidigare kursomgångar. Dessutom är det lämpligt att ha en bok om algoritmer och datastrukturer; ett par böcker som kan rekommenderas är Skienas The Algorithm Design Manual och Cormen, Leiserson, Rivest och Steins Introduction to Algorithms. Kompendient bygger på tidiager års föreläsningsanteckningar och är numera så pass komplett att det fungerar rätt bra.

Studenternas arbetsbelastning

Examinationen har varit utspridd över hela kursen. Problemsessionerna har varit vissa bestämda datum, men man har inte varit tvungen att delta vid alla tillfällen. De uppgifter som ska lösas varje vecka kan ta ganska lång tid i anspråk totalt över hela kursen om man siktar på ett bra betyg.

Förkunskaper

Problemen kan ofta lösas genom att tillämpa algoritmer och metoder från kursen Algoritmer, datastrukturer och komplexitet (eller liknande kurs), så kursdeltagarna behöver förkunskaper motsvarande stora delar av den kursen.

Förändringar från föregående kursomgång

VT 2011 skulle man även skriva föreläsningsanteckningar från en föreläsning. Det momentet togs bort inför denna omgång.

En ny version av Kattis som kör på ny hårdvara sjösattes i början av kursen.

Enkät

En enkät har genomförts och den har besvarats av 10 personer. En sammanställning av resultaten finns som bilaga.

Enkäten tyder på att studenterna på det stora hela är mycket nöjda. Några saker som behöver förbättras är upplägget på entimmes-passen med hemtalsgenomgångar. Hemtalsantckningsmomentet är inte helt lika populärt som övriga delar av examinationen. Svårigheten är hur man ska stödja den som skriver anteckningar eftersom det kan ingå problem i en hemtalsomgång som den studenten inte klarar av att lösa.

Slutsatser och kommande förändringar

Eftersom jag planerar att vara tjänstledig HT 2012 vet jag in i skrivande stund när nästa kursomgång kommer att äga rum eller vem som kommer att vara kursansvarig. Därför ska det här avsnittet ses som reflektioner och förslag snarare än planerade ändringar.

En genomgång och uppdatering av hem- och labbuppgifter görs varje år.

Man måste fundera på hur övningstillfällena ska användas. Enkäten ger inte ett tydligt svar på vad som vore ett bra alternativ. Själv tror jag att handledning via mail eller IRC är väl så värdefull och att det kanske inte behöver vara mer tidskrävande. Det ger förstås mer hjälp till studenter som tar för sig, men har fördelen att man helt kan anpassa sig efter behov.

Hemtalsanteckningarna är värda att tänka över. Jag tror det är bra att träna sig i att formulera sina tankar i text och att kunna LaTeX tror jag kan vara användbart, även om det huvusakligen används i den akademiska världen. Det är fortfarande svårslaget när det gäller att skriva matematisk text prydligt. Huvudpoängen är dock naturligtvis att träna sig i att presentera algoritmer och resonera kring deras korrekthet och komplexitet. En student föreslår i enkäten att man i stället för att skriva lösningsförslag skulle utveckla egna problem. Det skulle kunna vara roligare men det är svårt. För flera år sedan provades precis det momentet med ganska blandat resultat. Ett fåtal studenter gjorde hyffsade problem, men de flesta problemen var antingen bristfälligt maskerade versioner av problem som givits på kursen eller illa genomtänkta. För att lösningsförslagen ska fungera bättre tror jag i stället det som behövs är lärartid för att tillsammans med studenten gå igenom problemen som anteckningarna ska handla om före deadline. Å andra sidan har det faktum att studenterna själva producerat de lösningar de beskriver hjälpt mig hitta bristfällig testdata i Kattis då de ibland beskrivit felaktiga algoritmer som när de implementerat dem accepterats av Kattis. Kanske kan man hitta en form som gör just detta att avslöja brister i testdata till något mer än en bieffekt av examinationen.

Copyright © Sidansvarig: Mikael Goldmann <migo@kth.se>
Uppdaterad 2012-02-23