Umu logo Umeå universitet
Teknisk-naturvetenskaplig fakultet
Institutionen för datavetenskap




Hur man skriver en labrapport och varför man ska göra det

Av Lena Kallin

Efter orginal av Ulf Asplund



Innehållsförteckning

Inledning

Varför behövs en laborationsrapport?

Laborationsspecifikationen

Laborationsrapporten

Försättsbladet
Rapportens rubriker
Åtkomst och användarhandledning
Problemspecifikation
Algoritmbeskrivning
Systembeskrivning
Problem och reflektioner
Lösningens begränsningar
Testkörningar
Källkod

Bilaga 1 - Labspecifikationen

Bilaga 2 - Labrapport


Inledning

Laboarationerna är en del av examinationen på kursen. Laborationsuppgifterna lär er hur man går tillväga för att lösa en uppgift och man bygger upp en "verktygslåda" för olika problemtyper. Man lär sig att uttrycka sig i skrift och hur man går till väga för att presentera information på ett lättförståeligt sätt. Det är mycket viktigt att kunna den dag man är klar med examen och ska börja arbeta. Det här häftet ska förhoppningsvis ge svar på hur man ska gå tillväga när man skriver en laborationsrapport. För att det ska vara lättare för mig att beskriva så har jag hittat på en laboration och sedan visar jag hur lösningen och laborationsrapporten kan se ut. Observera att exemplet är skriven för en inledande programmeringskurs och att andra kurser kan ha andra krav på hur en rapport ska se ut.

Ni behöver inte förstå detaljerna i koden eller hur jag löst uppgiften utan det är själva uppläggningen som är det intressanta. Observera att det bara är ett exempel på hur en laborationsrapport kan se ut och ni får naturligtvis använda en egen stil på rapporten. De olika rubrikerna som jag tar upp bör dock finnas med på ett eller annat sätt.

Varför behövs en laborationsrapport?

Laborationsrapporten är en redovisning av hur man löst en given uppgift och handledaren läser den för att kunna sätta sig in i en students lösning av ett problem. Dessutom är det en övning inför arbetslivet. På ett arbete så är det mycket sällan som man är ensam om att skriva ett program utan man kan vara många som ska samarbeta. Det är då viktigt att det finns dokumentation som visar vad som är gjort, vad som ska göras och hur man på ett enkelt sätt kan förändra det som är gjort om det skulle behövas. Dessutom är det så att all forskning och vidareutveckling bygger på andra männsikors arbete (man uppfinner inte hjulet två gånger) och det är viktigt att man ser till att sitt arbete kan läsas och användas av andra personer.


Laborationsspecifikationen

Uppgiften är hämtad från den svenska uttagningen till programmeringsolympiaden 1989 men skulle lika gärna kunna vara en laboration på en inledande programmeringskurs. Vad man bör tänka på när man får en laborationsuppgift är att läsa igenom hela texten innan man börjar att lösa uppgiften. Om det finns exempel så bör man studera dessa noggrant så att man förstår precis vad som ska göras. Läs gärna texten flera gånger. Observera också att det finns ett senaste datum som laborationen ska vara inne så man måste planera sitt arbete så att man hinner klart i tid.


Laborationsrapporten

Det är viktigt att man kommer ihåg att rapporten ska bedömas av andra människor. Om rapporten innehåller flera stavfel och är slarvigt skriven så ger det ett dåligt intryck. Rapporten ska vara skriven i en ordbehandlare. Om man ska skriva matematiska formler finns en formel-editor inbyggd i de flesta ordbehandlingsprogram (tex Word).

När man skriver en laborationsrapport ska man skriva den så att den vänder sig till en som kan ungefär lika mycket programmering som en själv. Rapporten ska (utan att hänvisa till laborationsspecifikationen) specificera problemet, diskutera vad som krävs för att man ska kunna lösa problemet, beskriva hur man gått tillväga för att lösa det och sedan tala om ifall man lyckades eller inte.

Försättsbladet

Försättsbladet har två funktioner: Dels fungerar det som en slags pärm kring rapporten och gör att den ser snygg ut, dels sköter den en del av kommunikationen mellan handledare och student. Handledaren ser vilken student det är som skrivit rapporten och vilken kurs det gäller. Detta är viktigt eftersom en handledare ofta rättar laborationer på fler än en kurs samtidigt och behöver kunna sära på de olika rapporterna. Studenten å sin sida får reda på vad som eventuellt måste göras om eller förbättras genom att handledaren skriver betyget tillsammans med sina kommentarer på framsidan.

Sidhuvud och sidfot

Rapporten bör ha ett sidhuvud där kursens namn, laborationens nummer och författarens namn står skrivet. Datum är något som också bör finnas med. I sidfoten kan man ha en numrering av sidorna.

Rapportens rubriker

En laborationsrapport har vissa fasta rubriker som alltid bör vara med. En kortare beskrivning av vad som bör finnas under varje rubrik kommer nedan. Om rapporten innehåller mer än tre sidor så bör man också ha med en innehållsförteckning så att handledaren lätt kan hitta den information som han/hon söker.

Naturligtvis får man lägga till extra rubriker själv om det skulle behövas. På senare programmeringskurser har man t ex ofta rubriker som heter Portabilitet och Modularitet. På vissa kurser kan man ta bort en del rubriker. På en kurs i numerisk analys till exempel är ofta algoritmbeskrivningen överflouml;dig eftersom uppgiften gå ut på att implementera en given algoritm.

Åtkomst och användarhandledning

Under den rubriken talar man om hur handledaren kan komma åt den programmerade lösningen på problemet och hur hon eller han ska gå tillväga för att köra programmet. Vare sig man har lagrat filen på en diskett eller på sitt UNIX-konto så ska man ange sökvägen till den körklara filen.

Problemspecifikation

Här beskriver man problemet som ska lösas. Här tar man också upp de eventuella tillägg och ändringar av problemet som man gjort.

Algoritmbeskrivning

Under den här rubriken så har man algoritmbeskrivningarna som krävs för att lösa problemet. Man måste tänka på att varje steg i algoritmen ska gå att följa utan att man behöver se det färdiga programmet. Observera att numreringen av algoritmens rader egentligen är onödig men att den hjälper till för att ytterligare framhäva strukturen i algoritmen. Programmets struktur ska likna algoritmens. Man kan gärna ha med en beskrivning av hur algoritmen fungerar för något enkelt exempel.

Systembeskrivning

Under den här rubriken ska man beskriva hur sitt program är uppbyggt. Man börjar med att beskriva alla datatyper som man själv skapat och förklarar varför man har valt att skapa just dem. Sedan beskriver man hur systemet är uppbyggt genom att rita en graf som visar hur de olika modulerna och dess procedurer och funktioner hänger ihop. Word har ett litet inbyggt ritprogram som är lätt att använda, annars kan man skriva texten på datorn och sedan rita rutor och pilar för hand. Om det är ett litet program så ritar man allt i en graf annars delar man upp det i mindre grafer för varje modul. Sist följer en noggrannare beskrivning av funktionerna och procedurerna där man för var och en talar om syftet och beskriver parametrarna som den använder sig av. Om någon av rutinerna ställer speciella krav på parametrarna ska det också stå i beskrivningen.

Problem och reflektioner

Under den här rubriken beskriver man de problem som man stött på när man löste uppgiften och hur man bestämde sig för att lösa dem. Man kan även diskutera vad man tycker om själva uppgiften och tala om hur mycket tid man lagt ned på uppgiften och man kan även tala om hur det har fungerat med handledning.

Lösningens begränsningar

Här diskuterar man alla begränsningar som lösningen kan tänkas ha och beskriver (om man kan) hur man skulle kunna minska på begränsningarna.

Testkörningar

Om det är möjligt bör testkörningar redovisas på papper så att handledaren ser att programmet fungerar.

Källkod

Man ska alltid ha med källkoden, dvs det program som man skrivit, på papper. Det är viktigt att programmet är lätt att läsa. Indentering och kommentering är mycket viktig. Skriv aldrig ut koden i mindre font än 10pt eftersom det är väldigt tröttsamt att läsa finstilta koder. Om du har lagt in källkoden i ditt Word-dokument så se till att du använder en font som har fasta storlekar på tecknen tex Courier. Annars kommer tabbar och mellanslag att bli ojämna vid utskrift.


Gå till exempel på labspecifikation

Gå till exempel på labrapport