Göm meny

Temauppgift 1

I den första temauppgiften ska ni implementera två sorteringsalgoritmer som ska kunna användas för att sortera DataRow-instanser (se introuppgift 1. Data laddar ni in på samma sätt som i introuppgiften till tema 1.

Allmänt

Uppgifter: Brons, Silver, Guld

  • Alla uppgifter göras av alla på bronsnivå.
  • För att få Silver på temauppgiften måste du göra alla brons- och silver-delar
  • För att få Guld på temauppgiften måste du göra alla brons-, silver- och guld-delar

Se även examination för information om hur brons, silver och guld påverkar moment- och kursbetyg.

Kodstandard

Er kod ska följa standarderna PEP 8 och PEP 257. Kontrollera detta genom att köra koden genom pep8 och pep257 programmen. pep8 finns installerad för alla, men ni behöver skapa en virtuell miljö (virtualenv) och installera pep257.

Redovisning och komplettering

Uppgiften redovisas på schemalagt redovisningstillfälle. Vid redovisningen visar ni att er kod fungerar korrekt, att den går igenom kontroll för PEP8 och PEP257 samt att ni förstår den kod ni skrivit.

  • Efter redovisningen kommer handledaren bedömma hur väl varje enskild gruppmedlem uppnått kunskapsmålen kopplade till denna uppgift (se ovan).
  • Varje pargrupp har en begränsad tid (ca 10 minuter) att redovisa och diskutera med handledaren.

Anvisad komplettering

Vid behov kommer er redovisningshandledare anvisa om att ni ska lämna in komplettering enligt kompletteringsinstruktionerna ovan. Inga kompletteringar kommer kunna göras under själva redovisningstiden.

Komplettering vid missat redovisningstillfälle

Missat redovisningstillfälle kompletteras genom att skicka in en screencast där ni demonstrerar ovanstående. Screencastkomplettering kan skickas in individuellt eller som par.

Komplettering upp till Silver eller Guld

Om man fått brons och vill få silver eller guld, eller om man fått silver och vill få guld, så kommer ett specifikt tillfälle för kompletteringsredovisningar för att få Silver eller Guld på temauppgiften kommer att hållas i slutet av kursen.

Lärandemål vid redovisning

Precis som alla uppgifter i kursen är det inte att lösa uppgiften i sig som är målet. Uppgiften är konstruerad för att hjälpa er behärska mer generella färdigheter och begrepp och det är dessa som kommer att bockas av vid redovisning.

Brons

  • kunna läsa in data från CSV-fil och skapa av instanser av en klass med hjälp av denna data
  • kunna använda instansvariabler (läsa från och skriva till)
  • förstå och kunna använda listor som innehåller instanser av en specifik klass
  • förståelse av Bubblesort-algoritmen samt dess implementation
  • förståelse av en av följande sorteringsalgoritmer samt dess implementation: Shellsort, Mergesort, Quicksort (se uppdelning i Uppgift 2).

Silver

  • kunna dela upp en funktion i flera mindre funktioner och redogöra för hur de används tillsammans
  • förståelse av hur man gör en funktion mer generell genom att använda argument

Guld

  • förmågan att formulera bra funktionskommentarer med korrekt abstraktionsnivå som dokumenterar hur funktioner ska användas.

Uppgift 1

Brons

I uppgift 1 ska ni implemenetera en bubblesort som tar in en lista av DataRow-instanser och sorterar dem efter tid.

  1. Skriv en funktion som ni döper till load_data() som tar in namn på fil och returnerar en lista med DataRow-objekt.
  2. Skriv sedan en funktion som ni döper till bubblesort() som tar in listan med DataRow-objekt och returnerar en sorterad lista med DataRow-objekt.

Silver

För att få Silver på Uppgift 1 ska följande vara uppfyllt:

  • er lösning uppfyller kraven för brons
  • man ska kunna skicka argument till bubblesort() för att ange vilken av DataRows instansvariabler som listan av DataRow-objekt ska sorteras efter

Guld

För att få Guld på Uppgift 1 ska följande vara uppfyllt:

  • er lösning uppfyller kraven för silver
  • era funktionskommentarer ska följa PEP257 och vara på den nivån att de inte beskriver explicita implementationsdetaljer utan beskriver vad resultatet av att använda funktionerna är samt hur man använder respektive funktion (förklaring av argumenten).

Uppgift 2

Brons

Beroende på vilket gruppnummer ni fått, har ni till uppgift att implementerar en av följande sorterinsalgoritmer som ska användas för att sortera en lista av DataRow-objekt.

  1. Shell-sort
  2. Merge-sort
  3. Quick-sort

Är ni t.ex. grupp A.1, B.1 eller D.1 implementerar ni Shell-sort.

Silver

För att få Silver på Uppgift 2 ska följande vara uppfyllt:

  • er lösning uppfyller kraven för brons
  • man ska via argument till shell/merge/quick-sort-funktionen kunna ange både vilket attribut som man ska sortera efter, samt om sorteringen ska ske stigande eller fallande

Guld

För att få Guld på Uppgift 2 ska följande vara uppfyllt:

  • er lösning uppfyller kraven för silver
  • er lösningen är skriven på ett sätt som inte upprepar samma kod i onödan. Dvs, återanvänd kod genom att dela upp i mindre funktioner där det behövs. Kodlösningen behöver inte vara “perfekt” dock.
  • era funktionskommentarer ska följa PEP257 och vara på den nivån att de inte beskriver explicita implementationsdetaljer utan beskriver vad resultatet av att använda funktionerna är samt hur man använder respektive funktion (förklaring av argumenten).


Sidansvarig: Jody Foo
Senast uppdaterad: 2018-02-12