Hide menu

Laborationer

Anmälan, grupper och schema

Laboration görs i par. Hitta någon som du vill göra laboration tillsammans med. Anmäl er till laborationerna i Webreg. Er grupp kommer sedan att överföras till It's Learning, som ni använder för att lämna in labbresultat. Glöm inte att alltid ange grupp när ni lämnar in en lösning i It's Learning.

Varje grupp blir tilldelad en labbhandledare. Det är den personen som kommer att rätta och godkänna era labbar. På labbtillfällena kommer alltid minst en labbhandledare finnas på plats för att svara på frågor. Det går bra att sitta i vilken labbsal som helst, eller på annan plats med er egen laptop, och ni kan ställa frågor till alla handledare på labbtillfället oavsett vem som kommer rätta just era labbar.

Eftersom ni är många i kursen kan det bli lite trångt i labbsalarna ibland. Har ni möjlighet att göra övningarna på er egen laptop, går det naturligtvis bra att bara söka upp labbhandledarna under labbtid vid eventuella frågor. Frågor utanför labbtid besvaras antingen via e-post till er labbhandledare, eller vid ett möte bokat via e-post - OBS labbhandledarna kommer inte att svara på frågor om ni bara dyker upp på deras kontor, respektera att de har andra arbetsuppgifter utöver den här kursen!

Lämna in lösningar

Innan ni lämnar in en lösning, kontrollera följande:

  • Är koden kommenterad? Labbhandledarna rättar endast kod som är ordentligt kommenterad - lämnar du in en lösning som inte är kommenterad får du tillbaka den utan rättning. Det är lämpligt att ha minst en kommentar för varje logisk operation, block och/eller metod, så att handledaren enkelt kan se hur ni har tänkt.
  • Har ni testkört lösningen och är säkra på att den fungerar? Labbhandledaren rättar inte uppgifter som inte är körbara, dvs lösningen får inte ha kompileringsfel - sådana lösningar lämnas tillbaka utan rättning. Var också noga med att testköra era lösningar med olika data (både förväntade och slumpvisa data) så att ni är säkra på att ni löst uppgiften på ett korrekt och komplett sätt.

Inloggning till It's Learning hittar ni i Studentportalen, i menyn i vänsterkanten under rubriken "Kursplatsen" när ni loggat in i portalen. När ni loggat in i It's Learning väljer ni kursen "Programmering, grundkurs" ur listan på era kurser, och i mappstrukturen under Kursinnehåll hittar ni mappar för de olika delarna i labbkursen. Under varje mapp finns sedan en "uppgift" för varje obligatorisk inlämning, samt en för att skicka in lösningar på övriga uppgifter ni vill ha kommentarer på. För att lämna in en lösning, klicka på rätt uppgift i mappstrukturen, klicka på "Lämna in svar"-knappen, ladda upp filen (om ni vill lämna in flera filer använd gärna en zip-fil) och skriv en kommentar om det är något ni vill poängtera för läraren gällande er lösning. Välj er grupp i listan (OBS! detta är viktigt, annars kommer handledaren kanske missa er inlämning), och klicka sedan på "Lämna in".

Rättning och betygsättning

Inlämning sker genom It's Learning och det går bra att lämna in uppgifterna när som helst under tiden fram till deadline. Vi rekommenderar dock att ni gör uppgifterna i ordning och lämnar in dem efter hand ni blir klara. Labbahandledaren godkänner eller lämnar kommentarer och instruktioner för komplettering på era lösningar inom två kalenderveckor från det ni har lämnat in er lösning. De sista uppgifterna kommer därmed rättas ca två veckor efter labbdeadline för respektive del. Eventuell komplettering ska ske vid respektive uppsamlingstillfälle (två tycken under läsåret - se kurshemsidan under "Examination"). Inlämningsmöjligheten i It's Learning öppnas då ca 2 veckor innan deadline för uppsamlingstillfället och kommentarer lämnas två veckor efter respektive uppsamlingsdeadline (oavsett när kompletteringen lämnas in).

Inlämnade labbar betygsätts med G (godkänt) eller K (komplettering - möjlighet att komplettera om ej sista kompletteringstillfället har passerats). Observera att för betyget VG måste samtliga labbuppgifter lämnas in i tid, d v s före första deadline för respektive del. Betyg U ges för uppgifter som inte lämnats in alls innan sista kompletteringsdeadline, eller där sista kompletteringsdeadline har passerats utan att studenten fått godkänt på kompletteringen. Studenten måste få minst betyg G på samtliga uppgifter markerade med *, senast vid sista kompletteringsdeadline, annars får denne gå om labbkursen nästa år, enligt de regler och med de uppgifter som gäller för det årets labbkurs.

Labbarna genomförs i grupper om två, men det är viktigt att båda personerna i gruppen förstår samtliga lösningar. Under kursens gång kommer två duggor att hållas. En dugga är ett individuellt skriftligt "prov" (görs "på papper") som genomförs på ett av labbtillfällena (för del 1 gäller den 29/11 kl 10:15 - obligatorisk närvaro). Duggan syftar till att kontrollera att era individuella kunskaper uppnått en basnivå, så att ni är redo att gå vidare till nästa del i kursen. Duggan kommer därmed inte vara utformad som en tenta, d v s inte innehålla några "kluriga" uppgifter, utan väldigt grundläggande uppgifter som alla behöver kunna svaren på för att gå vidare. Har ni gjort och förstått alla labbuppgifterna har ni utmärkta chanser att klara duggan på första försöket. För att kunna uppnå VG på kursen måste båda duggorna klaras på första försöket. För att uppnå G finns två uppsamlingstillfällen per dugga.

Arbeta hemma

För att kunna labba hemma laddar du ner och installerar Eclipse (ska du bara använda det till labbarna och inte vet vilket paket du ska välja - ta det som heter "classic") och Java SE Development Kit (JDK), både version 6 och 7 ska fungera men välj gärna den senaste (JDK är även inkluderat i några Eclipse-paket).

Övningsmaterial

Komma igång

För att komma igång kan ni behöver bekanta er med Eclipse-plattformen. Gör gärna det redan innan första labbtillfället. Tutorials för Eclipse finns här (Java i Eclipse - kolla främst på lektion 1-2) och här (detaljerad tutorial för att förstå gränssnittet i Eclipse - ni behöver INTE kunna allt detta, leta upp det ni behöver om ni får problem).

För att komma igång i Eclipse: Skapa ett projekt i din "workspace"-mapp Högerklicka i "Package explorer" och välj "New" -> "Java Project" Ge projektet ett namn (t ex "Labbar") och klicka "Finish" Skapa en ny Java-klass i ditt projekt: Högerklicka på projektmappen och välj "New" -> "Class". Ge klassen ett namn och klicka i rutan för att skapa en tom main-metod automatiskt. Skriv koden för ditt program innanför klamrarna till metoden "main". Tänk på att göra koden begriplig genom kommentarer och indentering. Testkör ditt program inifrån Eclipse: högerklicka på klass-filen och välj "Run as Java Application". Se resultatet och eventuella felmeddelanden i Eclipse:s console.

Uppgifter

Del 2

Labbuppgifterna för Del 2 av labbkursen (deadline 31/1 2013 kl 16:59) hittar du här. Observera att alla uppgifter ska lämnas in för rättning genom It's Learning, och att kodskelett för uppgift 2.5 finns här. Med "kodskelett" menas att du får en färdig struktur för ditt program och bara behöver skriva in den kod som fattas. När du lämnar in din lösning kommer den alltså att innehålla filen med kodskelettet men utökad med din egen kod på markerade platser i filen.

Del 1

Labbuppgifterna för Del 1 av labbkursen (deadline 7/12 kl 16:59) hittar du här. Lista på användbara klasser i standardbiblioteket hittar ni här.

Till varje föreläsning hör ett antal labbuppgifter, dvs dessa uppgifter övar på det som gåtts igenom på föreläsningen. Tanken är inte att ni ska hinna med alla uppgifterna på ett enda labbtillfälle. Kursens första del har 5 föreläsningar men ca 14 labbtillfällen utspridda över 7 veckor, vilket innebär att ni bör hinna med ca 11 uppgifter i veckan (om ni väljer att göra samtliga övningar). Observera att det inte är tänkt att ni ska hinna med alla övningar på labbtiden - jobba med övningarna när det passar er och utnyttja labbtiden speciellt till att ställa frågor på sådant som är oklart eller komma vidare när ni har kört fast.

Föreläsningarna i del 1 täcker in övningarna på följande vis:

  • Föreläsning 1 - Uppgift 1.1-16 (3 obligatoriska uppgifter)
  • Föreläsning 2 - Uppgift 1.17-36 (7 obligatoriska uppgifter)
  • Föreläsning 3 - Uppgift 1.37-49 (4 obligatoriska uppgifter)
  • Föreläsning 4-5 - Uppgift 1.50-1.76 (10 obligatoriska uppgifter)

Eftersom ni kommer till den här kursen med olika förkunskaper finns även flera olika nivåer av uppgifter, och endast några utvalda uppgifter behöver lämnas in för rättning.

För er som aldrig programmerat innan eller känner er väldigt osäkra på programmering rekommenderas att göra samtliga uppgifter. Endast de uppgifter som är markerade med * måste lämnas in till labbhandledaren för godkännande, men lämna gärna in andra lösningar om ni är osäkra på om ni gjort rätt, eller kontrollera era lösningar med labbhandledaren på labbtillfällena (i mån av tid - labbhandledaren prioriterar att hjälpa de som inte är klara med uppgifterna framför att kontrollera färdiga lösningar).

Ni som programmerat lite innan men behöver friska upp kunskaperna, eller inte har programmerat i just Java tidigare, kan välja ut de uppgifter ni vill göra - endast de markerade med * måste lämnas in till labbhandledaren för godkännande. Uppgifter som kan vara lämpliga att hoppa över om ni redan känner er säkra på ett moment är markerade med "( )".

Ni som har gedigen programmeringserfarenhet i Java sedan tidigare kan nöja er med att göra uppgifterna med obligatorisk inlämning som är markerade med *, samt välja ut övriga uppgifter baserat på om ni känner er osäkra på ett visst moment. Kom ihåg att ni måste klara en individuell dugga i slutet av del 1 av labbkursen - hoppa därför inte över några moment som ni är osäkra på!

Bra att ha...

  • Här finns en Java-lathund som summerar det mesta ni behöver veta i denna kurs, den kan vara bra att ha tillgänglig när ni programmerar. Mycket information/exempel finns på internet, vänj er vid att Googla.
  • Här finns dokumentationen för Java API 7, när ni kommit en bit på väg kommer ni att behöva leta i dokumentationen för att hitta lämpliga metoder och studera hur klasserna fungerar.
  • Exemplen från Johans extra seminarium för del 1 finns här och här. Och exemplen från det extra seminariet för del 2 finns i den här zip-filen.
  • Lista på användbara klasser i standardbiblioteket hittar ni här
  • Här hittar ni två exempel som kan hjälpa er på uppgifterna 1.73 och 1.74. Packa upp zip-arkivet, i det finns fyra .java filer. Om ni öppnar filerna ser ni att de ska ligga i två olika paket (Teckenstrang.java i ett paket som heter mittpaket.strang och de övriga tre i ett paket som heter myjava.mittpaket). Skapa dessa två paket i er källkodsmapp (src) i er workspace folder och lägg in filerna under respektive paket (om ni kopierar hela mappstrukturen, kom ihåg att katalogen "klasser" inte ska finnas med, utan bara dess underkataloger).
    • Det första exemplet består av filerna Tecken.java och AnvandaTecken.java. Tecken.java innehåller en klass Tecken med några statiska metoder. Dessa metoder används sedan i huvudprogrammet (main-metoden) som finns i klassen AnvandaTecken.java - det är en liknande konstruktion ni ska göra i uppgift 1.73 fast med andra metoder och ett annat innehåll i huvudprogrammet.
    • Det andra exemplet består av Teckenstrang.java och AnvandaTeckenstrang.java. Det här exemplet visar hur jag kan modifiera beteendet hos en existerande funktion (eller snarare definiera en egen funktion som gör något snarlikt, men beter sig lite annorlunda), dvs charAt-metoden i klassen String. Observera att min metod charAt i Teckenstrang är statisk, och kan därför användas utan att vi behöver skapa en instans av klassen Teckenstrang, medan för att använda charAt i klassen String direkt måste vi ha en instans (en variabel som innehåller ett faktiskt objekt av typen String) - just nu behöver ni inte bry er om varför man använder det ena eller det andra, vi återkommer till det i del 2, men de metoder ni skapar i 1.73 och 1.74 bör ni göra statiska precis som i mina exempel. Det andra exemplet påminner om det ni ska göra i uppgift 1.74, fast där ska ni göra tvärt om: kasta ett undantag där "originalet" inte gör det, i mitt exempel, returnerar jag istället null-tecknet för att undvika att kasta undantaget som originalversionen av metoden i klassen String gör. Alla filer innehåller kommentarer med förklaringar på vad metoderna gör.


Page responsible: Eva Blomqvist
Last updated: 2012-12-14