Programmering C: Svar på synpunkter på tentan

Två Fyra studenter har till studievägledningen framfört några synpunkter på tentan 30 maj. Brevet från studievägledningen finns längst ner på den här sidan.

Jag vill börja med att tacka för återkopplingen! Det är alltför sällan studenter tar sig tid att formulera kritik, vare sig positiv eller negativ, om de kurser de har gått. Det är jättebra när någon gör det! Det kan förstås hända att jag inte håller med om alla synpunkterna, men jag är ändå mycket glad att ha fått dem.

Som jag uppfattar det finns det fyra huvudpunkter bland de inskickade synpunkterna, och jag ska försöka besvara dem här:

1. Tentan var för svår

Ur breven:
Jag och många andra i klassen anser att svårighetsgraden på tentorna är för annorlunda om man jämför med hans lektioner och uppgifter som han ger ut på hans hemsida.

Jag har klarat tentan och jag kan utan tveka säga att jag är långt över grundkurs eftersom jag redan nu gör spel som ska gå till försäljning. Jag tycker detta är absurt att det är såpass svårt upplagt. Vi elever är inte nöjda och vi vill att ni ser in på detta och agerar som så som vi rättfärdigt förtjänar som elever.

Här gör jag en annan bedömning, och anser att tentan på ett rimligt sätt reflekterar kursinnehållet, och hur svårt det är och behöver vara. Man kan förstås skapa fler och svårare övningsuppgifter, men alla tentamina i kursen sedan 2004 finns på kursens hemsida på webben, många med lösningsförslag, och de kan användas som övning.

Tentan 30 maj var ordinarie tenta för vårterminens upplaga av distanskursen Programmering C. Eftersom innehållet i den kursen är samma som i campuskursen Programmering grundkurs, fungerade tentan också som en extra omtenta för Programmering grundkurs. Tyvärr var resultatet av denna extra omtenta ganska dåligt. Av tio studenter som skrev tentan blev endast en godkänd.

Å andra sidan var det 14 studenter som skrev samma tenta efter distanskursen Programmering C, och alla utom en blev godkända. Av de 13 som var godkända hade ingen betyget 3, 5 studenter hade betyget 4, och 8 hade betyget 5. De goda resultaten från distanskursen tycker jag ger skäl att tro att tentan inte var ovanligt svår, oklar eller på annat sätt konstig.

2. Tentan är på papper

Ur breven:

Tentorna skrivs på papper och i praktik så kommer en programmerare aldrig skriva sina program på papper eftersom det behövs en datorn för att testa sina program. Nu när vi gör tentorna så förlorar vi alla elever det som underlättar vanligtvis. [...]

Jag och många andra som gjorde den senaste tentan i programmering har en fråga. Vi tycker läraren överdrev med svårighets graden (om man jämför med tidigare tentor) speciellt när man skriver tentorna på papper (när man i arbetslivet använder sig av datorer). [...]

Den här synpunkten är mer ett komplement till den ovanstående punkten om svårighet, snarare än att vara en puinkt i sig, men jag vill ändå kommentera den.

Frågan om dator- och papperstentor i programmering är en pågående diskussion, och visst går det att ha datortentor. Men det finns fördelar och nackdelar med både dator- och papperstentor, och jag tror faktiskt att fördelarna överväger för papperstentor just i grundkurser i programmering.

Skillnaden är att man verkligen måste kunna sakerna för att skriva program på papper, och man måste tänka och torrsimma i stället för att prova sig fram. Det är ovanligt viktigt i ett språk som C, där ett program som går igenom kompilatorn utan varningar och som fungerar när man provkör det ändå kan ha allvarliga fel, så att det kraschar eller ger fel svar en annan gång man kör det.

Ett annat skäl till att vi arbetar med den här typen av torrsim är att man, inte minst inför kommande programmeringskurser, behöver lära sig att använda kod inte bara som styrkommandon till en dator, utan också i kommunikationen med andra programmerare. Då menar jag inte det vanliga om att koden ska vara läsbar och begriplig för att andra ska kunna jobba vidare med den, utan jag menar att man använder programkod för att förklara och diskutera en algoritm eller en mekanism. Då behöver man en viss vana att arbeta med programkod som text, som man skriver och läser för hand.

Om man till exempel ska diskutera hur loopar inuti varandra påverkar tidsåtgången för ett program, med exempel på olika lösningar, blir det svårt att genomföra den diskussionen om man inte är säker på hur man skriver en loop. Den som ska skriva koden kanske kan gå till datorn och prova sig fram tills det blir rätt, men vad ska åhörarna göra? Därför behöver man kunna en del saker i programmeringsspråket utantill.

Men kanske måste vi ändå så småningom ändra till datortenta även i denna grundkurs, inte för att det är bättre, utan för att studenterna för varje år blir mindre vana vid papper och penna. Själva skrivandet med penna blir ett hinder.

Tillägg 25 juni: För att ändå underlätta lite kommer jag på nästa tenta att lägga till en lista med prototyper för några användbara biblioteksfunktioner. De första sidorna på tentan som går 23 augusti finns redan nu på webben.

3. Tentan var förvirrande

Ur breven:

Ett annat bra exempel på saker som förvirrar oss som elever när vi gör Thomas tentor är uppgift 6 och 7. I uppgift 6 så vill läraren att vi ska skriva ut en struct av typen intervall. Inget konstigt med detta. Men sedan i uppgift 7 så skriver han "Skriv en funktion som heter inside_interval, och som tar två argument: ett flyttal och ett intervall av typen Interval "
Detta är inte okej. Som elever ska vi inte behöva gissa över vad det är han försöker mena med typen interval.

Exempel på hans felformulering från hans senaste tenta:
Uppgift 6 (1p)
Vi ska jobba mer med intervall, som i uppgifterna ovan. Skapa därför posttypen Intervall, som innehåller intervallgränserna. De är flyttal.
Där ska man skapa en struct vid namnet Intervall. Inget konstigt med den uppgiften. Men sedan kommer nästa uppgift
Uppgift 7 (2p)
"Skriv en funktion som heter inside_interval, och som tar två argument: ett flyttal och ett intervall av typen Interval"
av typen interval? Menar han då intervall från uppgiften innan eller vad är det han menar? Det är inte rättfärdigt för oss som elever att behöva chansa på uppgifter för att sedan se efter tentan om vi gissar rätt eller fel.

Ja, där slarvade jag, och råkade på ett ställe använda den svenska stavningen (Intervall) och på det andra den engelska stavningen (Interval). Det är naturligtvis tråkigt, och jag ber om ursäkt för det.

Man kan kanske tycka att det inte borde vara så svårt att tolka denna ganska triviala felskrivning, och en del skulle kanske till och med misstänka att det är en efterhandskonstruktion, men jag har förståelse för att man i en stressad och ovan situation, som när man sitter och skriver program på en tenta, kanske inte vågar chansa på att det inte är något svårt eller lurt. Därför har läraren jour under tentatiden, och kan svara på frågor. Om man känner sig osäker, kan man alltså fråga läraren. I det här fallet besökte jag tentasalen, men ingen hade några frågor. Jag var också tillgänglig via telefon under hela tentatiden, men det var ingen som ringde.

Det är naturligtvis viktigt att tentafrågor är klara och begripliga, men jag kan inte se att detta enda exempel på felskrivning skulle visa att den här tentan var särskilt svårförståelig eller förvirrande.

4. Tentan handlade om material utanför kursen

Ur breven:

Om vi kollar på den senaste tentan och tar ut uppgift 13. Så ser vi redan då att läraren vill att vi ska använda oss av ett programbibliotek som vi aldrig har använt i tidigare uppgifter och ingen elev kan minnas en enda lektion då han ens har nämnt användningen av detta bibliotek.

Sedan ett annat fel som gjorde oss riktigt förbannad över svårighetsgraden var att i uppgift 13(5p) så enligt facit så vill han att vi ska inkludera ett programmerings bibliotek som vi aldrig har arbetat med innan. Halva tentans poäng gäller på det 3 sista uppgifterna och den allra sista uppgiften har ett bibliotek som han inte tagit upp på lektionerna och vad jag och många andra skolkamrater inte hittat en enda uppgift av det han har gett oss som visar denna biblioteks typ.

I uppgift 13, som är den sista uppgiften på tentan, behövde man som en del av lösningen skriva programkod som skiljer på gemena och versala bokstäver. Makrona isupper och islower, som finns i #include-filen ctype.h, är ett bra sätt att göra det på.

Användning av ctype.h nämns endast mycket kort i kursen (se sidan 38 i kompendiet, och programexemplen från föreläsning 7), men som det står i lösningsförslagen så är de just förslag på lösningar, och det kan finnas andra lösningar som också är korrekta. Det finns andra sätt att lösa uppgiften om man inte kommer ihåg de här makrona, och flera studenter hade också använt andra sätt.

Synpunkterna

Här är brevet från studievägledningen, med de två breven från studenter vidarebefordrade:

From: Studievägledning NT - Örebro universitet <studievagledning.NT@oru.se>
Subject: Klagomål på Programmering grundkurs
To: Amy Loutfi <amy.loutfi@oru.se>, thomas.padron-mccarthy@oru.se
Date: Fri, 08 Jun 2012 14:06:43 +0200

Hej Thomas och Amy,

Jag har fått mail från två studenter som har klagomål på Programmering
grundkurs. Kan ni bemöta kritiken antingen genom att maila till mig som jag kan
vidarebefordra eller att skicka ut något till hela gruppen som läst kursen? Jag
vill inte ge er namnen på de studenter som klagat eftersom jag inte kollat med
dem om det är ok.

Hälsningar Madelene

Se studenternas mail nedan.




Jag skriver detta meddelande om hopp om förändring på kursen "Programmering
Grundkurs" vi har i simulering och dataspelsteknik. Vi som elever är inte nöjda
över hur Thomas Padron Mcarthy har lagt upp sina tentor. Speciellt inte hur
 den senaste tentan var upplagd.
Jag och många andra i klassen anser att svårighetsgraden på tentorna är för
annorlunda om man jämför med hans lektioner och uppgifter som han ger ut på
hans hemsida. 

Tentorna skrivs på papper och i praktik så kommer en programmerare aldrig
skriva sina program på papper eftersom det behövs en datorn för att testa sina
program. Nu när vi gör tentorna så förlorar vi alla elever det som underlättar
vanligtvis. Inte nog med det så är uppgifterna på tentan en direkt överkurs när
man jämför med det läraren har lärt ut. När man gör hans tentor så känns det
mer som en lottning för att sedan se om man har vunnit sitt pris på G eller om
man får en nitlott på U

Exempel på felaktigheter:
Om vi kollar på den senaste tentan och tar ut uppgift 13. Så ser vi redan då
att läraren vill att vi ska använda oss av ett programbibliotek som vi aldrig
har använt i tidigare uppgifter och ingen elev kan minnas en enda lektion då
han ens har nämnt användningen av detta bibliotek.
Ett annat bra exempel på saker som förvirrar oss som elever när vi gör Thomas
tentor är  uppgift 6 och 7. I uppgift 6 så vill läraren att vi ska skriva ut en
struct av typen intervall. Inget konstigt med detta. Men sedan i uppgift 7 så
skriver han "Skriv en funktion som heter inside_interval, och som tar två
argument: ett flyttal och ett intervall av typen Interval "

Detta är inte okej. Som elever ska vi inte behöva gissa över vad det är han
försöker mena med typen interval. 

Allt är helt enkelt oklart i hela kursen och vi är speciellt inte nöjda över.
Jag har klarat tentan och jag kan utan tveka säga att jag är långt över
grundkurs eftersom jag redan nu gör spel som ska gå till försäljning. Jag
tycker detta är absurt att det är såpass svårt upplagt. Vi elever är inte nöjda
och vi vill att ni ser in på detta och agerar som så som vi rättfärdigt
förtjänar som elever.


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


 Jag och många andra som gjorde den senaste tentan i programmering har en
fråga. Vi tycker läraren överdrev med svårighets graden (om man jämför med
tidigare tentor) speciellt när man skriver tentorna på papper (när man i
arbetslivet använder sig av datorer). Själv tycker jag att jag kan grunderna
till programmering men det är mer av en lottning när man kommer till tentan för
att se om det kommer uppgifter man inte gör slarvfel på osv.

Men en fråga som många undrar som just nu har U i klassen är om man får
fortsätta med Programmet om man skulle misslyckas med uppsamlingstentan i
agusti? Vi är alla inte nöjda över hur han har lagd upp den senaste tentan.
Tentorna ska reflektera över hans lektioner och uppgifter som han har gett ut
men många uppgifter på tentan vad dåligt formulerat (också fel formulerat) som
skapar förvirring. Även många som klarade tentan tycker precis som vi att det
är konstigt upplagt. Om vi nu skulle misslyckas som jag tror någon(eller några)
kommer att göra. Får vi fortsätta med programmet?
 
Exempel på hans felformulering från hans senaste tenta:
Uppgift 6 (1p)
Vi ska jobba mer med intervall, som i uppgifterna ovan. Skapa därför posttypen 
Intervall, som innehåller intervallgränserna. De är flyttal.
Där ska man skapa en struct vid namnet Intervall. Inget konstigt med den
uppgiften. Men sedan kommer nästa uppgift

Uppgift 7 (2p)
"Skriv en funktion som heter inside_interval, och som tar två argument: ett
flyttal och ett intervall av typen Interval" 

av typen interval? Menar han då intervall från uppgiften innan eller vad är det
han menar? Det är inte rättfärdigt för oss som elever att behöva chansa på
uppgifter för att sedan se efter tentan om vi gissar rätt eller fel.
--
Sedan ett annat fel som gjorde oss riktigt förbannad över svårighetsgraden var
att i uppgift 13(5p) så enligt facit så
vill han att vi ska inkludera ett programmerings bibliotek som vi aldrig har
arbetat med innan. Halva tentans poäng gäller på det 3 sista uppgifterna och
den allra sista uppgiften har ett bibliotek som han inte tagit upp på
lektionerna och vad jag och många andra skolkamrater inte hittat en enda
uppgift av det han har gett oss som visar denna biblioteks typ. 

Allt är helt enkelt oklart i den här kursen och ingen av oss är nöjda över
skillnaden på hans lektioner/uppgifter och självaste tentan


--
Studievägledning
Institutionen för naturvetenskap och teknik
Örebro universitet
Tel. +46 19 30 30 00


Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se), 25 juni 2012