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 ge eller få hjälp i en laboration (om det inte tillåts explicit i kursen, e.g., att studenter inom samma par ska så klart samarbeta, eller att man ska använda STL biblioteket). Se även IDAs policy och regler för datorlaborationer. Fusk är ett försök att vilseleda. E.g., att lämna in kod och försöka att få det att se ut som att man har skrivit den själv när man har tagit den från en annan person, en hemsida eller ett AI-tjänst. Det är inte tillåtet att göra egna lösningar tillgängliga för andra (e.g., offentliga via GitHub), att kopiera kod från andra studenter/grupper/personer, från nätet (e.g., Stackoverflow eller andra hemsidor) eller verktyg (E.g., ChatGPT eller GitHubs copilot). Detta gäller även om ändringar gjordes.

Laborationsuppgifter

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

Anmälan via Webreg:

  • Obligatoriska labbar (LAB1): Laborationerna bör genomföras i par. Anmälan via denna länk. Deadline: 9:a september.
  • Extra uppgifter och labbar: Samma par som (LAB1) eller individuellt. Anmälan via denna länk. Deadline: senaste 22:a oktober, men innan demonstrationen.

Allmänna anvisningar

Labbarna är avsedda att genomföras i IDE:n Qt Creator men det går bra att använda en text editor (vim/emacs/annat) i kombination med qmake. Mer information om qt creator samt tips om hur man kan installera på din egen dator finns här).

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 under ett labbtillfälle.
  • (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 laborationspar ska skapa ett projekt som heter "TDDD86-HT24-liuidxxx-liuidyyy". Där liuidxxy och liuidyyy är motsvarande LiU IDer. Projektet ska heta "TDDD86-HT24-liuidxxx" om det är enbart en student. Varje labbpartner ska vara minst en developer i projektet.
  • Glöm inte att lägga till (FRAM TILL 01 September 2025) alla åtta assistenter och kursledaren som "Reporter"-medlemmar i projektet. Om en assistent har flera LiU-ID, välj anställdkontot (det med två siffror i slutet).
  • Det är viktigt att ni använder "Time Based Access" när ni lägger till assistenterna och kursledaren till ert projekt så att de är "Reporter"-medlemmar fram till 01 september 2025, och inte mer!
  • Skapa en folder för varje lab ni jobbar med: e.g., TDDD86-HT24-liuidxxx-liuidyy/lab1, TDDD86-HT24-liuidxxx-liuidyy/lab2 eller TDDD86-HT24-liuidxxx-liuidyy/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 med ett mail.
  • 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 innan slutet av vecka 42. Om resultatet är godkänt får ni 1 bonus poäng för att få högre betyg på LAB1 (Betyg LAB1 i ladok). Om laborationer 1-4 är redovisade och koden inlämnat innan slutet av vecka 43, och om resultatet är godkänt, så får ni 1 till bonus poäng. Resten av laborationerna skall vara redovisade senast den 16e december. Observera att det finns att alla studenter hinner inte demonstrera då. Därför rekommenderar vi starkt att demonstrera labbar under hela terminen och att inte vänta till sista labbtillfällen under period 1 eller 2. Dessutom ska ni har lämnat in koden via Gitlab (dvs, med en commit och en push) senaste vecka 51. Det brukar bli långa köer under vecka 42 och vecka 43, eller vid slutet av kursen. Observera att man kan demonstrera bara under de bokade labbtillfällen. Vänta inte! Se till att bli klara och att demonstrera en labb i taget! Se även IDAs policy och regler för deadlines om 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. Man samlar poäng genom att se till att laborationer 1-4 är redovisade och koden inlämnat innan slutet av första perioden (dvs. senaste vid slutet av vecka 43), samt genom att lösa extra labbuppgifter. 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 sju möjliga utökningar, E1-E7, av de befintliga labbarna och dels som två helt fristående extra labbar, EL1 (som också ha en utökning E7) 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 i webreg individuell, men vi hoppas förstås att ni ska arbeta tillsammans med er laborationspartner.

Deadline för de extra labbupgifterna är samma som för de ordinarie labbarna.

  • 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 (@labb4) ger 2 poäng
  • EL1 ger 6 poäng
  • E6 (@EL1) ger 3 poäng
  • E7 (@labb7) ger 2 poäng
  • EL2 ger 8 poäng

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".

Labb 4

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

Uppgiftsbeskrivning
Given kod

Labb 6

Uppgiftsbeskrivning
Given kod
Glöm inte att testa först din implementation av MyVector och sedan den av MyPriorityQueue med "test-harness-myvector.cpp" och "test-harness-myprio.cpp" som förklarat i uppgiftsbeskrivningen.

Labb 7

Uppgiftsbeskrivning
Given kod
FAQ

Labb 8

Uppgiftsbeskrivning
Given kod
Förväntat utdata
FAQ


Extra laborationsuppgifter

Extra labb 1

Uppgiftsbeskrivning
Given kod

Extra labb 2

Uppgiftsbeskrivning
Given kod



Sidansvarig: Ahmed Rezine
Senast uppdaterad: 2024-11-07