Tentaplugg
Det enda sättet att lära sig att programmera är att programmera. Att studera exakt samma uppgifter och lösningar flera gånger hjälper inte mycket om det leder till att man lär sig lösningarna utantill istället för att förstå varför ett visst stycke kod löser ett visst problem. Som en tidigare student beskrev det “Jag kände igen alla uppgifter på provet, men alla hade en twist jämfört med vad jag sett förut.”
Detta ligger lite i programmeringens natur. Det finns många mönster och problem som liknar varandra och kan lösas på liknande sätt eller besvarar olika frågor givet samma data. Det är dock ovanligt att man stöter på exakt samma problem mer än en gång. Att liknande men inte exakt samma uppgifter kan förekomma på flera examinationer kan upplevas som att vi lägger till en twist bara för att göra det svårare, men det är bara en reflektion av den här verkligheten.
Uppgifter från kursen
Generellt så är laborationerna tänkta att fungera som förberedelse inför tentan och bästa sättet att klara tentan är att göra labbarna ordentligt och med eftertanke. Gör gärna de utökade uppgifterna för att öva på problemlösning.
Jag inser dock att många vill ha mindre och mer avgränsade uppgifter i stil med vad som kommer på tentan att öva på. Det naturliga första stället att börja är såklart att titta på exempeltentan och tidigare tentor i kursen. Där finns också extra tentaövningsuppgifter. För mängdträning av grunderna kan det också vara aktuellt att repetera pythonuppgifterna från labb 1, 2 och 3.
Samma problem, flera lösningar
En metod man kan använda är att t.ex. utmana sig själv att hitta flera olika lösningar på samma problem. Detta är något vi får öva på varje gång vi ska göra lösningsförslag till tentor. I vissa fall finns det inte så många olika lösningar, i vissa fall finns det många lösningar som är nästan identiska, i vissa fall finns det fundamentalt olika lösningar som leder fram till rätt resultat. Kan man göra någon bedömning kring vad som är en bättre eller sämre lösning?
En sak att prova är t.ex. att gå igenom alla pythonuppgifterna från kursen, men ge sig själv extra begränsningar eller extra krav. T.ex. försök att lösa alla uppgifter som kräver upprepning en gång med hjälp av rekursion och en gång med en loop. Kan det lösas med både for
och med while
? Gör en av varje. Kan du kombinera flera av uppgifterna och hitta på nya problem den vägen?
Samma scenario, flera problem
Ett annat angreppssätt är att hitta på nya uppgifter baserat på uppgifter man tidigare sett.
- När man t.ex. har en uppgift med nästlade data, kan man komma på andra typer av frågor som kan besvaras med samma data?
- Kan man lägga till eller byta ut någon data i en uppgift för att modellera och lösa ett annat problem?
- Finns det andra problem som har samma struktur, t.ex. dict:ar i dict:ar istället för listor i listor?
- Om man byter namn på nycklarna i en dict, skulle samma datastruktur kunna beskriva något helt annat (nästan alltid är svaret ja) och i så fall vad? Vad skulle lösningen på det ursprungliga problemet innebära i den nya kontexten?
Övningsuppgifter från andra kurser på LiU
Du kan också titta på andra kurser på LiU som använder Python som undervisningsspråk och hitta övningsuppgifter där. Var dock beredd på att dessa kurser inte har exakt samma fokus som vår kurs och överlappet av material inte är 100-procentigt. T.ex. tar ingen av nedanstående kurser upp objektorientering i Python.
Den första kursen att titta på kan vara TDDE23/24 för civilingenjörsprogrammen i datateknik (D) och mjukvaruutveckling (U). Den är nämligen uppbyggd kring en annan pedagogisk modell som innebär att det finns resurser som är bättre anpassade för självstudier. Där finns också en uppsättning med extra övningsuppgifter.
En annan kurs att titta på är TDP002 för kandidatprogrammet i Innovativ Programmering (IP). Det finns bland annat lite självstudiematerial i anslutning till labbarna, en viss del rent övningsmaterial men speciellt finns där väldigt många gamla tentor att titta på. Den här kursen har ett annat tentaupplägg med färre men större uppgifter än vårt upplägg, men de är fortfarande tänkta att lösas under en 4 timmars tenta.
Övningsuppgifter från andra källor
På nätet finns det antagligen mer resurser för att öva på Python än en enskild person kan genomföra under en livstid. Nedan finner du några av dessa. OBS: Vi har inte närmare studerat lämpligheten hos dessa källor utan de ska endast betraktas som ett komplement till kursmaterialet, inte en ersättning av dito. Vissa av tjänsterna kräver registrering för att fungera smidigt och det gör ni i så fall på eget initiativ, detta ska inte ses som en uppmaning att registrera sig hos tredjepartstjänster.
Övningsuppgifter
- edabit
- Kattis
- Project Euler (Mest fokus på matematiska problem.)
- CodeChef
- exercism
Coding interview prep
Flera olika tjänster erbjuder utvecklare möjligheten att lösa sk “intervjufrågor” som ofta ställs på en rekryteringsintervju inför en anställning som programmerare. Dessa är oftast mestadels gratis för utvecklare eller har en “freemium”-modell där basutbudet är gratis men man får betala för utökade tjänster. Uppgifterna är oftast inte språkspecifika utan kan lösas i valfritt programmeringsspråk. Dessa uppgifter är generellt sett mer utmanande eller kräver mer avancerade metoder för att lösningen skall vara effektiv.
Onlinekurser
Mer fokus på att lära sig, mindre fokus på att lösa avgränsade övningsuppgifter.
Programmeringsspel
Spel där man får lösa problem genom att programmera.
Sidansvarig: Johan Falkenjack
Senast uppdaterad: 2025-04-25