Kursanalys, Datalogi I, grundkurs med Javaprogrammering, 2D4112, 10 poäng

Kursdata

Mål

Kursens mål är att
- ge kunskaper om grundläggande begrepp inom datateknik och datalogi
- ge kunskaper om olika programmeringsparadigmer: imperativ, objektorienterad respektive funktionell programmering
- ge datorvana samt färdighet i programmering i ett par moderna programspråk
- ge en grund för fortsatta studier i datalogi och programmering

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

Kursen är ny. Den ersätter en tidigare given 10p-kurs som innehöll språken Pascal, Fortran och Lisp samt allmän datalogi. Den nya kursen innehåller språken Java och Haskell samt allmän datalogi. Kursen har huvudsakligen samma uppläggning som den gamla hade, med intensivveckor, fast något färre föreläsningstimmar och och det viktigaste stoffet koncentrerat till måndag-onsdag varje intensivvecka.

Sammanfattning

Jag tycker i stort sett att kursen fungerat bra och jag vet att studenterna tyckte att kursen varit bra, intressant och rolig. Som alltid på fov-kurser är det mycket stor spridning när det gäller studenternas förkunskaper och förmåga att tillgodogöra sig kursinnehållet. Några bekymmer: Flera studenter som verkade ha förutsättningar att klara kursen bra slutade efter första veckan, några redovisade första labmomentet och någon gjorde det ej. Fler studenter som är duktiga (5:or på tentan) har 4 månader efter kursens slut ej redovisat labkurserna 2 och 3. Har inte haft någon absolut tidsgräns för redovisning av uppgifter utan bara rekommenderat att man gör labbarna under kursens gång.

Undervisningen

Kursens undervisning är fördelad på 5 intensiva veckor jämnt utspridda under höstterminen. Var och en av dessa 5 veckor ges salsundervisning 3 timmar på fm och laboration i datorsal 4 timmar på em. Några enstaka dagar har fått avvika från detta schema p.g.a. att det inte fanns någon ledig datorsal på em. Kursen schemaläggs av kursledaren själv när det stora KTH-schemat redan är lagt och då kan man inte alltid få det schema man vill. Varje vecka har lagts upp så att allt nytt stoff har behandlats på lektionerna måndag-onsdag. På torsdag-fredag har vi haft genomgång av fler exempel, repetition eller genomgång av något särskilt område, ibland på begäran av studenterna. Måndag-onsdag har haft föreläsningskaraktär och tordag-fredag har haft övningskaraktär. Ganska många studenter har valt att bara delta på föreläsningarna måndag-onsdag och göra laborationerna huvudsakligen hemma.

Examination

Examinationen består av en tentamen på hela kursinnehållet, utan hjälpmedel samt tre stycken laborationskurser. Tentan har 4 poäng och varje labkurs är värd 2 poäng. Tentan består av teorifrågor i allmän datalogi (ca 26%), haskell (ca 16%), flervalsfrågor om Java (ca 16%), programmeringsuppgifter i Java (ca 42%). Inga krav på poängfördelning mellan de olika delarna men det är nästan omöjligt att klara tentan utan att prestera någon Java- programmering. Tentan innehåller mindre Haskell än vad som motsvarar andelen Haskell i hela kursen. Skälet till detta är att tentan gavs efter 4:e kursveckan, då vi just börjat med Haskell och inte hunnit genom allt stoff om Haskell. Haskell examineras huvudsakligen genom laborationerna. Den första tentan var för lätt, speciellt flervalsfrågorna i Java var för lätta. Betyget på kursen (3, 4 eller 5) sätts som medelvärdet av tentabetyg och labkursbetyg med avrundning uppåt. För betyg 4 resp 5 på labkursen skall man göra en mindre resp större programmeringsuppgift valfritt i Java eller Haskell.

Kurslitteratur

Litteraturen specificeras under kursdata ovan. Kurslitteraturen känns lite problematisk. Datalogiboken av Hans Lunell är för gammal och bör ersättas med något modernare. Haskellboken är för omfattande och dyr och det kompendium i Haskell (författare: Fokker) som några elever har använt är för svårt för den här kursen. Javaboken är ganska bra men inte riktigt bra för kursen, den är på lite för låg nivå. Exemplen är överlag väldigt enkla vilket är bra för nybörjarna men det borde finnas svårare och mer intressanta exempel också. Begreppet rekursion tas inte upp överhuvudtaget och det finns inga bilder av minnesreservation. Det som är bra med boken är att den är lättillgängligt och pedagogiskt upplagd och startar på exakt samma sätt som kursen, man kan följa boken mycket bra i början. Den tar tidigt upp objekt och t.o.m. MVC-modellen men den håller lite väl hårt fast vid att programmera applets och fristående program blir något perifert och nästan udda i boken. Hoppas på att hitta ett nytt bättre Haskell-kompendium till nästa år och kanske en mer omfattande programmeringslärobok som kan ersätta både datalogiboken och Javaboken.

Elevsynpunkter

En enkät på kursens websida har genomförts. Fjorton studenter har svarat, vilket är ca 61% av dem som varit aktiva på kursen. Svaren är i stort sett mycket positiva och berömmande. T.ex. har 7 st (50%) svarat att kursen var mycket intressant och 7 st har svarat att kursen var intressant. Man bör förstås vänta sig högt betyg på en fov-kurs eftersom studenter väljer ju själva att gå kursen och slutar väl om de inte finner den meningsfull. Undervisningen har också fått högt betyg, 7 st ger föreläsningarna betyget "Mycket bra" och 5 st ger betyget "Bra" och ingen ger lägre betyg (två av dem som svarat har inte deltagit i undervisningen). Bland de fria kommentarerna finns mycket beröm men även en del förslag till förändringar och förbättringar: Någon tyckte att tentan inte borde innehålla någon Haskell alls eftersom man just börjat med det när tentan kom. Ett alternativ är förstås att lägga tentan efter undervisningen är slut. Andra önskemål: diskussionsforum på hemsidan för distansstudenter, föreläsningsanteckningar på hemsidan, modernare datalogibok.

Kursens belastning för eleverna

Allt tyder på att belastningen för "normalstudenten" är lagom eller möjligen något lätt. 10 (71%) personer har svarat att kursens arbete motsvarar 10 veckor, 3 (21%) har svarat att kursen inte borde vara värd så mycket och 1 (7%) har svarat att kursen borde ge fler poäng än 10.

Förkunskaper

Förkunskaperna är väldigt olika, det är mycket stor spridning på studenternas förmåga att tillgodogöra sig kursen, mycket större än på "vanliga" teknologkurser. Jämfört med den gamla grundkursen tycker jag att årets studenter hade betydligt bättre förkunskaper och var väl förberedda för kursen. De visste vad de hade sökt för typ av kurs till skillnad från en hel del av dem som läste den gamla kursen.

Planerade förändringar

Jag tänker försöka hitta annan litteratur och ändra lite grann på laborationerna och presentationen av stoffet. Övergången från grundläggande programmering (Vecka 1 och labkurs 1) till objektorienterad (v2, lab 2) skall göras mjukare och textbaserade gränssnitt skall få en lite större plats i kursen. Första delen av labkurs 2 (Telefonregister) tänker jag göra så att det är valfritt om man gör textgränssnitt eller grafiskt. De grafiska gränssnitten som ges färdiga i några labbar skall göras snyggare. Man kan överväga att flytta tentan till efter kursens slut. Ett alternativ till detta är att helt ta bort Haskell från tentan och utöka labkursen i Haskell (detta känns nog mer tilltalande). En del av moment 2 i Haskell-labkursen skall formuleras om så att det blir tydligare vad som förväntas av eleverna. Tentorna nästa kursomgång görs svårare och jag ska försöka skriva ännu mer om föreläsningarna på kurshemsidan (Redan nu presenteras många programexempel på kurshemsidan men inte motsvarande teorigenomgångar).