bild
Skolan för
elektroteknik
och datavetenskap

Numeriska metoder och grundläggande programmering för M1, 2009

Kursanalys

Denna analys har utförts av Hedvig Kjellström och baseras på studentenkät i maj-juni 2009 som besvarades av 67 studenter, samt samtal med lärarna Staffan Romberger och Jon Häggblad, årskursrepresentanterna Johan Forsberg och Johan Sandmark och studenten Filip Bjurling.

Kursdata

Kursen DN1212 Numeriska metoder och grundläggande programmering, 9hp, gavs för M1, november 2008 - maj 2009. Kursledare var Hedvig Kjellström, föreläsare i programmering Staffan Romberger och i numerisk analys Hedvig Kjellström, och övningsassistenter Staffan Romberger, Beatrice Frock, Hedvig Kjellström och Jon Häggblad.

Under kursen gavs 32 timmar föreläsning, 32 timmar övning samt 26 timmar lärarledd datorsalstid uppdelade på tvåtimmarspass. Studenterna delades in i tre övningsgrupper.

Examinationen bestod av tre programmeringslabbar (3hp) och två numeriklabbar (1,5hp) som redovisades muntligt i par, ett numerikprojekt (1,5hp) som redovisades via skriftlig rapport i par, och en skriftlig tentamen i numerisk analys (3hp).

119 studenter deltog aktivt i kursen (och hade inte redovisat något moment i en tidigare kurs). 18 studenter hoppade av innan de redovisat något moment.

Kursmål

Kursen behandlar programmering i Matlab och grundläggande numeriska metoder, och läses av årskurs 1 i civilingenjörsprogrammet Maskinteknik. Efter genomgången kurs ska studenten kunna

  • identifiera olika matematiska problem och skriva om dem på en form som är lämplig för numerisk behandling
  • välja lämplig numerisk metod för behandling av det givna problemet
  • motivera val av metod genom att redogöra för fördelar och begränsningar
  • välja en algoritm som leder till effektiva beräkningar och implementera den i ett programspråk lämpat för beräkningar t ex Matlab
  • presentera resultaten på ett relevant och illustrativt sätt
  • göra tillförlitlighetsbedömning av resultaten \item bryta ner större problem i hanterliga delar och skriva egna funktioner för dessa i programspråket
  • använda styr- och datastrukturer
  • hantera filer på olika sätt, både vid inläsning och utskrift
  • använda färdiga funktioner ur programspråkets bibliotek (t ex Matlabs bibliotek) för beräkning, visualisering och effektiv programmering
  • skriva välstrukturerade program i programspråket
I enkäten svarade endast 19% att de fick kursens mål klart för sig i början av kursen. Därför bör presentationen av kursmålen på den första föreläsningen kompletteras med exempel på numeriska metoder, program och tillämpningar.

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

Kursen gavs hela period 4 ut eftersom utbrutna tentor inte längre hålls. Detta gjorde att kursen varade en månad längre än tidigare år. Ny kursledare var Hedvig Kjellström, och kursplan från DN1212 för Farkostteknik användes.

Nytt för i år var också att en gemensam tenta gavs för alla grundläggande numerikkurser, med en del 1 bestående av flervalsfrågor som gav betyg F eller E, samt en betygshöjande del 2 som gav betyg E-A. Del 2 rättades bara om del 1 var godkänd.

Undervisning

Kursen bestod av en programmeringsdel med 6 föreläsningar, 6 övningar och 6 lärarledda datorsalstillfällen, och en numerikdel med 10 föreläsningar, 10 övningar och 7 lärarledda datorsalstillfällen. I enkäten svarade endast 18% att de upplevde att de lärarledda aktiviteterna hjälpte dem att arbeta mot kursmålen. Detta tyder på att kursaktiviteterna tydligare måste stimulera studenterna att studera aktivt under kursens gång (eftersom det enda sättet att nå kursmålen ju är att arbeta aktivt). Många studenter har en lärarcentrerad syn på utbildning - en del studenter anser det till och med vara lärarens ansvar att se till att de lär sig kursen (se "Studentkommentarer").

På förfrågan från studenterna flyttades redovisningsdatum för lab 2 och 3 ett datorsalstillfälle framåt i tiden. Det fick till följd att programmeringsdelen bestod av 7 datorsalstillfällen och numerikdelen bara 6. Därför sattes två extra datorsalstillfällen in 18 mars och 4 juni, så att antalet numeriktillfällen blev 8.

Undervisningen planerades så att varje moment först gick igenom teoretiskt på föreläsning, tillämpades under ledning av en assistent på övning och sedan av studenterna själva i datorsalen. Detta var inte klart för många studenter, som efterfrågade mer praktik på föreläsningarna (se "Studentkommentarer"). Anledningen till detta kan vara att de andra kurserna som studenterna läste parallellt hade ett annat upplägg, med många fler föreläsningar än övningar.

Numerikföreläsningarna innehöll studentaktiviteter, som att ensam eller i par svara på en fråga, formulera en fråga, eller fundera över en frågeställning. De första föreläsningarnas aktiviteter gick mycket bra, men i den senare delen av kursen mindre bra. Anledningen kan anas i enkätsvaren: Endast 21% av studenterna förberedde sig ofta eller ibland till föreläsningar, och endast 15% till övningarna. Studenterna uppfattades av assistenterna som passiva och uttråkade på övningarna, och detta förstärks av svaren i studentenkäten: Studenterna tyckte inte övningarna var meningsfulla och skulle hellre vilja jobba själva under alla övningar (28%) eller en del övningar (46%).

Planerade förändringar

Eftersom studenterna fick förhållandevis mycket hjälp i datorsal under programmeringsdelen kom många aldrig igång att programmera självständigt och söka hjälp i litteraturen, och fick därför stora problem med numeriklabbarna (där de fick mindre lärarhjälp). Inför nästa år föreslår jag därför att totala antalet datorhjälpstillfällen utökas från 13 till 15, och att dessa fördelas som: programmeringsdelen 6, numerikdelen 9, så att studenterna får mindre hjälp i börja och mer i slutet av kursen.

I nästa års kurs-PM bör undervisningsstrukturen med föreläsning, övning, lab göras mycket tydligare, så att studenterna upplever teoretiska föreläsningar som meningsfulla.

För att hjälpa studenterna att studera aktivt, kontinuerligt under kursens gång föreslår jag att föreläsningarna innehåller fler och mindre diagnostiska prov med kamraträttning. Det ger en sporre att förbereda sig för att prestera så bra som möjligt på proven. Jag föreslår också att studenterna löser tal på egen hand under den andra timmen av varje övning (räknestuga). På så sätt får de snabbt omsätta det de lärt sig under den första timmen.

Examination

(Eftersom DN1212 ges i flera omgångar varje år kan inte examinationsformen eller bonuspoängsystemet ändras på en individuell kursomgång. Förändringar måste ske för alla kursomgångar samtidigt.)

Programmeringsdelen av kursen examinerades med tre programmeringslabbar (3hp) som redovisades muntligt i par. Numerikdelen av kursen examinerades med två numeriklabbar (1,5hp) som redovisades muntligt i par, ett numerikprojekt (1,5hp) som redovisades via skriftlig rapport i par, och en skriftlig tentamen i numerisk analys (3hp). Endast tentan var betygsgivande, men labbar utförda i tid gav upp till 4 bonuspoäng på tentan.

Den 16 juni såg labbstatistiken ut som följer:

LAB  ANTAL  (%) 
---------------
1D   119    100
2D   112     94
3D   111     93
4N   105     88
5N   103     87
6P    37     31
Totalt antal studenter: 119
Medan godkäntfrekvensen för labb 1-5 är hög, har många studenter skjutit på inlämningen av rapporten. Orsaken är troligen att deadlines för labb 4 och 5 låg så sent att många inte hann med projektet och rapporten under terminen. En student kommenterar också att deadline låg för långt bort i tiden från föreläsningar som gick igenom samma kursmoment (se "Studentkommentarer").

Programmeringsdelen av kursen (labb 1-3) var lagom avpassad, till och med lite för liten, för sina 3hp (80 timmar varav 24 timmar salsundervisning): 75% ägnade mindre än 20 timmar åt labb 1-3 enligt enkäten. Det lämnar minst 34 timmar åt föreläsningsförberedelse, ca 5,5 timmar per föreläsning, för dessa 75%.

Numerikdelen av kursen (labb 4-5, projekt, tenta) också lagom avpassad, om än mer krävande, för sina 6hp (160 timmar varav 40 timmar salsundervisning och 3 timmar tenta). Här uppger 72% att de ägnat mindre än 20 timmar åt lab 4, 72% att de ägnat mindre än 20 timmar åt lab 5 och 74% att de ägnat mindre än 35 timmar åt projektet. Det lämnar minst 42 timmar åt föreläsningsföreberedelse och tentaförberedelse för dessa 72%.

I enkäten ställdes en fråga om kopiering av kod. 53% svarade att de enstaka gånger kopierat programdelar från andra studenter och 19% svarade att de ofta gjort det. Studerar man de medföljande kommentarerna ges dock en annan bild (se "Studentkommentarer"): Många uppger att de menar att de diskuterar sin kod med andra studenter och ber om hjälp med enstaka rader - vilket ju är helt i sin ordning. Enligt CSC:s hederskodex ska dock all hjälp redovisas med en kommentar i koden. Några studenter blir, högst förståeligt, frustrerade av att se andra kopiera. Det behövs helt klart en större medvetenhet bland studenterna om vad som är tillåtet och icke tillåtet studentsamarbete. Jag uppfattar däremot inte att det finns en allmän kultur av att fuska på Maskinteknik, något som vissa enkätkommentarer gör gällande (se "Studentkommentarer").

Resultatet på den ordinarie tentamen 27 maj 2009 blev:

BETYG  ANTAL  (%) 
-----------------
A       1       1
B       6       6
C       2       2
D      11      11
E      36      35
F      48      46
Totalt antal tentander: 104
Detta resultat är märkbart sämre än förra året, speciellt med avseende på betyg högre än E. Anledningen är de nya tentamensrutinerna, där alla grundläggande numerikkurser skriver samma tenta. Svårighetsgraden på denna behöver kalibreras: Del 1 av tentan är alldeles för svår för denna kurs' studenter, vilket gör att många inte hinner ens börja på den betygshöjande del 2.

Ett annat problem som uppstod vid tentan var platsbrist. CSC tillämpar inte föranmälan till tentor utan antalet tentander uppskattas av lärarna. I och med att så många studenter skriver samtidigt innebär ett litet procentuellt fel i antalet platser ett stort absolutfel. Vid tentan 27 maj 2009 kom det 70 studenter fler än beräknat.

En viktig skillnad mot studenternas tidigare kurser i framförallt matematik är att examinationen här sker löpande under kursens gång genom datorlabbar. Det krävs alltså att studenterna kontinuerligt läser kurslitteraturen på egen hand - mer om detta i "Förkunskaper".

Planerade förändringar

Lägg deadline för alla labbar exakt veckan efter övningen då det sista momentet på respektive lab gås igenom. På detta sätt stimuleras studenterna att börja med labbmoment så snart motsvarande moment gåtts igenom på föreläsning och övning. Samtidigt ges alla en vecka att slutföra labben efter lärarledd genomgång.

Nästa år bör CSC:s hederskodex gås igenom mycket noggrannare på den första föreläsningen.

Verka för att del 1 av tentan blir enklare.

Verka för att föranmälan blir obligatoriskt på grundläggande numeriktentor.

I nästa års kurs-PM bör den kontinuerliga examinationen, och vad det innebär ifråga om förberedelser till alla föreläsningar, övningar och labbar, göras mycket tydligare.

Förkunskaper

Denna kurs uppfattas enligt enkäten som ganska (44%) eller mycket svår (31%) av studenterna. Jag håller med studenterna om att kursen är svår, och jag tror anledningen är att ett mycket stort kursstoff ska täckas på relativt översiktlig nivå. Det kräver en förmåga att "skumma" teknisk text, något som studenterna ännu inte tränat på.

42% av studenterna anser inte att de har de rätta förkunskaperna, och 22% är tveksamma. Kursen kräver formellt inga andra förkunskaper än den obligatoriska matematiken under första terminen, samt Matlab-delen av MJ1102 Maskinteknik. Däremot kommer en student som inte läser självständigt i kurslitteraturen snabbt efter, eftersom examinationen sker kontinuerligt under kursens gång. Att läsa teknisk text är svårt, och min gissning är att studenterna inte har fått träna på detta tillräckligt för att kunna tillgodogöra sig kurslitteraturen på egen hand.

Planerade förändringar

Lägg mer tid på att träna läsning av teknisk text, så tidigt som möjligt i kursen.

Kurslitteratur

Kursböcker var Stephen J. Chapman, MATLAB Programming for Engineers, samt Peter Pohl, Grundkurs i numeriska metoder. Dessutom använde många Gerd Eriksson, Numeriska algoritmer med Matlab.

Planerade förändringar

Inga.

Studentkommentarer

- Bra att föreläsningsanteckningarna finns på hemsidan! något som skulle göra anteckningarna ännu bättre är om de innehöll lite mer berättande text (för att t.ex. lättare förstå vissa grafer osv.).
Kursledarens kommentar: Föreläsningsanteckningarna är inte tänkta att ersätta kurslitteraturen, därför innehåller de inte mycket berättande text.

- Tyvärr var Hedivgs föreläsningar väldigt ostrukturerade vilket ledde till att många tappade intresse och sluta gå på föreläsningarna. Hedvig behöver jobba på att planera föreläsningarna bättre för annars får vi som åskådare en känsla av att hon inte vet vad hon ska göra. Föreläsningen bör vara upplagd på det här sättet: Teori, problem exempel och lösning av problemet.
Kursledarens kommentar: Denna kommentar tyder på att jag inte gjorde undervisningsstrukturen med föreläsning, övning, datorsalsövning klar (se "Undervisning").

- [Hedvigs] pauser efter halva lektionen är mycket bra intiativ! Keep up the good work!

- Hedvig är en bra föreläsare. Speciellt bra att föreläsningarna finns på nätet, då kan man läsa dem igen om man inte hängde med och koncentrera sig mer på förståelse under föreläsningen.

- jag anser att övningarna är till för att förbereda kursdeltagarna
- Ungefär 50% av det jag kunde om numme inför tentan var det jag pluggade de 2 sista dagarna. Och det gick ändå bra, tror jag. Så om föreläsningarna och övningarna undervisades bättre, så hade jag klarat mig ännu bättre.
Kursledarens kommentar: Anknyter till diskussion om studentens roll i lärandet och vem som har ansvar för studierna (se "Undervisning").

- Jag tror absolut inlärningen skulle gå snabbare om man får räkna själv på övningstillfällena med en lärare att fråga. Jag tyckte det var svårt att räkna hemma själv, dels för att jag inte tyckte det va särskilt intressant, men också för att jag prioriterade annat före.
Kursledarens kommentar: Anknyter till diskussion om övningar (se "Undervisning").

- Assarna har varit till stor hjälp!

- När man väl får hjälp, hjälper de en kanske bara halvvägs och sedan ber en själv å lista ut det sista svåra. Om man väl inte förstår då tar det 40min tills man möjligtvis får hjälp nästa gång.
Kursledarens kommentar: Anknyter till diskussion om att komma igång att programmera självständigt (se "Undervisning").

- Inför någon slags morot för att motivera eleverna.
Exempelvis som i maskinteknikskursen där vi hade kamraträttningar:
5 Hemtal som ska göras å redovisas på etttils vissa räknestugtillfälle. De behöver inte vara helt rätt, så länge man har satt sig in i problemet å försökt. 4 av 5 Hemtal är obligatoriska och om man göra dem får man 1-2p till tentan.

Kursledarens kommentar: Det finns inte utrymme i examinationsramarna att införa obligatoriska hemtal, men väl kamraträttade frivilliga (se "Undervisning").

- [Bristande förberedelser] kan bero till stor det av att kursen har hamnat i skymundan för intensivare kursen som mattekursena och mekaniken. (Intensivare = Går under färre perioder).
Kursledarens kommentar: Jag håller med om detta och tycker det skulle vara utmärkt om kursen gick bara under halva period 2 och period 3.

- dock ligger inte teori och labbar i fas så man oftast hann glömma mkt som man annars kunnat använda...
Kursledarens kommentar: Anknyter till diskussion om flyttning av deadlines (se "Examination").

- Inte kopierat men fått hjälp av andra, fått se hur de löst problemet, så snarare vägledning än kopiering.
- Däremot har man ju ofta sneglat i exempelsamlingens tal efter sätt att komma runt problem som dykt upp.
- Om man med det menar att man använder en annan persons sätt att lösa problemet, men skriver egen kod.
- Man samarbetar ofta i grupp och kommer på olika lösningar vilket kan underlätta och förbättra ens eget tänk. Självklart tar man hjälp av andra.
- När det är något litet fel i koden som jag inte hittat, då är det jättebra att kunna få hjälp av någon annans kodsnutt och jämföra och se var felet ligger.
- Beror på vad som menas med att kopiera. Det är ofta jag har frågat om hjälp från andra studenter och fått hjälp genom att få kolla på deras kod o få det förklarat. Vet inte om det är att kopiera eller effektivt lära sig?
- När det inte gått har jag tittat på andra och skrivit om det så att det fungerar i mitt program, aldrig/sällan kopierat helt rakt av.
Kursledarens kommentar: Anknyter till diskussion om kodkopiering och CSC:s hederskodex (se "Examination").

- Föreläsningarna skrapade bara på ytan av någonting, om ens det. Gick du dit fick du bara en massa namn på metoder att lösa olika problem med. Det var ytterst otydligt vad metoden gick ut på eller vad den löste för typ av problem. Allt fick studeras på egen hand ur bok, vilken i sig inte är fel men schemalägg då inga föreläsningar. De hjälpte inte ett dugg. Tentamen var inte lik ex-tentorna som finns tillgängliga. Oengagerande undervisning i allmänhet. För stor vikt på laborationer då minst hälften av alla teknologer ”lånar” laborationer från äldre årskurser. Alla kan få om man vill ha, bara de som vill väljer att göra labben själv.
Kursledarens kommentar: Anknyter till diskussionen om stort kursstoff (se "Förkunskaper"). Föreläsningarna hjälper inte om man inte läser i boken parallellt; de är till för att vägleda egna studier. Endast labb 1-3 var desamma som de på Maskintekniks förra kursomgång, så jag tror fuskfrekvensen ovan är en överskattning.

- Då jag inte har någon programmeringskunskap sedan innan (mer än introkursen på math.se) så tycker jag att man borde få en mer genomgående introdel till pogrammeringen innan allt sätter igång. Som jag känner det så var det ett för stort glapp mellan kunskapsnivån på föreläsningarna gentemot vad som krävdes på de första labbarna. Sedan tycker jag att det har varit hopplöst att köra över tre terminer, det har gjort att jag lagt ner väldigt lite tid utöver labbarna då andra kurser har varit intensivare under dessa perioder.
Kursledarens kommentar: Håller med om kursens utsträckning. Anknyter annars till diskussion om förkunskaper (se "Förkunskaper").

- Bra hemsida, lite plottrig bara...

- Jag antar att det kommer att vara bra att kunna en del matlab i den fortsatta utbildningen.
Det jag lärt mig allra mest av är nog pluggandet inför tentamen. Relativa fel och hur man kan lösa väldigt komplicerade problem med förenklande numeriska metoder. Man känner sig smart när man förstår sig på den här kursen.

- [Har varit bra] att få lära sig metoder att räkna ut saker på! Perfekt

Copyright © Sidansvarig: Hedvig Kjellström <hedvig@csc.kth.se>
Uppdaterad 2009-06-18