bild
Skolan för
elektroteknik
och datavetenskap

Programmering och problemlösning under press

Labbinformation för popup06

Här hittar ni kursens labbar.

Upplägg

Kursen innehåller fyra labbar, som är en del av problemlösningsmomentet i kursen. Varje labb innehåller ett antal labbuppgifter.

Målet med labbarna är att ni ska utveckla ett återanvändbart kodbibliotek med implentationer av användbara algorimer och datastrukturer.

Labbarna är inte obligatoriska, men det finns två goda skäl att göra dem ändå; dels ger de betygspoäng (se examination), dels kommer ni att ha möjlighet att använda det ni gjort på labbarna till hemtalen men framför allt under problemlösningssessionerna.

Bedömning av labbar

Bedömningen av inlämnade labbar består av två delar: automatiskt test att koden verkar vara korrekt, samt okulärbesiktning av koden.

Den automatiska testningen består av uppgifter hos Kattis. Till varje labbuppgift finns en motsvarande uppgift hos Kattis som testar att ni har löst labbuppgiften korrekt.

Okulärbesiktningen består i att vi kollar på koden och kontrollerar att den är väl dokumenterad och strukturerad (se vidare Krav på koden nedan).

Inlämning

En labbupgift anses inlämnad om motsvarande Kattis-uppgift är löst vid deadline för labben. Vid granskningen kommer vi att titta på den senaste godkända inskickningen som inkom innan deadline. Tänk på att det är den koden som kommer att granskas (och som därför ska vara bra kommenterad).

Obs! Alla i labbgruppen måste skicka in en lösning på Kattis-uppgiften.

Deadlines

Deadlines anges i labblydelserna.

Krav på koden

Allmänna krav

Koden ska vara kommenterad och snyggt strukturerad. Till varje uppgift ger vi förslag på vad funktionen/klassen som ska implementeras kan ta för parametrar och vad den kan returnera.

Obs! Detta är dock inte något som ni behöver följa slaviskt, om ni tycker att det blir snyggare att göra på något annat sätt går det bra, så länge funktionen fortfarande löser uppgiften som ska lösas.

Författare

Författarens (eller författarnas, om det är en grupp) namn ska finnas som en kommentar högst upp i koden.

Dokumentation

Alla funktioners och klassers funktionalitet ska vara dokumenterad med kommentarer i koden.

Felhantering

Exceptionella fall måste hanteras på något sätt, t.ex. genom att ni dokumenterar dem.

Kommentarer till kraven

Efter labb 1 visade det sig att flera inlämnade lösningar hade en del brister i struktur och dokumentation. Inför labb 2, 3 och 4 ges lite fler riktlinjer nedan. Följ dem, annars kan ni missa poäng.

  1. Separera funktionaliteten från inläsningen. Läs indata skicka till "lösaren" och ta emot utdata. Låt inte den "generella" algoritmen vara ansvarig för läsning och skrivning. Algoritmen ska inte vara specialsydd för Kattistesterna.
  2. För mycket insprängda kommentarer. Ofta är enstaka rader någorlunda självdokumenterande och kommentarer av typ
    // läser indata till buffert
    är nästan alltid onödiga. Kommentera inte enstaka rader utan skriv kommenterarer som förklarar hela metoder eller större kodblock inom en metod.
  3. Kommentera API för centrala funktioner så man vet vad in- och utparametrar/returvärden är. Kommentera i första hand för den som ska anropa koden, inte för den som ev ska ändra i koden.
  4. Labbuppgiften anger förslag till ett API. Använd det om ni inte hittar något som är lika bra eller bättre (med avseende på återanvändbarhet). API:t ska inte vara specialsytt för de tester som körs på Kattis.
  5. Author(s) överst i alla filer, även headerfiler och tidiga inskickningar.
  6. Alla i gruppen ska skicka in!
Copyright © Sidansvarig: Mikael Goldmann <migo@kth.se>
Uppdaterad 2006-11-28