Göm menyn

Information om O-uppgifter

Vad är O-uppgifterna?

Områdesuppgifterna, eller bara O-uppgifterna, liknar en labbserie i andra kurser. O-uppgifterna berör alla varsitt område. Till exempel samlar vi begreppen som har med hur man hanterar tangentbord och utskrift i området "Enkel in- och utmatning" (detta är området O1.1).

O-uppgifterna har specifika krav som finns beskrivna för respektive område. Tidigare områden är förkunskapskrav och anses ingå. På din kurskarta kan du se vilka områden som är förkunskapskrav.

Tanken är att ni arbetar parvis (i grupper om två) på O-uppgifterna. Se "Samarbete vid O-uppgifter" nedan.

O-uppgifterna är ofta omfattande och kan därför ta ganska lång tid att lösa. Ni förväntas därför arbeta med O-uppgifterna utanför programmeringsstugorna.

O-uppgifterna är, till skillnad från P-uppgifterna, inte betygsgrundande. Du behöver dock få O-uppgifterna godkända för att låsa upp P-uppgifterna. Även om O-uppgifterna inte är betygsgrundande gäller fortfarande samma sak som med P-uppgifterna gällande fusk. Om vi har en misstanke om fusk har vi en skydlighet att anmäla detta till disciplinnämnden. För övrigt kommer du att vara mindre beredd på P-uppgifterna, så att fuska innebär alltid att förstöra för sig själv.

Tidplanering för O-uppgifterna

I kurskartan finns längst till vänster en kolumn med mjuka och hårda deadlines i kursen.

  • Mjuka deadlines anger takten för att vara i fas med kursens O-uppgifter i "labserien" (gäller inte P-uppgifter). Det är rekommenderat att vara klar (Mörkgrön, alltså assistentgodkänd) med alla O-uppgifter i kurskartan fram till och med de uppgifter som ligger till höger om en mjuk deadline.

    Observera att en mjuk deadline endast är en rekommendation för att inte behöva stressa i kursen senare.

  • Hård deadline anger när kursen är slut. Efter denna deadline tar vi inte emot några fler uppgifter i kursen och du är välkommen tillbaka nästa gång kursen går. D.v.s inte ens kompletteringar är möjliga att göra efter hård deadline så sätt en egen deadline så du hinner med eventuella kompletteringar.

Vissa uppgifter i kurskartan blockeras av någon/några andra uppgifter. Detta betyder att ALLA uppgifter fram till och med den blockerande uppgiften måste vara helt godkända av assistent för att den blockerade uppgiften skall kunna skickas in för automaträttning. Detta beror dels på att förkunskaperna behövs från det som blockerar och dels på att det kommer finnas uppgifter där det är SAMMA fel som kommer att dyka upp igen på den blockerade uppgiften om man inte korrigerat de tidigare delarna (ex. Ada.O5 bygger helt på Ada.O4). Detta ger dessutom assistenterna möjlighet att hinna rätta fortare och ni får på det viset bättre respons.

Om du "hovrar" muspekaren över en uppgift i kurskartan kan det dyka upp en informationstext gällande denna uppgift. I denna informationstext står det angivet om denna uppgift blir blockerad av någon tidigare. Det står även nuvarande status på denna uppgift.

OBS! Man kan alltså skicka in saker för automaträttning på nästföljande uppgift(er) så länge det inte finns en blockering. Man kan alltså direkt man fått godkänt från automaträttningen på Ada.O0 börja skicka in Ada.O1.1 vllket gör att du inte fastnar utan direkt kan komma framåt. OBS! Det är viktigt att förstå att du inte hinner med att vänta på att en uppgift skall assistenträttas innan du börjar med nästa. Det gäller alltså att vara lite framåttänkande.

Hoppas att detta kan hjälpa er att kunna få till en egen planering för att bli klar med kursen.

Samarbeta på O-uppgifter

Samarbete vid O-uppgifter

Tanken med O-uppgifterna är att man ska arbeta två och två. Om det är udda antal studenter eller att man inte hittar någon att arbeta tillsammans med finns det egentligen två vägar:

  1. Arbeta tre stycken: Detta alternativ är helt okej, men tänk på att det är lättare att råka ut för att bli det "tredje hjulet" vilket ofta tyvärr leder till att man inte lär sig lika mycket och därmed får svårare att klara P-uppgifterna. Dessa kräver djupare förståelse och mer vana att lösa problem som man ju får av att problemlösa under kursen.
  2. Arbeta ensam: Detta alternativ vill vi helt undvika då detta gör att assistenterna får mer arbete och det är dessutom meningen att man skall arbeta ihop för att det ger bra effekter på andra områden (förutom att det underlättar i programmeringen). Prata med assistenten om du inte hittar någon att arbeta med. Om du vill begära undantag från detta måste du kontakta kursledningen. Att man programmerat innan, har gått kursen tidigare eller har en känsla av att man klarar sig själv är inte anledningar till att arbeta ensam.

När du skickar in O-uppgifterna till rättningssystemet behöver du också tala om vem du samarbetat med. Detta gör du med en samarbeteskommentar (se nedan).

Uppgifter assistenträttas bara efter att alla i gruppen har skickat in. Se därför till att alla i gruppen skickar in samma dag så att ni inte behöver vänta på att få tillbaka uppgiften. Om någon inte skickat in hamnar resten i väntekö, så skicka in så fort som möjligt om du inte hunnit skicka in samma dag.

OBS! P-uppgifter får man inte samarbeta på!

Samarbeteskommentarer

När du skickar in uppgifterna till rättningssystemet behöver du berätta vem du samarbetat med. Detta gör du med en eller flera samarbeteskommentarer längst upp i programfilen som du skickar in. Om du skickar in flera filer räcker det med att samarbeteskommentarerna finns i en av filerna. Följ formatet nedan:

-- <DITT LIU-ID>: Samarbetat med <DIN PARTNERS LIU-ID>, <FÖRNAMN> <EFTERNAMN>, samma program

Om Torbjörn Jonsson (torjo123) och har samarbetat med Viktor Olsson (vikol456) skulle samarbeteskommentaren vara:

-- torjo123: Samarbetat med vikol456, Viktor Olsson, samma program

Viktor skriver så klart motsvarande i sin kod:

-- vikol456: Samarbetat med torjo123, Torbjörn Jonsson, samma program

Om ni är fler än två som samarbetar skriver ni förstås flera rader så att alla kommer med. Om Sandra Stensson skulle (sanst789) vara med i gruppen ovan hade det blivit två samarbeteskommentarer per fil:

-- torjo123: Samarbetat med vikol456, Viktor Olsson, samma program
-- torjo123: Samarbetat med sanst789, Sandra Stensson, samma program

Om din kurs har delar som inte är Ada ska samarbetskommentarerna följa formatet för kommentarer i dessa språk. Det vill säga:

  • Python: # <DITT LIU-ID>: Samarbetat med <DIN PARTNERS LIU-ID>, <FÖRNAMN> <EFTERNAMN>, samma program
  • C++: // <DITT LIU-ID>: Samarbetat med <DIN PARTNERS LIU-ID>, <FÖRNAMN> <EFTERNAMN>, samma program
  • MatLab: % <DITT LIU-ID>: Samarbetat med <DIN PARTNERS LIU-ID>, <FÖRNAMN> <EFTERNAMN>, samma program

Beskrivning av Ada.O-uppgifterna och hur lång tid de tar

Alla uppgifter här finns inte med i alla kurser. Jämför med din kurskarta.

Detta är något som beror väldigt mycket på hur lätt man kommer in i hur det fungerar med de olika områdena som uppgifterna berör. Det finns dock en generell bild av vilka uppgifter som tar mest tid förstås.

Vi börjar dock med att titta på vad uppgifterna är till för.

Introduktionsdelen till verktygen

Denna del är tillagd i kursen för att ni studenter snabbare skall komma i kontakt med de verktyg vi använder. Vissa delar av dessa behöver man förstå hur man "läser" och vissa är mer av karaktären att man skall använda dem.

Ada.O0

Denna uppgift är egentligen bara till för att ni skall komma igång med de flesta av våra verktyg som används i kursen. Denna utförs på första LA-passet och assistenterna hjälper er igenom denna. När man kommit igenom automaträttningen kommer denna att bli helt godkänd.

I denna kommer ni att se att det är viktigt att läsa uppgiften noga och att det är viktigt att man är noggrann med vad programmet gör. Automaträttningen tycker inte om "nästan rätt". Man måste komma igenom automaträttningen för att kunna bli riktigt godkänd på en uppgift. Gäller genom HELA kursen.

Grundläggande delar för att senare kunna problemlösa

För att man skall kunna lösa "alla" problem (d.v.s. de som går att lösa) krävs några få "metoder" och dessa tas upp i dessa grundläggande uppgifter (Ada.O1.1 och Ada.O1.2). För att sen kunna göra detta rent praktiskt behöver man dela upp problemen i mindre delar (Ada.O11.1 och Ada.O2).

Ada.O1.1 - Ada.O1.2

Detta är ett par uppgifter som är väldigt grundläggande som tyvärr många inte helt tar till sig erfarenheterna ifrån vilket man förlorar tid och energi på i uppgifterna i resten av kursen.

Dessa uppgifter är för någon som programmerat innan väldigt "lätta", men har man inte programmerat tidigare kan dessa kännas väldigt tunga. Alltså väldigt olika vad man känner här och det är viktigt att förstå att alla har olika förkunskaper. Vi räknar dock med att förkunskaperna är "noll" så det är normalt att man känner att det är mycket att ta in.

Det är oerhört viktigt att diskutera massor och att inte bara vilja ha "rätt svar" eller den lätta vägen här. Du förlorar massor på att bara "pricka av" dessa uppgifter.

Ada.O11.1

Detta är en "uppvärmningsuppgift" för att komma in i "underprogrammens" underbara värld. Detta är A och O när det gäller problemlösning senare. Underprogram är det vi använder för att dela upp problem i mindre delar och detta kommer att visa sig vara mycket viktigt framöver.

Ada.O2

Detta är en uppgift som börjar "nosa på" de tre olika underprogramsvarianter som finns. Tanken är att ni skall börja fundera på vilken variant som är bäst till vad och hur man hanterar dessa på ett "bra sätt".

Denna uppgift har samma struktur som Ada.P2 som är den uppgift som är den examinationsuppgift som ger betyg 3 (i Ada-delen) i kursen. När du skall klara av Ada.P2 är det dock mer än att ha klarat Ada.O2 som behövs. Kraven är högre där, men det tar vi senare.

Man kan säga att underprogram är det STÖRSTA området inom programmering och problemlösning. Detta tar tid att få kläm på och det är alltså inget konstigt att man behöver mer övning för att klara examinationen i Ada.P2 senare. OBS! Alla kommer inte att klara högre betyg i kursen. Det är precis som alla kurser. Det är dock så att alla bör kunna klara Ada.P2 innan kursen är klar (givetvis finns det saker som ställer till sådant, men engagemang är en nyckel till framgång i detta fall).

Grundläggande "datastrukturer"

Dessa delar är till för att man skall kunna hantera stora datamängder. Detta är av stor betydelse, men är egentligen en ganska grundläggande del.

Ada.O3.1 - Ada.O3.2

Dessa två uppgifter tar upp de delar som gör att man kan lagra mer data i programmet. Uppgifterna utgår ifrån "bilder" där du skall kunna använda/skapa datastrukturerna som visas, fylla dessa med data och sen skriva ut dessa data igen. Denna del är viktig för att du skall kunna hantera data i senare uppgifter.

Viktiga delar i dessa är att man förstår skillnader och likheter i datastrukturerna och förstås att man kan hantera datalagringen på ett bra sätt (rätt sak på rätt plats).

Dessa två leder till Ada.P3 (finns inte med i alla kurser dock) som ger chans till ett lite högre betyg. Mer om den senare. Vi räknar inte med att alla klarar denna nivå, men det är troligt att det är många som gör detta. I den uppgiften är det förstås mer komplexa kombinationer som testas.

Några "bra att ha"-saker

Dessa delar behövs lite då och då för att kunna göra lite mer trevliga program. Dessa delar är det tanken att ni skall kunna läsa in er i princip själva på, men ni har förstås möjlighet att fråga assistenterna om hjälp.

Ada.O11.2

Att kunna skicka in data till programmet innan det startats: Kommandoradshantering.

Ada.O11.3 (frivillig)

Slumphantering. Några olika varianter av hur man slumpar saker.

Problemlösningsdelarna i kursen

Nu har vi kommit förbi de delar där vi har tagit upp saker som är själva "verktygslådan" i programmeringen. Till viss del har det funnits problemlösning i uppgifterna, men på en "enkel nivå".

Nästa steg är att börja problemlösa på lite "högre nivå". Detta innebär att ni skall använda all den kunskap och de erfarenheter ni har sen tidigare i kursen och på egen hand komma fram till hur man löser det som finns i uppgifterna som kommer.

Samtidigt som detta kommer det några små nya teoretiska delar. Några uppgifter har mer problemlösning och vissa har lite mindre. Det är dessutom så att uppgifterna skiljer sig lite i tidsanspråk.

Ada.O4

Denna uppgift tar upp en ny sak (undantag), men det är nog problemlösningen och underprogramsskapandet m.m. som gör att uppgiften känns tyngre. Detta är den uppgift som brukar vara den som tar emot första gången i kursen.

Det är meningen att man skall jobba mycket med underprogram, bufferthantering (som var med i Ada.O1.1) och datastrukturer. Det är i denna uppgift inte givet exakt vad som är vad och hur man skall angripa problemen, men det finns en del givna krav.

Efter denna uppgift har du nog mycket större chans att klara Ada.P2 än du haft tidigare. Denna uppgift är nog den som ni kommer att tycka är den som är mest frustrerande i kursen, men också den som ger allra mest hittils. Det är nu det gäller att bita i och att diskutera och fundera och försöka komma på nya vägar till att lösa problemen som dyker upp.

Att läsa uppgifterna noga har vi pratat mycket om. Detta visar sig mer och mer att det är det som behövs för att lyckas. Att "slarva" med förarbetet gör att man lägger mer tid på uppgiften. Att rita figurer och prata om HUR man tänker blir mer och mer viktigt. Här visar det sig ofta att man missar mycket om man "tar genvägar" och vill ha svar på frågor som "vad skall jag skriva" eller "vilken rad är det fel på".

I denna uppgift kommer det ofta in saker som att kunna hitta sina fel i programmet. Detta är en stor del i programmeringen (felsökning). Bra kommentarer i programmet ger ofta lättare att komma rätt och att finna felen. Beskriva hur man tänker ger mer än att någon ger svar på var felen finns.

Felsökning innebär också att man måste börja tänka på vilka test man skall göra. Gränsfall är viktiga. Också generella fall förstås. Att kunna komma på vad man skall skriva för att "krascha" ett program eller få det att gå fel är en "konst". Det kräver kreativitet och att man förstår en massa grunläggande saker.

OBS! Målet är inte att ni skall bli proffs på felsökning, men det ingår en del i detta så att man kan komma förbi automaträttningen lite snabbare.

OBS! O-uppgifterna har fler och snälla testfall som gör att ni slipper göra alltför mycket testning själva, medan P-uppgifterna saknar testfall i automaträttningen så där behöver ni själva tänka igenom mer.

Ada.O5 (ingår inte i alla kurser)

Denna uppgift är en fortsättning på Ada.O4 (det är meningen att man skall ha Ada.O4 klar innan man gör Ada.O5). Om man jobbar med Ada.O5 och har Ada.O4 inne för assistenträttning och sen får komplettering på Ada.O4 är det meningen at Ada.O5 skall uppdateras med samma kommentarer. Du förlorar nog tid om du inte fixar dessa innan du lämnar in Ada.O5 då det ger samma fel igen.

I denna uppgift är det också meningen att du skall dela upp ditt program i större enheter (inte bara underprogram) som skulle kunna återanvändas. Fokus ligger mycket på hur du strukturerar dessa så kallade "paket". Det handlar om hur man döljer information utan att man tappar funktionalitet samtidigt som man abstraherar datastrukturer.

Ada.O6

En lite mer teoretisk uppgift mitt bland de mer problemlösningsmässiga. Ett nytt tankesätt tas upp och detta kommer sen att användas i senare uppgift.

Ada.O7 (ingår inte i alla kurser)

Detta är en kombinationsuppgift där en del av studenterna brukar ha lite mer problem med att se helheten. Att rita figurer och ta det steg för steg är av yttertsa vikt. Noggrannhet är förstås också kvar i bilden.

Det handlar om en ny datastruktur, men där vi använder det nya tankesättet från Ada.O6 vilket gör att man måste hålla tungan rätt i mun.

Ada.O8.1

Sista momentet i kurserna (just nu). Denna uppgift handlar om att man skall kunna lagra data och hämta data från disk istället för att mata in detta från tangentbord varje gång programmet körs.

Denna uppgift är en problemlösningsuppgift där vi inte ger tydlig väg att gå utan det är ni studenter som skall nyttja all kunskap från tidigare uppgifter till att lösa helheten. Detta kräver förstås mycket förarbete och tankar och diskussionerna mellan er och med assistenten ger förstås mycket.


Sidansvarig: Torbjörn Jonsson
Senast uppdaterad: 2023-08-21