P-Uppgiften

Kursens tredje moment, LAB3, är en större, individuell programmeringsuppgift i Python; en "P-uppgift". P-delen redovisas i fyra steg under kursens andra halva.  

Uppgifterna är tänkta att vara ganska svåra och tidskrävande. Man kan räkna med ca 80 timmar för en medelsvår uppgift, men tidsåtgången är framförallt beroende av dina kunskaper när du börjar med P-uppgiften.

Behöver ni repetera något moment, så kolla gärna på videorna i länksamlingen (länk här), där finns speciellt en video som beskriver hur man kan tänka när man skall skriva ett lite större program.

Hela processen består av följande steg:

  • Bestäm vilken betygsnivå du siktar på
  • Välj en P-uppgift 
  • Skriv specifikation: Innan programmet skrivs ska en specifikation redovisas. Syftet med specifikationen är att du ska tänka igenom problemet innan du försöker lösa det. Specifikationen lämnas in här och skall godkännas av en assistentDetaljer finns här: Specifikationen
  • Skriv själva programmet enligt specifikationen.
  • Studentgranskning av programmet: Innan det färdiga programmet kan redovisas för en handledare ska det granskas av en annan kursdeltagare som tittar på koden och provkör programmet. Det är obligatoriskt för varje kursdeltagare att granska ett program. Detaljer finns här.
  • Slutredovisning för assistent: De flesta kommer att redovisa sina P-uppgifter vid de avsedda tiderna i slutet på april. Uppgiftslydelsen, specifikationen, besiktningsprotokollet och granskaren ska medföras till slutredovisningen, liksom en färsk programutskrift, källkod och det körbara programmet. Om du tar med en egen dator till redovisningen ska den vara uppkopplad mot Internet, eftersom vi jämför med tidigare lösningar (för att stävja fusk). Detaljer finns här.
    • För att få betyg högre än D måste ni
      • ladda upp er färdiga uppgift i Canvas senast 10:e april 23:59
      • redovisa och få godkänt senast 11:e, 12:e eller 13:e april
      • Vilket av datumen ovan ni kommer att redovisa kommer att framgå senare, och bero på vilken uppgift ni har och hur många andra som valt den etc., så se till att ni kan närvara på alla tre labb-tillfällena.
    • Om ni är godkända 13:e april kan ni höja betyget senare
    • Om ni inte är godkända 13:e april kan ni inte få högre betyg än D

Som ett komplement till de "inbyggda" finesserna i Python så finns ytterligare Pythonfiler som kan vara användbara för P-uppgiften här. Utnyttja gärna dessa, men tänk på att i enlighet med hederskodexen ALLTID ange varifrån koden kommer när det inte är din egen.

Efter kursens slut kan P-uppgiften endast redovisas i restlabbsperioder, och går att höja fram till sista tillfället före nästa års kursstart om man hade minst E den 13/4. Därefter kan man maximalt få betyget D.

Ett exempel på alla delar som ska ingå i en P-uppgift finns här: spjutkastare.zip Download spjutkastare.zip.


Eftersom datorsystemen byts eller uppgraderas årligen så bör du vara medveten om att tiden du har på dig att redovisa din P-uppgift är begränsad. Väntar du mer än ett år från kursstart med att redovisa kan lydelsen till din P-uppgift behöva bytas ut. Du måste då ta kontakt med kursledaren. Vi reserverar oss för att byten av datorsystem kan medföra att vissa eller samtliga P-uppgifter inte går att utföra i framtiden. Du kan alltså bara vara säker på att det går att redovisa din P-uppgift fram till nästa kursstart. 

Krav på P-uppgiftslösningen

Utöver kraven på funktionalitet som finns i uppgiftslydelsen gäller de krav som finns beskrivna här. De innebär bland annat att: 

  • Programmet ska vara användarvänligt och presentera sig vid programstart. Tydliga instruktioner ska ges på skärmen. Det ska vara lätt att förstå vad programmet skriver ut. Det är tillåtet att anta att indatafiler är felfria om inte annat anges i uppgiftslydelsen. Ingen felkoll behöver göras för att upptäcka om indatafiler verkligen existerar. 
  • Programmet ska vara kommenterat upptill med författare, datum och ev. revisionsdatum. Överkommentera inte programmet i övrigt. Tänk på att det är kvalitet och inte kvantitet på kommentarer som räknas. 
  • Programmet ska vara vettigt uppdelat funktioner, klasser och metoder, och funktioner ska inte vara alltför långa (max en skärmsida). Det ska vara lätt att i efterhand gå in och förstå och ändra i programmet. Robust, flexibelt och lättläst är nyckelord.
  • Programmet skall innehålla minst en klass. Klassen skall vara en integrerad del av uppgiftens lösande. Mer än ett objekt (instans) av klassen skall ofta användas. Klassen skall inte vara tillagd på slutet. Genom feedback på specifikationen framgår om ni använt klassen på rätt sätt.
  • Varje klass, funktion och metod ska vara dokumenterad, med en '''-sträng i början av kodblocket. Ange vad klassen och variabeln representerar, vad metoden gör. För metoder bör man också ange vad indata (parametrar) och utdata betyder. Det ska räcka att läsa kommentar och metodhuvud för att förstå hur en metod ska användas. 
  • Namn på klasser, variabler och metoder ska vara meningsfulla. Alla deklarerade namn ska vara på samma språk, liksom alla kommentarer (engelska namn och svenska kommentarer är OK). Koden skall vara snyggt formaterad. 
  • Nästan identiska kodstycken ska inte upprepas. Gör i stället generella funktioner, klasser och metoder. Inför inte i onödan begränsningar. Inför konstanter för sådant som man kan tänkas vilja ändra framöver (om man skulle vilja arbeta vidare med din lösning) och för tal som inte ska ändras och går att beskriva med namn.

Hjälp

Hjälp kan man få på labb-passen, och hos Allmänhandledningen.

Studenter från tidigare kursomgångar

Om man gick kursen förra året, men inte redovisade sin P-uppgift så går det bra att göra detta under denna kursomgång. Dock kan man inte få högre betyg än D. Gör enligt nedan

  • Välj en P-uppgift från årets lista
  • Hoppa över specifikationsinlämning, eftersom det momentet redan passerat.
  • Lös den
  • Få den granskad av en annan student, och se till att granska någon annans uppgift.
  • Maila kursansvarig (ccs@kth.se) när du är redo att redovisa, då får du en assistent tilldelad som du bestämmer tid med.