TEK/NAT Kursrapport Kurs Kurskod Poäng År Start v. Datastrukturer och algoritmer (Python) 5DV128 7.5 2012 0 Institution Institutionen för datavetenskap Antal registrerade (män/kvinnor) 65 (57/8) Antal aktiva studenter (deltagit i minst en examinerande del) 62 Genomströmning (i %) och betygsutfall efter första tillfälle för examination (för varje betyg som satts på kursen ange antal som uppnått detta på formen??? Genomströmning: 56% Betyg: U(29) 3(6) (1) 5(16) Hur mycket schemalagd lärar-/assistent-ledd tid har studenten tillgång till på kursen? 15*2h föreläsning 5 gruppövningstillfällen a 2h + ca 155h handledning (varav ca hälften använts till rättning av obligatoriska uppgifter) Hur är undervisningen upplagd? Föreläsningar, gruppövningar, handledning under arbete med obligatoriska uppgifter. För vart och ett av lärmålen (FSR:en) i kursplanen, beskriv kortfattat hur det examineras. förklara grundläggande begrepp relaterade till datastrukturer och algoritmer beskriva vanliga abstrakta datatyper och algoritmer förklara jämlöpande exekvering med delat minne som koncept och med det redogöra för innebörden av synkronisering och trådsäkra datatyper Tentamen formulera lösningar till enkla problem i form av algoritmer inklusive att identifiera och använda lämpliga datatyper implementera lösningen i form av ett program i programspråket Python tillämpa dynamisk minnesallokering, använda sig av grundläggande problemlösningsstrategier, experimentellt och teoretiskt undersöka en mjukvaras tids- och minneskomplexitet, samt redogöra för och dokumentera utfallet enligt givna riktlinjer visa att en komponent i ett program fungerar korrekt med hjälp av testning använda sig av en debugger för att hitta fel i program. visa förståelse för hur struktur-, tids- och minnesaspekter påverkar kvalitet hos program Beskriv hur betygssättningen på kursen fungerar. (Vilka betyg ges på kursen och hur sker bedömningen, dvs vilka delar betygssätts och hur vägs de samman? Finns det skrivtliga betygskriterier och/eller lärmål (FSR) för de olika betygen?)
Examinationen sker dels genom skriftlig tentamen (Moment 1, teori) dels genom ett antal obligatoriska uppgifter (Moment 2, problemlösning). Skriftlig tentamen bedöms med något av betygen Med beröm godkänd (5), Icke utan beröm godkänd (), Godkänd (3), Underkänd (U). På moment 2 ges endast betygen Underkänd (U) eller Godkänd (G). På hela kursen ges något av betygen Med beröm godkänd (5), Icke utan beröm godkänd (), Godkänd (3), Underkänd (U). För att bli godkänd på hela kursen krävs att samtliga prov och obligatoriska moment är godkända. På varje obligatorisk uppgift står vad som krävs av uppgiften för att den ska bli godkänd. Tentamen konstrueras så om studenten har 50% av totalpoängen och godkänt på samtliga obligatoriska uppgifter så uppfyller studenten FSR och får godkänt på kursen. Gräns för :a på tentamen är 65% och gräns för 5:a är 80%. I normalfallet bestämmer tentan också kursbetyget. Om tentaresultatet ligger nära en betygsgräns (/5) kan labbarna konsulteras för att bedöma om totalbetyget på kursen ska höjas. na sänker aldrig kursbetyget. Samläses denna kurs med andra kurser?? Ja Om ja, hur många? 1 Hur stor andel av kursen samläses? 20% Samläser flera program denna kurs? Ja Om ja, hur många? 3 Arbetar studenterna i projektform på kursen? Nej Om ja, uppskattad omfattning i poäng på projektdelen: Antal projekt som varje student deltog i: Antal studenter i projektgrupp: Förväntades studenterna använda en projektmetodik för dokumentation och styrning (tex LIPS)? Hur skedde indelning av studenter i projektgrupper? Har studenterna uppmanats föra projektdagbok? Kursens samverkan med forskning Om ja, Har dagboken utgjort grund för examination? Ingen samverkan med forskningsverksamhet förekommer på kursen Annan samverkansform, nämligen: Kursens samverkan med näringsliv eller offentlig verksamhet Annan samverkansform, nämligen Genomförda förändringar till detta kurstillfälle Kursen är ny. Till skillnad från föregående liknande kurs så är kursen nu uppdelad beroende på vilket språk man läser kursen i. Fokus har flyttats från att implementera datatyper till att använda dem. Mer handledning har tilldelats kursen (kursen visade sig felaktigt fått en lägre tilldelning av resurser 2011) Förändringsförslag från föregående kursrapport Obs ej exakt denna kurs, men dess föregångare. Dela upp de som läser kursen, baserat på programspråk, i olika kurser. De olika kurserna/kurstillfällena kan då bättre anpassas efter de läsandes förkunskaper och behov. Då förkunskaperna inte räckt till vad gäller programmeringsfärdigheter så bör delarna som rör detta på kursen omarbetas (inklusive målen i kursplanen). Man bör undersöka om man kan hitta någon annan kurslitteratur. Mängden handledningsresurser som behövs för en kurs av denna typ bör utredas. Lärare
Kursansvarig Lena Kallin Westin Antal övrig personal som ej föreläser 2 Antal övriga föreläsare 1 Hur stor del av den schemalagda tiden på kursen undervisas av forskande lärare (dvs lärare med mer än 25% forskning i sin tjänst)? 0 Hur stor del av den schemalagda tiden på kursen undervisas av lärare verksamma i näringsliv/offentlig verksamhet (dvs lärare med mer än 25% av sin tjänst förlagd till näringsliv/offentlig verksamhet)? 0 Kursvärd. Totalt antal svarande 18 Sammanställningsdatum 2012-0-2 TYCBG/TYCBT 2 (av 2) 18.5.5 TYCIE 13 (av 8) 20.8.1 SGKOG+KV-master 2 (av 3) 3.5
32.5 FRIST 1 (av 11) 8 TYCFT 0 (av 1) När genomfördes kursvärderingen? Efter genomfört första examinationstillfälle För varje lärmål på kursen ange hur stor del av de studerande som uppger att det har behandlats på kursen - ange svaret i procent på formen har behandlats/har inte behandlats/vet ej förklara grundläggande begrepp relaterade till datastrukturer och algoritmer, 100/0/0 beskriva vanliga abstrakta datatyper och algoritmer, 9./0/5.6 förklara jämlöpande exekvering med delat minne som koncept och med det redogöra för innebörden av synkronisering och trådsäkra datatyper../33.3/22.2 formulera lösningar till enkla problem i form av algoritmer inklusive att identifiera och använda lämpliga datatyper, 9./5.6/0 implementera lösningen i form av ett program i programspråket Python, 9./5.6/0 tillämpa dynamisk minnesallokering, 27.8/./27.8 använda sig av grundläggande problemlösningsstrategier, 77.8/16.7/5.6 experimentellt och teoretiskt undersöka en mjukvaras tids- och minneskomplexitet, samt redogöra för och dokumentera utfallet enligt givna riktlinjer, 100/0/0 visa att en komponent i ett program fungerar korrekt med hjälp av testning, 100/0/0 använda sig av en debugger för att hitta fel i program. 9./5.6/0
visa förståelse för hur struktur-, tids- och minnesaspekter påverkar kvalitet hos program. 83.3/11.1/5.6 Sammanf. Sammanfattning av åsikterna i kursvärderingen - positivt och negativt kring föreläsningar, seminarier, grupparbeten, laborationer, examination etc
Då svarsfrekvensen bara var 28% (18 av 65 studenter) bör nedanstående kommentarer inte nödvändigtvis ses som representativt för hela studiegruppen. Jag har valt att återge kommentarerna i sin helhet förutom att personnamn strukits. Om kursens kvalitet (3 kommentarer): * Känslan av att många begrepp är skrivna av Umu och tillämpas endast här. Blir f.ö lättare att ta allt på engelska (begrepp) då programmering främst sker på det språket. * Känna lika bra att lära sig skriva sina egna datatyper när man liks är i farten. Att lära sig formalisera egna algoritmer istället för att få färdiga att implementera vore väldigt lärorikt, men det ställer också väldigt höga krav på eleverna, något att överväga. * Teorin borde ha förankrats i mer praktiskt arbete. Lärarna gav oss inga övningsuppgifter. Inför inlämningsuppgifterna fick man färdigställda datatyper som man inte fick förändra och som man inte skulle bry sig om hur de var implementerade. Det finns förvisso en poäng att lära sig att hantera en gränsyta utan att fördjupa sig i dess implementation, men samtidigt blir det alltför ytligt att helt koppla bort hur ett program, en datatyp eller en algoritm är implementerad. Det är inte meningsfullt att utantill och i detalj (vilket [en av lärarna] kräver) lära sig [en av författarna]s gränsytor till alla datatyper, när man ser att olika programmeringsspråk och programbibliotek implementerar detta på varierande sätt i praktiken. Det skulle ha varit mycket mer lärorikt att själv få fundera ut och implementera sådana gränsytor, även om många studenter skulle ha svårt med detta. Kurslitteraturen borde bytas ut. Datatyper och algoritmer av [en av författarna] är i det närmaste obegriplig för någon som inte har läst så mycket programmering tidigare. Boken kan vara givande för den som redan kan vad den handlar om. För övriga är det nog mest en massa termer som inte bottnar i någon som helst praktisk erfarenhet. Boken omfattar visserligen flertalet väsentliga begrepp och frågeställningar inom datavetenskapen. Python 2.7 användes i stället för Python 3.2. Även om Programmering i Python av [författare] bygger på Python 2.7 är steget till 3.2 inte långt. Python 2.7 är trots allt på utgående. Lärarna borde kunna lära sig Python som är modernare än fem år gammal. Det lyser igenom alltför mycket att de inte är uppdaterade på vad som hänt de senaste åren. Universitetet bör väl ligga i framkant av utvecklingen och inte vara så tydligt eftersläpande som man är i detta fall? Det var för få handledare, speciellt på gruppövningarna där det bara var en. Skrivtiden på tentamen var för kort. Om bemötande (1 kommentar): * Handledare har svårt att kommunicera med studenterna Positivt: * Implementationer av algoritmer, genomgång av hur minnesallokering gäller för olika datatyper, hur och varför vissa algoritmer och datatyper är snabba resp. långsamma för vissa ändamål. * Hög kvalitet på föreläsningar. Duktiga lärare och handledare. Engagerade och hjälpsamma föreläsare och handledare. Det är kul och känns tryggt att vara student på CS. * Allt, mer eller mindre. Jag är väldigt nöjd med kursen. * Jag anser att kursen har varit mycket bra. Jag hoppade av kursen förra året och då fick kursen kritik. Bland annat för för stora grupper och för lite handledning. Ni har tagit till er av förra kursutvärderingen och förbättrat kursen. Bra jobbat. * Bra nivå på labbar. Berörde bra kursens innehåll. Bra handledning och bra föreläsningar generellt * [En av föreläsarna] duktig föreläsare, [En av föreläsarna] helt ok. Bra innehåll och struktur. * Gruppövningarna och [En av föreläsarna] som föreläsare! * med konkreta program. Typ misikbiblioteket och gpshelper Vad kan förbättras?: * Jag anser att glappet mellan grundkursen i Python och denna är för stort. Det har därför varit en stor utmaning att lösa labbarna. * Bra kurs. Mer labb tid * Motiverade handledare skulle vara bra. [En av handledarna] vågar knappt prata. * Omtentamen borde ligga vid påsk och inte långt in i Juni. Mer handledningstid hade också varit bra. * att eleverna själva får göra de datatyper som skall användas för uppgifterna, att eleverna får skapa sina egna algoritmer för problemlösning istället för att få pseudokoden. Dock inte helt, men övning på det. * Lab. Kändes riktigt ovärt att räkna antalet operationer på mer avancerad kod * Skulle vilja ha mer programmering då mina förkunskaper inte var tillräckliga på kursen. Kanske en enklare inledningslabb. Fast egentligen så är väl problemet den inledande programmeringskursen som inte ger tillräckliga kunskaper för denna kurs. * I Graph.py importeras DirectedList två gånger utan att användas. Importeringen bör tas bort. I Array.py behövs två metoder getitem och setitem så att klammernotation kan användas. Saknas: * Hade varit roligt att titta på skillnader i operativsystem och tvingas använda dessa. Tex i komplexitetslabben kan man ju köra algoritmerna i olika op. * Jag hade gärna sett att vi finge designa egna algoritmer, istället för att bara implementera algoritmer som står i pseudokod i slidesen. Att implementera egna datatyper vore också lärorikt. Övrigt: * Handledartiderna har i allt för ofta legat de dagar då vi har haft schemalaggt i den andra kursen vi läst. * Gick kursen ifjol och tyckte den sköttes dåligt men iår har jag nästan inget att klaga på. Bättre labbar iår, det var bra med 5stycken som "stegrade" i svårighetsgrad. Känns som jag lärt mig otroligt mycket under denna kurs, ifjol gick jag in i väggen direkt på första labben och iår tyckte jag tvärtom att labbarna var intressanta. Bra med uppdelade klasser så C är var för sig och Python för sig. Stort plus till [en av föreläsarna] som jag tyckte var mycket bra lärare och ett stort plus för [en av handledarna] som hjälpte en under kursens gång (även då han inte hade inbokad handledning). * Kursen ligger lite för högt i svårighetsgrad. Jag känner att jag hade fått ut mer om jag hade kunnat lite mer praktisk programmering innan. Överlag är jag ändå väldigt nöjd med kursen. Intressant ämne och bra lärare. Under kursutvärderingsmötet med studentrepresentanterna så diskuterades möjligheten att låta lärdomarna från laborationerna påverka kursbetyget i större omfattning än vid årets kurs. Under detta samtal dök även diskussionen om olika bedömning av obligatoriska uppgifter och hur vi som lärare jobbar med dessa olikheter upp. Förslag till nästa kurstillfälle - ange vem som ansvarar för förändringen
I allmänhet har kursen fungerat bra, men fortfarande finns en del småjusteringar som hade kunnat göra kursen bättre (se lista nedan på några förslag). * Se om det går att minska arbetsbelastningen för studenterna utan att plocka bort material från kursen. Förslag på sätt att göra detta kan tex vara att finjustera datatyperna som studenterna får använda i laborationerna och deras beskrivning. * Se om det går att på laborationerna innan den sista få lite mer variation i vilka datatyper som behandlas. * Kontrollera även nästa år hur parallella kursers scheman ser ut för att i största möjliga mån undvika att studenter tex har handledning samtidigt som undervisning på en annan kurs. * Försök få in materialet om minneshantering och valgrind tidigare i kursen. Poängtera delarna med dynamisk minnehantering tydligare så att studenterna i högre grad upplever att kursen behandlat det. * Spara sammanfattande kommentaren kring rättningsmallen mellan åren för att via detta kunna i framtiden kunna åstadkomma en jämnare bedömning av inlämningsuppgifter. * Debugglabben - plocka bort spårutskrifterna och koncentrera uppgiften på debuggern och andra felsökningsverktyg. * Förfina laborationsspecifikationerna exempelvis syfte och krav. * lab1 tog mer tid att rätta och 5an mindre så omfördela rättningsresurser mellan dessa. * Då resultatet var rätt dåligt gällande fsr:et om trådar så bearbeta det materialet och poängtera för studenterna att detta är ett fsr som kommer examineras. Bör kursplanen ändras till nästa kurstillfälle - vem ansvarar i så fall för att förändringen görs? Nej Granskn. Granskare lärare (CAS-identitet) leka0001 [Kallin Westin, Lena] Granskare student (CAS-identitet) mobr0009 [Brandt, Monika] Granskare studieadministratör (CAS-identitet) leka0001 [Kallin Westin, Lena]