Tilbake
0.1

0.1 Eksamenskartet — slik testes IN1000

Eksamensformen (én avsluttende 4-timers eksamen, ingen midtveis), den faste 5-oppgave-strukturen, temafrekvensene, sjangerkatalogen A–I og lesestrategien som styrer hele boka.

35 min
4 oppgaver
Eksamenskartetslik testes IN1000
Din fremgang i kapitlet
0 / 4 oppgaver

Fire timer. Fem oppgaver. Ett sett — og så er karakteren avgjort.

IN1000 er et av de mest forutsigbare emnene du kommer til å ta. Oppgavesettet ser nesten likt ut fra år til år: de samme fem oppgavetypene, i den samme rekkefølgen, med den samme poengfordelingen. Det som skifter, er innpakningen — det ene året handler den store oppgaven om et hotell, det neste om en strømmetjeneste. Selve programmeringsøvelsen under er den samme.

Dette kapitlet er kartet. Her får du vite nøyaktig hvordan eksamen ser ut, hvor poengene ligger, hvilke temaer som kommer igjen hvert eneste år, og hvordan du bør bruke tida di. Alt annet i boka henger på det du leser her.

Forkunnskaper — sist du var her

Dette er bokas første kapittel, og det kan leses uten forkunnskaper. Du trenger verken å ha programmert før eller å kunne noe Python for å få utbytte av kartet.

Har du aldri skrevet en linje kode, kan du gjerne bla gjennom
Programmering med Python eller
Programmering med Python først — begge er myke innganger på et lavere nivå enn IN1000, og de tar en time hver. Men det er ikke nødvendig:
kap. 1.1 begynner helt fra bunnen.

Løkke 1 — Eksamensformen (~6 min)

Du sitter på et eksamenslokale med en PC som kjører Inspera, UiOs digitale eksamenssystem. Du har fire timer. Du har med deg alt du har skrevet ut og skrevet ned selv — men ingen maskin å kjøre koden på.

Det siste er det viktigste å ta innover seg: du kan ikke teste koden din.
Alt du skriver, må være riktig i hodet ditt før det treffer skjermen. Derfor er kodesporing — å kjøre et program mekanisk i hodet — en så tung ferdighet i denne boka.

Inspera

UiOs digitale eksamenssystem. Du svarer direkte i nettleseren: noen felt er avkryssing (flervalg), noen er små tekstfelt der du skriver et svar, og noen er store felt der du skriver kode som fritekst.

To praktiske detaljer det er verdt å vite på forhånd. Du kan veksle språk
øverst på siden mellom bokmål, nynorsk og engelsk — hele settet finnes i alle tre. Og du kan svare på oppgavene i hvilken rekkefølge du vil; systemet holder styr på hva du har fylt ut.

Hjelpemiddelfri eksamen

I IN1000 betyr «hjelpemiddelfri» noe mer sjenerøst enn ordet antyder: alle trykte og skrevne hjelpemidler er tillatt, men ingen elektroniske.

Du kan altså ta med læreboka, utskrifter, egne notater og et håndskrevet ark med kodemønstre. Det du ikke har, er en Python-tolker, søkemotor eller dokumentasjon på nett. Konsekvensen er praktisk: lag deg et notatark med de mønstrene du vet du blir treg på, og øv på å skrive kode uten å kjøre den.

100 poeng er hele karakteren

Eksamenssettet er verdt 100 poeng, og de 100 poengene er hele karakteren i emnet. Til forskjell fra nabofagene IN1900 og IN1010 har IN1000 ingen midtveiseksamen som teller.

Det du må ha i orden på forhånd, er de obligatoriske innleveringene: de må være godkjent for at du skal få gå opp til eksamen, men de gir ingen poeng på karakteren.

Poengene per oppgave er trykt i settet, og de er den beste veiledningen du får:
poengfordelingen er vektingen. En deloppgave til 12 poeng skal ha tolv
poengs innsats, en til 2 poeng skal ikke ha det.

✏️Eksempel 1: Fire timer omregnet til poeng per minutt

Settet er på 100 poeng og eksamen varer 240 minutter. Hvor mye tid «koster» ett poeng, og hvor mye tid bør den store klassemodelleringsoppgaven (Oppgave 4, om lag 48 poeng) få?

Regn det enkleste regnestykket først: 240 minutter delt på 100 poeng er
2,4 minutter per poeng.

Oppgave 4 er om lag 48 poeng. Etter den rene forholdsregningen skal den ha
48 ganger 2,4 minutter, altså 115 minutter — nesten to timer av de fire.

Men du skal ikke bruke hele tida på å produsere: du trenger tid til å lese settet i starten og til å lese gjennom svarene til slutt. Et realistisk budsjett ser derfor slik ut:

PostTid
Lese hele settet før du begynner10 min
Oppgave 1 og 2 (skallet, cirka 17 poeng)35 min
Oppgave 3 (små funksjoner, cirka 28 poeng)55 min
Oppgave 4 (klassemodellering, cirka 48 poeng)100 min
Oppgave 5 (nøstede strukturer, cirka 9 poeng)25 min
Kontroll og opprydding15 min
Sum240 min

Legg merke til at Oppgave 4 får litt mindre enn de 115 minuttene forholdsregningen ga. Det er med vilje: de første poengene i en oppgave er alltid billigere enn de siste, og Oppgave 1 og 3 gir raske poeng du ikke har råd til å la stå.

📝Oppgave 1

(Refleksjonsoppgave — planlegging.) Du har 240 minutter på eksamen, og du vet at skallet (Oppgave 1 og 2) er verdt cirka 17 poeng til sammen.

a) Hvor mange poeng per minutt er skallet verdt hvis du bruker 35 minutter på det?

b) Er det en god eller dårlig avkastning sammenlignet med gjennomsnittet for hele settet?

c) Nevn én grunn til at du likevel ikke bør bruke mer enn cirka 35 minutter der.

Løkke 2 — De fem oppgavene (~8 min)

Eksamenssettet har vært bygget over den samme malen siden 2018. Fem oppgaver, i denne rekkefølgen, med denne vektingen:

OppgaveHva du gjørPoengAndel
1Leser små programmer og skriver hva de skriver utcirka 8cirka 8 %
2Krysser av på flervalg om objekter og referanser8–9cirka 9 %
3Skriver tre til fem små funksjoner27–31cirka 28 %
4Bygger en hel liten modell av samarbeidende klasser47–50cirka 48 %
5Skriver to funksjoner over nøstede strukturer9–10cirka 9 %

To tall er verdt å feste seg ved. Oppgave 4 alene er nesten halve eksamen. Og til sammen er Oppgave 3, 4 og 5 — der du selv skriver kode — cirka 83 % av poengene. Skallet du krysser av og fyller ut i starten, er cirka 17 %.
Det betyr ikke at skallet er uviktig. Det betyr at boka bruker Del 6 på den store modelleringen, og at du bør gjøre det samme.
Oppgave 1 — kodeforståelse

Fem til sju små deloppgaver der du får noen linjer Python og skal skrive
nøyaktig hva programmet skriver ut, eller hvilken verdi en variabel har til
slutt. Dette er sjanger A. Til sammen cirka 8 poeng, 1–3 poeng per deloppgave.

I de nyere settene rettes denne oppgaven automatisk: en maskin sammenligner det du skrev, med fasitverdien. Da må svaret være eksakt — riktig type og ingen pynt. Skriver du 18.0 der svaret er heltallet 18, eller setter anførselstegn rundt en tekst som ikke har dem i utskriften, blir det galt selv om du tenkte riktig.

Drillen for denne sjangeren er kap. 4.1.

Oppgave 2 — objekt-flervalg

En felles kodesnutt med to klasser, og deretter tre til fire flervalgsspørsmål om den: hva skriver dette ut, hvilke påstander er sanne, hva peker på hva? Dette er sjanger B. Til sammen 8–9 poeng.

Temaene er alltid de samme fire: referanser (at to navn kan peke på det samme objektet), self (hvordan et objekt husker sine egne data),
scope (hvilke variabler som er synlige hvor) og grensesnitt (hva som er
en klasses offentlige ansikt utad).

Ett råd som er verdt poeng hvert år: kryss alltid av. Blankt og galt gir samme uttelling, nemlig null. Et kvalifisert gjett er derfor alltid bedre enn tomt felt.

Drillen for denne sjangeren er kap. 5.5.

Oppgave 3 — små funksjoner

Tre til fem korte funksjoner du skriver selv, hver på fire til åtte poeng, til sammen 27–31 poeng. Dette er sjangrene C, D og E: en funksjon over en liste, en over en ordbok og som regel en over en tekststreng.

Oppgavene er små og velavgrensede — «tell hvor mange», «finn den som har flest»,
«bygg en ny liste med bare noen av elementene», «lag en oppslagstabell fra denne lista». De samme fem–seks løsningsmønstrene dekker dem alle, og de drilles i
kap. 3.4.

Oppgave 4 — stor klassemodellering

Den store oppgaven: 47–50 poeng, altså nesten halve eksamen. Dette er sjanger F.

Du får en beskrivelse av et lite system — et hotell, en samling ukeplaner, en strømmetjeneste — og skal bygge flere samarbeidende klasser som modellerer det. Oppgaven er delt i seks til sju deloppgaver som bygger på hverandre: sett opp klassene, skriv konstruktøren, lag metoder som henter og endrer, la den ene klassen holde mange av den andre, les data fra en fil, skriv en metode som finner «den beste» av noe, og gjør objektet pent utskrivbart.

Fordi deloppgavene henger sammen, er det lett å tro at man må ha alt riktig. Det må man ikke: hver deloppgave vurderes for seg, og du har lov til å bruke en metode oppgaven beskriver, selv om du ikke selv fikk skrevet den.

Hele Del 6 i denne boka handler om denne ene oppgaven.

Oppgave 5 — nøstede strukturer

To funksjoner over nøstede strukturer — lister inni lister, eller ordbøker der verdien selv er en ordbok eller en liste. Dette er sjanger G. Til sammen
9–10 poeng.

Oppgaven er den lille søsteren til Oppgave 3, men med ett nivå ekstra: du må holde styr på både det ytre og det indre nivået samtidig. Det trenes i
kap. 8.2.

✏️Eksempel 2: Hvor ligger poengene egentlig?

En student har god kontroll på kodesporing og de små funksjonene, men har aldri øvd på den store modelleringsoppgaven. Hvor mange poeng kan hun regne med, og hva er den billigste måten å forbedre karakteren på?

Regn på det hun kan. Oppgave 1 (cirka 8 poeng), Oppgave 2 (cirka 9) og Oppgave 3
(cirka 28) er 45 poeng til sammen. Oppgave 5 (cirka 9) ligner Oppgave 3 nok til at hun trolig får noe der også — si halvparten, altså 4–5 poeng. Det gir rundt
50 poeng av 100, og forutsetter at hun treffer nesten perfekt på alt hun kan.

Så kommer Oppgave 4: cirka 48 poeng hun i praksis lar stå. Selv om hun ikke får til hele modellen, er de første deloppgavene der — sett opp klassene, skriv konstruktøren, lag en aksessormetode — de enkleste i hele oppgaven. Å kunne bare de tre første deloppgavene kan gi 15–20 poeng.

Konklusjonen: den billigste forbedringen ligger ikke i å bli enda skarpere på
det hun allerede kan, men i å komme i gang på Oppgave 4. Det er derfor Del 6 er bokas største del, og derfor den står øverst på lista over stoffet som må sitte.

📝Oppgave 2

(Refleksjonsoppgave — prioritering.) Sett opp din egen leseplan i tre linjer.

a) Hvilken av de fem oppgavene ville du tapt mest på å ikke ha øvd på?

b) Hvilke to oppgaver gir raskest poeng per time du legger inn nå?

c) Hvor mange av de fire timene planlegger du å bruke på Oppgave 4?

Løkke 3 — Temaene som kommer igjen (~6 min)

Frekvenstallene under er telt i 6 moderne eksamenssett (H2014, H2018, H2020,
H2022, H2023 og H2024). «6 av 6» betyr at temaet er å finne i hvert eneste av dem, som egen oppgave eller som tydelig deloppgave.

TemaFrekvensHvor i boka
Løkker og betingelser6 av 6 (100 %)kap. 1.2, kap. 1.3
Funksjoner6 av 6 (100 %)kap. 2.1
Kodeforståelse, «hva skrives ut»6 av 6 (100 %)kap. 4.1
Klasser og objekter, modellering6 av 6 (100 %)hele Del 6
Lister6 av 6 (100 %)kap. 3.1
Ordbøker6 av 6 (100 %)kap. 3.2
Variabler og datatyper6 av 6 (100 %)kap. 1.1
Referanser, self og scope6 av 6 (100 %)kap. 5.4
Filbehandling5 av 6 (83 %)kap. 7.1
Strenger5 av 6 (83 %)kap. 3.3
Enkel algoritmikk inne i klasser5 av 6 (83 %)kap. 6.3
Nøstede lister og ordbøker4 av 6 (67 %)kap. 8.1
Terminal-interaksjon3 av 6 (50 %)kap. 6.4
Pen objektutskrift3 av 6 (50 %)kap. 5.3
«Finn feilen» og moteksempel3 av 6 (50 %)kap. 4.2
Grensesnitt som begrep2 av 6 (33 %)kap. 5.2

Åtte temaer står på 6 av 6. Det er ryggraden: løkker og betingelser,
funksjoner, kodeforståelse, klassemodellering, lister, ordbøker, variabler og datatyper, og referanser med self. Treffer du disse, har du mesteparten av settet.
Sjanger H — terminal-interaksjon

Å be brukeren om noe i terminalen, og spørre om igjen til svaret er gyldig.
Forekommer i 3 av 6 moderne sett (50 %), 5–7 poeng, og ligger nesten alltid som en deloppgave inne i den store Oppgave 4.

Mønsteret er alltid det samme: spør én gang, og gjenta spørsmålet i en løkke så lenge svaret ikke er gyldig. Den vanligste feilen er å spørre bare én gang og håpe på det beste.

Trenes i kap. 6.4.

Sjanger I — «finn feilen» og moteksempel

Du får et program som stort sett virker, men som gir galt svar i visse tilfeller, og skal peke ut feilen. Forekommer i 3 av 6 moderne sett (50 %), 2–6 poeng, og opptrer både som flervalg («pek ut alle feilene») og som fritekst.

Det avgjørende kravet: når oppgaven ber om det, skal du gi et konkret moteksempel — ett bestemt kall med bestemte verdier som gir galt svar — ikke bare en forklaring i ord. «Funksjonen tar ikke hensyn til like verdier» er en halv besvarelse; «kallet storst(4, 4, 4) gir None i stedet for 4» er en hel.

Trenes i kap. 4.2.

📝Oppgave 3

(Refleksjonsoppgave — lesestrategi.) Du har fire kvelder igjen før eksamen og rekker ikke å lese hele boka.

a) Hvilke tre temaer fra frekvenstabellen ville du prioritert, og hvorfor?

b) Hvilket tema på lista ville du droppet først?

c) Hva er argumentet for likevel å bruke én av de fire kveldene på et
komplett øvingssett?

Løkke 4 — Sensors spilleregler (~7 min)

Innledningen til oppgavesettet inneholder de samme setningene hvert år. De ser ut som formaliteter, men de er i praksis fire løfter om hvordan du blir vurdert
— og de er verdt poeng hvis du tar dem på ordet.

Delkarakter per deloppgave

Hver deloppgave vurderes for seg. Setter du deg fast på deloppgave c, kan du hoppe rett til d og få full uttelling der.

Enda viktigere: du har lov til å bruke en metode oppgaven beskriver, selv om du ikke selv har skrevet den. Ber deloppgave d deg om å skrive en metode som bruker finn_ledig fra deloppgave c, kan du kalle finn_ledig som om den var ferdig — selv om ditt eget forsøk på c står tomt.

Praktisk regel: stå aldri fast. Et halvferdig forsøk med riktig idé gir poeng; et blankt felt gir null.

Egne forutsetninger

Er en oppgavetekst uklar eller ufullstendig, har du lov til å gjøre dine egne rimelige forutsetninger — så lenge du beskriver dem.

Måten du gjør det på, er en kort kommentar i koden: en linje som begynner med
#, der du skriver hva du har antatt. «Antar at hvert medlem har unikt navn» er nok. Du kan på samme måte legge til egne hjelpemetoder ved behov, så lenge du kommenterer kort hva de gjør.

Dette er den ene situasjonen der kommentarer i koden gir uttelling. Ellers belønner ikke sensor kommentarer.

Auto-retting

I de nyere settene rettes Oppgave 1 maskinelt: det du skriver i svarfeltet, sammenlignes tegn for tegn med fasitverdien.

Tre konsekvenser å øve inn:

- Riktig type. Er svaret heltallet 18, skriv 18 — ikke 18.0.
- Ingen pynt. Er svaret teksten hei, skriv hei — ikke 'hei' og ikke
"hei", med mindre anførselstegnene faktisk er en del av utskriften.
- Eksakt utskrift. Skriver programmet 3 7 med ett mellomrom mellom, skal
svaret ditt ha nøyaktig ett mellomrom.

Boka gjengir derfor alle utskrifter nøyaktig slik terminalen viser dem, og all kode i boka er faktisk kjørt.

Grunnkonstruksjon-stilen

Løsningsforslagene i IN1000 er skrevet i en bevisst enkel og eksplisitt stil:
for- og while-løkker, if/elif/else, funksjoner, lister, ordbøker og klasser. Ikke mer.

Der en erfaren Python-programmerer ville brukt en ferdig snarvei for å telle eller finne det største elementet, teller fasiten heller manuelt med en løkke.
Det er ikke fordi snarveiene er gale — det er fordi kurset tester at du kan mekanikken under. En eksplisitt løkke som virker, gir full uttelling; en snarvei du husker halvveis, gir sjelden det.

Boka bruker derfor grunnformen overalt, og sier fra hver gang en snarvei finnes.

Løkke 5 — Leseplanen og hva som ikke er pensum (~8 min)

Boka deler stoffet i tre nivåer, etter hvor mye poeng det er i temaet. Nivåene går igjen i hvert kapittel, og de styrer hvor mye tid du bør bruke.

Prioritetsklassene: må sitte, må kunne, bør kjenne

Bokas tre nivåer, i synkende rekkefølge:

- Må sitte (nivå 1): stoff som er på hvert eneste sett og bærer mesteparten
av poengene — klassemodelleringen i Del 6, funksjonsskrivingen i Del 3, klasser og self i Del 5, kodesporingen i Del 4 og filinnlesingen i Del 7.
Her skal du kunne skrive mønsteret fra bunnen, uten oppslag.
- Må kunne (nivå 2): stoff som kommer ofte nok til å avgjøre karakteren i
grenselandet — nøstede strukturer i Del 8, terminal-interaksjon og pen objektutskrift. Her skal du kjenne mønsteret godt nok til å komme i gang.
- Bør kjenne (nivå 3): stoff som dukker opp av og til, og som gir noen få
poeng — «finn feilen» med moteksempel, og grensesnitt som begrep. Her holder det å ha lest og forstått.

Merk at «må sitte» handler om mønsteret, ikke om plettfrihet. Riktig struktur med en indeksfeil gir god uttelling.

Utenfor pensum i IN1000

Flere temaer som står i vanlige Python-bøker, testes ikke på denne eksamenen, og denne boka bruker derfor ikke tid på dem:

- Arv, super() og polymorfisme. Nevnes i pensum, men testes i praksis ikke
på eksamen. Dette er hovedstoffet i oppfølgeremnet IN1010, og det er der du skal lære det ordentlig.
- NumPy, plotting, rekker og numeriske metoder. Dette er IN1900-stoff, ikke
IN1000. Se IN1900-boka hvis du tar begge emnene.
- Lenkede strukturer, iteratorer, egendefinerte unntak og tråder. IN1010.
- Rekursjon. Ikke pensum her, og alle løsninger i boka bruker løkke.
- Tallsystem-konvertering og personverns-/etikkoppgaver. Var egne oppgaver i
INF1001-perioden fram til 2016, og er falt bort.

Kort sagt: pensum i IN1000 er smalt, og det er en fordel. Du skal kunne få grunnkonstruksjonene til å sitte ordentlig i stedet for å kjenne mange ting halvveis.

Sjangerkortet A–I — hele eksamen på én side
Mønstrene du må kunne skrive fra bunnen
Feilregisteret #1–#16
📝Oppgave 4

(Refleksjonsoppgave — eksamensdagen.) Du er 150 minutter inne i eksamen. Oppgave
1, 2 og 3 er besvart. Du har akkurat lest deloppgave 4c, som ber deg lese en fil og opprette objektene — og du husker ikke hvordan filinnlesing-løkka avsluttes.

a) Hva gjør du med 4c akkurat nå?

b) Deloppgave 4d ber deg skrive en metode som bruker resultatet fra 4c. Kan
du besvare den?

c) Du har 90 minutter igjen og cirka 55 poeng ubesvart. Sett opp en plan for
de neste 20 minuttene.

Repetisjon — de sju setningene som må sitte

Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.

Skolesaga er en uavhengig læringsressurs og er ikke tilknyttet eller godkjent av Universitetet i Oslo. Dette er ikke offisielt studiemateriell. Les mer.