Göm menyn

TDDD86 Datastrukturer, algoritmer och programmeringsparadigm

Laborationer


Laborationer

Laborationerna ska gennomföras i grupper av max två personer. De bör genomföras i par. Det är inte tillåtet att lämna in lösningar som har kopierats från andra studenter/grupper, eller från annat håll, även om modifieringar har gjorts. Se även IDAs policy och regler för datorlaborationer.

Laborationsuppgifter

Laborationsuppgifterna är åtta till antalet och finns beskrivna nedan.

Anmälan

Laborationerna bör genomföras i par. Anmälan till laborationerna sker på IDAs webReg-system via följande länk, senast 02 september(!).

Allmänna anvisningar

Labbarna är avsedda att genomföras i IDE:n Qt Creator men det går jätte bra att använda en text editor (vim/emacs/annat) i kombination med qmake (mer information).
Samtliga i labbgruppen skall bidra till lösningen av samtliga laborationer och förväntas också kunna motivera och förklara programkoden. För att bli godkänd krävs inte bara ett program som förefaller fungera på några testexempel utan koden skall vara rimligt effektiv och läsbar. Särskilt vill vi att ni beaktar vår stilguide.

Redovisning av labbar

Redovisning av labbar sker i två steg:

  • (i) Demonstration av labben för assistent i sal.
  • (ii) Inlämning av kod till assistent enligt nedan.

Laborationer lämnas in via LiUs Gitlab (inte IDAs Gitlab!):

  • Använd era LiU ID.
  • Varje labbgrupp (i.e., varje par) ska skapa ett projekt som heter "TDDD86-HT20". Varje labbpartner ska vara minst en developer i projektet.
  • Glömm inte att lägga till alla fem assistenter och kursledaren som "Reporter"-medlemmar i projektet.
  • Skapa en folder för varje lab ni jobbar med: e.g., TDDD86-HT20/lab1, TDDD86-HT20/lab2 eller TDDD86-HT20/El1.
  • När ni får en ok från assistenten efter en demonstration ska ni lämna in koden genom att:
    • göra en commit med git commit -m "TDDD86 Lab [nummer] redovisning" och en push
    • meddela assistenten via ett meddelande i eran privata teams kanalen (använd @Assistant_name i meddelandet).
  • När laborationen är rättad får ni ett e-postmeddelande till era studentkonton.
  • Vid komplettering använd Gitlab och gör en ny commit och push.

Det är viktigt att projektet är komplett:

  • se till att alla filer som utgör en del av laborationen är med i projektet
  • använd exakt de filnamn som är angivna i laborationsuppgiften.
Använd ditt LiU mail med ett ämne som börjar med "[TDDD86] ..." varje gång du skickar ett mail till en assistent eller en lärare.

Deadline

Laborationerna 1-3 ska vara redovisade och koden inlämnat senast vid slutet av första perioden (dvs. vecka 42). I så fall får ni 2 bonus poäng för att få högre betyg på LAB1 (Betyg LAB1). Resten av laborationerna skall vara redovisade senast vid första tentamenstillfället (20201215). Detta betyder att samtliga labbar behöver vara demonstrerade för assistenten senast detta datum. Dessutom ska ni har lämnat in koden via Gitlab (dvs, med en commit och en push) senast detta datum. Det brukar bli långa köer under vecka 42 eller vid slutet av kursen. Observera att man kan demonstrera bara under de bokade labbtillfällen. Väntar inte med att bli klara och med att demonstrera era labbar! Se även IDAs policy och regler för datorlaborationer.

Betyg - LAB1

Godkänt på de åtta laborationsuppgifterna är ett krav för betyg 3 på momentet LAB1. För att få högre betyg kan man samla poäng genom att bli klar med laborationer 1-3 innan vecka 42, göra extra labbuppgifter, eller genom att lösa bonusproblem. Högre betyg ges enligt följande poängsystem:
PoängBetyg på LAB1
0 till och med 73
8 till och med 154
16 och över5

Extra laborationsuppgifter

Ett sätt att samla poäng för att få högre betyg på kursen labbmoment är att göra extra laborationsuppgifter. De extra labbuppgifterna finns dels som åtta möjliga utökningar, E1-E8, av de befintliga labbarna och dels som två helt fristående extra labbar, EL1 och EL2. Dessa extra labbuppgifter bör genomföras i par och redovisning går till på samma sätt som för de ordinarie labbuppgifterna. Om du vill samla poäng genom att göra extra laborationsuppgifter behöver du vara anmäld till ett särskilt moment i webreg för att vi ska kunna bokföra dina resultat. Eftersom det kan hända att två personer i samma labbgrupp inte har samma ambitionsnivå är anmälan till detta moment i webreg individuell, men vi hoppas förstås att ni ska arbeta tillsammans i era labbgrupper.

Deadline för de extra labbupgifterna är samma som för de ordinarie labbarna, förutom för uppgiften E5 där poängtilldelningen avgörs genom en tävling som 2020 äger rum i vecka 50. För att vi ska hinna förbereda tävlingen är sista inlämningsdatum för E5 satt till 6 December 2020.

  • E1 (@labb2) ger 1 poäng
  • E2 (@labb2) ger 3 poäng
  • E3 (@labb3) ger 3 poäng
  • E4 (@labb3) ger 3 poäng
  • E5 (@labb3) ger 5 poäng till vinnaren av tävlingen
  • E6 (@labb4) ger 2 poäng
  • E7 (@labb6) ger 3 poäng
  • E8 (@labb7) ger 3 poäng
  • EL1 ger 8 poäng
  • EL2 ger 6 poäng

Bonusproblem

Bonusproblemen i kursen är ett frivilligt moment som innefattar lösandet av skojiga, intressanta och utmanande problem relaterade till innehållet på föreläsningarna om datastrukturer och algoritmer. Syftet med bonusproblemen är att öka förståelsen för kursens innehåll genom relevanta programmeringsuppgifter. Det kommer dels finnas uppgifter relaterade till föreläsningarna och dels till kursen i stort. De senare är mer av fördjupningskaraktär. Genom att lösa uppgifterna kan man samla poäng för att få högre betyg på labbmomentet i kursen.

Uppgifterna i årets bonusproblemsomgång kommer att finnas i onlinedomaren Kattis. Om en student löser tillräckligt många bonusproblem innan utgången av 10 Januari 2020 ger det poäng enligt nedan. För att tillgodogöra sig poängen måste studenten vara registrerad på kursen i Kattis, annars ser inte kursledningen resultaten och kan inte heller göra någon plagieringskontroll av inskickade uppgifter. Registrering görs genom att klicka på registreringslänken på kursens Kattis-sida. (Man behöver vara inloggad för att registreringslänken ska synas.) Dessutom behöver studenten vara anmäld till bonusproblemsomgången. Bokföring av resultaten sköts via ett särskilt moment i webreg, så om du tänkt samla poäng genom att lösa bonusproblem behöver du anmäla dig i webreg också. Maila din assistent en länk till inlämningen när du har löst en uppgift.

  • 0-1 lösta uppgifter ger 0 poäng.
  • 2-3 lösta uppgifter ger 1 poäng.
  • 4-7 lösta uppgifter ger 2 poäng.
  • 8-11 lösta uppgiter ger 3 poäng.
  • 12-14 lösta uppgifter ger 4 poäng.
  • 15 lösta uppgifter ger 5 poäng.

Bonusproblemen är individuella uppgifter. Som vanligt går det bra att föra informella diskussioner kring uppgifter i kursen, men i det här fallet måste varje student själv komma på och skriva sin lösning till problemen. Redovisning sker, efter att uppgiften fått "Accepted" i Kattis, genom att skicka ett mejl till respektive assistent med en länk till det submission-id i Kattis som blivit godkänt. Mejlet måste skickas från studentens @student.liu.se-adress.

Bra KATTIS-länkar

Laborationsuppgifter

Labb 1

Uppgiftsbeskrivning
Given kod
FAQ

Labb 2

Uppgiftsbeskrivning
Given kod
FAQ

Labb 3

Uppgiftsbeskrivning
Given kod
FAQ
Alternativa heuristiker
Glöm inte att använda valgrind (från terminalen eller från qtcreator) för att kolla upp om det är minnes problem i de filer DU HAR ÄNDRAT, inte i de övriga filer. I Valgrinds menyn välj bort "external errors". Du behöver INTE bry dig om rapporterade problem i de andra filer. Exempel på problem som ger en kompletering mismatch-valgrind.pdf och garbage-valgrind.pdf

Labb 4 (v43-v47)

(VIKTIGT: både kod och beskrivning blev uppdaterade den 2020-10-05)
Uppgiftsbeskrivning
Given kod
Glöm inte att använda Valgrind och att kolla upp att du inte har minnes allokerings problem i de filer du har ändrat på.

Labb 5 (v45-v48)

Uppgiftsbeskrivning
Given kod

Labb 6 (v46-v48)

Uppgiftsbeskrivning
Given kod
FAQ

Labb 7(v48-v49)

Uppgiftsbeskrivning
Given kod
FAQ

Labb 8 (v49-v50)

Uppgiftsbeskrivning
Given kod
Förväntat utdata
FAQ


Extra laborationsuppgifter

Extra labb 1 (kan börja v47)

Uppgiftsbeskrivning
Given kod
FAQ

Extra labb 2 (kan börja v46)

Uppgiftsbeskrivning
Given kod
FAQ



Sidansvarig: Ahmed Rezine
Senast uppdaterad: 2020-11-12