725G92 Problemlösning och programmering
Översikt över kursen
Upplägget i "labserien" (Ada.O-uppgifterna, fram till och med Ada.O9)
När du tittar i kurskartan ser du ett antal olika "rutor". Dessa är från början MÖRKGRÅ, VITA och några är GULA. Dessa uppgifter är alltså det som ingår i kursen. När det gäller "labserien" i kursen är det uppgifterna Ada.O0 - Ada.O9 som är av intresse att diskutera.
Alla uppgifter ingår inte i kursen. Dessa är VITA (vilket betyder att de är "utanför kursen"). Det finns även VITA rutor som är rena informationsrutor för att man skall "förstå" sammanhanget i kartan.
De uppgifter som är GULA är obligatoriska och "helt upplåsta" (det betyder att alla tidigare uppgifter som leder till dessa GULA är avklarade, d.v.s. MÖRKGRÖNA).
De flesta av uppgifterna som är MÖRKGRÅ kommer att byta färg till GULT och då är det alltså uppgifter som är obligatoriska.
Vissa uppgifter som är MÖRKGRÅ kommer att byta färg till ROSA vilket innebär att den uppgiften "ingår" i kursen, men är frivillig (d.v.s. den MÅSTE du INTE göra, men innehållet i denna kan ingå i examinationsuppgifter, P-uppgifter, för högre betyg).
Du kommer att märka att andra färger kommer att dyka upp i kurskartan, men dessa kan du se vad de betyder längre ner på sidan.
Vilka uppgifter tar mest tid? Vad är uppgifterna till för?
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.
Examinationsuppgifterna (P-uppgifterna)
Det är viktigt att komma ihåg att examinationen i denna kurs görs på lite annat sätt än många kurser. Den sker kontinuerligt under kursen, men det betyder inte att man direkt man får möjlighet att prova på dessa uppgifter kommer att klara dem.
En "normal" kurs med en tenta i slutet är något som ni nog kan känna är enkel att förstå. Man "lär sig saker" under kursens gång och sen skall man "visa vad man kan" på tentan. Man kan antingen klara uppgifterna på tentan eller så får man gå på omtentor senare. Tentor går tre gånger per år.
Det är inget konstigt att man missar en tenta och det är nog väldigt få som tänker att det är något som är mer besvärligt än att man försöker igen.
Vad är skillnaden i vår kurs då? Jo, examinationen är inte en tenta utan det är i princip en sekvens av "övningsuppgifter" som vi har lite mer krav på. Detta innebär att man alltså normalt sett "går på" ett examinationspass (P-pass) för att göra en P-uppgift och om man klarar denna så får man betyg (redan under perioden man gör O-uppgifterna). Om man inte klarar denna är det förstås inget konstigt utan det man då får göra är att gå på ett nytt P-pass för att klara denna nivå.
Det är alltså normalt att man behöver gå upp på flera P-pass för att klara en P-uppgift, men dessa går en gång i veckan under hela kursen vilket gör att man för varje vecka blir bättre och man kommer närmare målet.
OBS! En stor skillnad gentemot tentor är att dessa går så ofta att man inte "hinner glömma saker" och behöver "börja om". Likheten är att olika nivåer (betyg) kommer att nås av olika studenter beroende på hur långt man kommit när kursen "tar slut".
OBS! Det finns en skillnad mellan "FilFak" och "TekFak" som bara är ett faktum. På FilFak får man inte höja sitt betyg när det väl ligger i LADOK. På TekFak är detta möjligt. En orättvisa vi inte kan göra något åt (beslutat högt upp), men de som går på TekFak kan alltså "plussa" sitt betyg genom att senare (t.ex. nästa gång kursen går) gå på P-pass för att klara P-uppgifter för högre betyg.
En jätteviktig sak är att P-uppgifter gör man på egen hand. Det är en personlig examination på samma sätt som för tentor.
Det finns "massor" av P-uppgifter så om man missar en så kommer det fler. Du kan dessutom själv välja när du är nöjd (d.v.s. du behöver inte fundera på om du kommit upp till betyg 3/G eller annat). Det är en P-uppgift per betygsnivå (ibland finns det flera alternativa uppgifter).
P-uppgifterna
Olika kurser har olika uppsättningar av dessa, men här följer en beskivning av dem alla. Du får själv matcha dem mot din kurskarta.
Dessa uppgifter sker på P-pass där inskickning av uppgifterna endast kan ske om du har uppgiften helt upplåst.
P-passen är tidsbegränsade (normaltid är 75 minuter) och som vanligt måste uppgiften passera automaträttningen för att komma till asisstenträttning (och ha chans till att bli godkänd). Man har tillgång till automaträttningen under hela P-passet.
Om man inte får godkänt på en uppgift gör man en ny nästa gång det finns ett P-pass i kursen.
När man klarat en nivå (vi säger Ada.P2), d.v.s. fått godkänt vid assistenträttningen, så kan man prova på nästa nivå (t.ex. Ada.P3) på nästa tillfälle.
Om man inte klarar en uppgift är det viktigt att man tar med sig tankarna man har och diskuterar med assistenten vad som är problemen man stött på. OBS! Det blir ny uppgift nästa gång så det gäller att förstå. Inte att få "facit" och försöka lära sig utantill.
- Ada.P2
En uppgift som har samma struktur som Ada.O2 så principen är given, men i detta fall har man alltså mindre med tid på sig och man har bara sig själv att arbeta med. Frågor får ställas via det system som används under P-passen.
Denna uppgift skall man alltså INTE känna att man SKALL KLARA direkt. Denna uppgift motsvarar att man nått upp till godkänt i kursen i slutet av kursen.
Det finns heller inte några P-pass alldeles i början av kursen utan vi väntar lite med dem för att ni skall ha större chans att klara dem.
Uppgiften är dimensionerad för att klaras av på ca 30-40 minuter (alltså gott om tid för att hinna fixa "småfel" som automaträttningen ger som respons).
OBS! Om man inte hinner med inom P-passets tid behöver man öva mer. Det är absolut så att du kommer bli snabbare allteftersom du "övar" på fler P-uppgifter.
- Ada.P3
Denna uppgift bygger på att man är klar med allt fram till Ada.O3.2 och det är en "enkel" uppgift när man förstått hur bilden man får blir till en lite mer komplex datastruktur. Det är lite annan typ av problemlösning i uppgiften. Det handlar mer om att tolka saker och finna utvägar för att lagra data på rätt sätt.
Även om uppgifterna som olika studenter får ser väldigt olika ut är de likvärdiga i svårighetsgrad. När man väl förstår upplägget och hur datastrukturerna "samarbetar" är detta en "rak uppgift".
Uppgiften är dimensionerad för att klaras av på ca 40-50 minuter (alltså lite mindre tid för "småfixar").
OBS! Övning ger färdighet och man kommer närmare att klara uppgiften för varje gång man provar uppgifter.
- Ada.P5 och Ada.P8
Dessa uppgifter har både problemlösning och annat som ingår i kursens alla moment som öppnar denna uppgift. Nu pratar vi om högsta betyg i kursen så det är inte så mycket extra tid för att fixa små detaljer utan dessa måste man ha kommit på hur man jobbar sig förbi snabbare.
Om båda uppgifterna finns att göra är det alltså en av dem du skall göra. Du väljer själv vilken.
Uppgiften är dimensionerad för att man skall klara dem på ca 60 minuter. Detta ger inte så mycket tid för "småfixar" och inte heller så mycket tid för att "göra om" saker man tänkt galet. Det är alltså viktigt att man tagit med sig de lärdomar som tipsats om under kursen för att klara denna uppgift.
Som alltid är det viktigt att ha i minnet att ju fler gånger man övar på saker desto bättre och snabbare blir man.
Beskrivning av kurskartan nedan
Kurskartan ("bilden" nedan med rutor och pilar) visar i princip alla moment som finns i kursen och dessutom kommer ni vidare via länkarna (som ligger bakom de flesta av figurerna i bilden) till de delar som har med just denna del i kursen.
En liten genomgång av vad de olika delarna i bilden representerar kan vara på sin plats.
Rutorna i "nätverket" och deras färger
Till att börja med är det viktigt att veta att de olika rutorna med text inuti generellt sett är länkar till de underliggande delarna som handlar om detta "område" eller motsvarande. Klickar man t.ex. på rutan med "Ada.OØ" så kommer man till informationssidan som har med "område noll" att göra. En uppgift som mer är som en kursinformationsuppgift, men den innefattar dock en massa saker som gör att ni senare kan arbeta mer på egen hand med programmeringen.
För att komma tillbaka till denna översiktsbild får man "backa" i sin webbläsare eller gå via alternativen i menyn på hemsidorna (där man förstås kan komma till andra delar också).
Färgerna på rutorna är något som ni kommer att få nytta av lite senare. Färgerna representerar olika saker och här kommer en tabell med deras betydelser:
Obligatorisk | Frivillig | Ej i kursen | P-uppgift | Betyg/LADOK | |
---|---|---|---|---|---|
Ej rättad och låst | Svart | Mörkgrå | Vit | Svart | Svart |
Ej rättad och upplåst | Gul | Magenta | Ljusbeige | Gul | Gul |
Autorättad som upplåst med resultatet "Räcker ej för godkänt" | Ljusorange | Ljuslila | Ljusbeige | Ljusorange | --- |
Autorättad som upplåst och automatgodkänd | Ljusgrön | Ljusgrön | Mörkbeige | Ljusgrön | --- |
Ej rättad och övningsupplåst | Ljusgrå | Ljusmagenta | Ljusbeige | --- | --- |
Autorättad som övningsupplåst med resultatet "Räcker ej för godkänt" | Ljusorange | Ljuslila | Ljusbeige | --- | --- |
Automaträttad som övningsupplåst och automatgodkänd | Ljusblå | Ljusblå | Mörkbeige | --- | --- |
Assistenträttad med resultatet "Räcker ej för godkänt" | Mörkorange | Mörklila | Ljusbeige | Mörkorange | --- |
Assistenträttad och godkänd | Mörkgrön | Mörkgrön | Mörkgrön | Mörkgrön | Mörkgrön |
OBS! För Ada.P2.0 och Ada.P3.0 gäller att dessa följer färgerna i kolumnen "Obligatorisk". Det är också viktigt att veta att dessa uppgifter endast görs under själva P-passen och att du endast kan göra dessa uppgifter när de varit upplåsta när uppgifterna genererades. Generering av uppgifterna sker normalt sett dagen innan P-passet så det räcker alltså inte att låsa upp uppgiften samma dag som P-passet. Det kan alltså vara så att du har en MÖRKORANGE Ada.P2.0 utan att den är upplåst under P-passet.
Vita rutor som inte är uppgifter är såkallade "inforutor" med beskrivningar och information. Dessa går inte att klicka på.
Pilar: Om du "hovrar" (håller musenmarkören över utan att trycka på) en ruta i bilden kommer du att se vilka beroenden som finns mellan olika delar. Bra tips om man undrar varför något inte är upplåst eller vad man senare kan göra om man gjort en viss del. OBS! Alla tidigare beroenden måste förstås vara assistentgodkända för att man skall få en ruta upplåst.OBS! Alla länkar kan man förstås komma till oavsett färg på rutan. Vi tänker inte låsa er, men rekommenderar att de "Gula" rutorna är de som du har förkunskaperna för och det går fortare att komma i mål om man gör sakerna i rätt ordning. Detta är det vi kallar "levling". Det handlar alltså enbart om att ni skall få så mycket hjälp att komma vidare på snabbast sätt.
Det som kommer att hända i kursen är att de "gula" rutorna kommer att motsvara de uppgifter som du kommer att kunna skicka in. Det kommer att vara så att vi kommer att "släppa"/"låsa upp" specifika uppgifter till var och en av er när vi släpper O- och P-uppgifterna. I början är det få uppgifter, men det låses upp mer och mer och du får mer att "leka med" ju längre tiden går och det går att göra flera O- respektive P-uppgifter vid samma tillfälle. Det enda som är relevant är att de är upplåsta.
Sidansvarig: Viktor Olsson
Senast uppdaterad: 2021-08-23