PKD 11/12: Projekt
För att få praktisk erfarenhet av lite större programmeringsuppgifter kommer ni under februari-mars att utföra ett programmeringsprojekt.
Projektet skall utföras i grupper om 5 studenter. Ni får själva bilda grupper (helt eller delvis) om ni vill genom att fylla i namnen på gruppmedlemmarna i en ledig grupp på Studentportalen (välj "Projektgrupper"). Grupperna skall i så fall vara bildade senast 14/2 kl. 18:00. De som inte är medlemmar i grupper då kommer vi att placera ut i grupper. Samma sak ifall några grupper inte är fullständiga. Varje grupp kommer att tilldelas en handledare.
Ni får själva komma med förslag om vad projekten skall handla om. Ni skall skicka förslaget med e-post till er handledare. Handledaren kommer att fundera över förslaget och komma med synpunkter. När ni är överens så kan ni börja arbeta med projektet! Detta skall ni göra så fort som möjligt efter att ni bildat gruppen så att ni kan ha kommit igång med arbetet vid första handledningstillfället den 20/2 (läs mer om handledning nedan).
Lite inspiration om vad projekten skall handla om kan ni få av att titta på några av de större inlämningsuppgifter som vi haft på kursen tidigare år.
Symbolisk derivering
Webbchat
Bildbehandling
Kryptokorsord
Dessa uppgifter var avsedda för en ensam student. Den uppgift ni skall lösa skall alltså vara större, men inte väldigt mycket större eftersom ni kommer att ha kortare tid på er att arbeta och att det alltid tar en del tid bara för att få grupparbeten att fungera.
Det är ok att ta några av exemplen ovan som projekt, men då måste ni lägga till något till uppgiften så att den blir större.
Vad projektet skall leverera
Resultatet av projektet skall bli
- Ett fungerande ML-program som utför den uppgift som ni fått godkänd av handledaren. Programmet skall följa kursens kodningsstandard. Programmering med sidoeffekter får inte ske annat än om det är nödvändigt t.ex. i samband med in/utmatning.
- Automatiserade testfall för programkoden utformade enligt de riktlinjer som vi lämnat på kursen.
- Dokumentation av programmet. Se nedan för mera information om hur dokumentationen skall vara utformad.
- En projektdagbok. I projektdagboken skall ni notera varje tillfälle som någon projektdeltagare arbetat med projektet: när, hur länge och med vad. Ifall ni arbetar mycket var och en för sig så kan det vara en idé att ni ha separata dagböcker för varje person som ni slår ihop innan ni lämnar in den.
Dokumentationen
Ni skall skriva dokumentation till ert program. Förutom de vanliga specifikationerna till varje funktion som skall finnas i programkoden, så innebär det att ni skall skriva ett separat dokument som beskriver hur ert program fungerar och hur man skall använda det.
Dokumentationen skall innehålla:
- Titel, namn på projektdeltagare, uppgift om att detta är projektet på denna kurs detta år, innehållsförteckning, inledning med sammanfattning av vad programmet gör.
- En "användarbeskrivning": en anvisning för hur man praktiskt använder ert program, inklusive körexempel.
- En "programdokumentation": en beskrivning av hur ert program egentligen fungerar:
- Beskrivning av datastrukturer. För abstrakta datatyper skall ni dessutom ange hur gränssnittet ser ut.
- Beskrivning av algoritmerna som ert program använder.
- Beskrivning av de olika delfunktionerna hos programmet. Beskriv algoritmer och ge funktionsspecifikationer för de viktigaste delfunktionerna. Tala om hur programflödet ser ut (alltså hur funktionerna anropar varandra).
- Beskrivning av kända brister hos programmet. Det kan vara sådant som fungerar men ni själva tycker är mindre lyckat gjort eller saker som ni trots tappra försök inte lyckats få till ordentligt.
Det skall räcka att läsa dokumentationen för att förstå ert program!
Observera att praktiskt taget hela dokumentationen kan skrivas innan ni börjar koda. Att göra det kan vara en bra idé eftersom det då hjälper er att styra arbetet.
Dokumentationen är lika viktig som själva programmet. Är dokumentationen dålig så kommer det att dra ned betyget även om ert program fungerar bra. Börja arbeta med dokumentationen i god tid! Skriv t.ex. rubriker eller gör t.ex. en innehållsförteckning som visar hur ni tänker lägga upp dokumentationen och visa den för er handledare.
Redovisning
Ni skall lämna in projektresultatet skriftligt senast den 5:e mars och redovisa projektet muntligt den 6:e eller 7:e mars. Redovisningsschema finns här.
Programmet, testfallen, dokumentationen och projektdagboken skall lämnas in på filarean "Projektinlämning" i Studentportalen. Endast en av gruppmedlemmarna skall lämna in. Dokumentationen och projektdagboken skall lämnas in som pdf-filer. Inte som en Microsoft Word .doc-fil, TeX-källkod eller några andra ordbehandlardokument.
I den muntliga redovisningen skall ingå
- En beskrivning av vad programmet skall göra och en demonstration av programmet.
- En översikt av hur programmet fungerar.
- Beskrivning av någon detalj som ni tycker är speciellt intressant.
- En beskrivning av något som ni hade speciella svårigheter med.
Efter redovisningen kommer ni att få frågor om projektet.
Varje redovisningstillfälle är 30 minuter långt. Den muntliga presentationen skall vara max 25 minuter lång -- men inte väsentligt kortare, 20 minuter är idealiskt. Därefter finns tid för frågorna. Varje gruppmedlem skall delta i redovisningen och redovisa c:a 4-5 minuter var. Det är en bra idé att öva på redovisningen innan så att man vet att det inte tar för lång (eller kort) tid. Vi har många grupper så om redovisningen tar för lång tid så kommer vi att avbryta er.
Hur ni skall arbeta i projektet
Ni får dela upp arbetet mellan er som ni vill, men det är viktigt att alla gruppmedlemmarna får prova på olika sorters arbetsuppgifter (programmering, testfallskonstruktion, dokumentation...) och att alla är med i arbetet och förstår vad som görs. I samband med redovisningen kommer vi att ställa frågor till varje gruppmedlem som kan handla om vilken del som helst i projektet.
Betygsättning
Betygen sätts i förhållande till kraven ovan på vad projektet skall leverera och hur det skall redovisas.
Betygskriterier:
Ett projekt som på ett speciellt bra sätt uppfyller alla kraven ovan får en 5:a.
Ett projekt som uppfyller alla kraven ovan får en 4:a.
Ett projekt som inte uppfyller alla kraven ovan, men som har åstadkommit något konkret som delvis uppfyller varje krav och som tydligt visar att projektdeltagarna förstår vad de håller på med får en 3:a.
Ett underkänt projekt får göras om nästa år. I undantagsfall kan vi tillåta att ett projekt kompletterar för godkänt.
Vid betygsättningen tar vi inom rimliga gränser hänsyn till om projektet är speciellt svårt eller enkelt.
Varje deltagares betyg bestäms inte bara av hur väl projektet genomförts utan även hur vi bedömer att deltagaren bidragit till projektet. Det gör vi med hjälp av projektdagboken, den kunskap om projektet som deltagaren visar vid handledningstillfällena och i samband med presentationen. Syftet är att "fripassagerare" inte skall slippa igenom och att personer som dragit ett tyngre lass än andra skall kompenseras för det.
Handledning
Ni är alltid välkomna att tala med er handledare (i första hand) eller Lars-Henrik (i andra hand) för att få hjälp.
Det ordnas också tre stycken schemalagda handledningstillfällen den 20/2, 27/2 och 2/3. Handledningsschema finns här. Vid handledningstillfällena skall ni ge en kort beskrivning av hur det går i projektet och sedan diskuterar ni med handledaren hur ni skall fortsätta. Det är i princip obligatoriskt för alla deltagare i gruppen att komma till handledningstillfällena. Om du blir borta från handledningen så riskerar det att påverka betygsättningen, eller så kan du få extra frågor om projektet innan ditt betyg sätts. Senast klockan 18:00 dagen före varje handledningstillfälle skall ni lämna in projektdagboken på filarea. Där kan ni också lägga ev. kod och dokumentation som ni vill diskutera vid handledningstillfället så att handledaren har en chans att titta på den innan.