Tilbake
0.1

0.1 Eksamenskartet — slik testes IN1900

Eksamensformen (midtveis + avsluttende), temafrekvensene, sjangerkatalogen og lesestrategien som styrer hele boka.

35 min
3 oppgaver
Eksamenskartetslik testes IN1900
Din fremgang i kapitlet
0 / 3 oppgaver

IN1900 er et emne der eksamen er påfallende forutsigbar. Den samme håndfullen oppgaver har kommet igjen år etter år i mer enn et tiår, bare med ny innpakning: ett år handler det om en epidemi, neste år om en planetbane, året etter om en nervecelle. Under innpakningen er øvelsen den samme.

Dette kapitlet er kartet. Det forteller deg hvordan du blir vurdert, hvilke temaer som faktisk kommer, hva den som retter besvarelsen din ser etter — og hvordan du bør bruke tiden din. Les det først, og kom tilbake til det når du skal planlegge de siste ukene.

Boka er skrevet for deg som aldri har programmert før. Alt forklares fra grunnen, i den rekkefølgen du trenger det.

Slik ser eksamen ut (~8 min)

Emnet vurderes med to digitale eksamener i Inspera, UiOs eksamenssystem. Begge er uten hjelpemidler bortsett fra systemets egen kalkulator, og all kode er Python 3.

EksamenVektVarighetFormPoeng
Midtveiseksamen (oktober)25 %ca. 2 timer effektiv tid100 % flervalg, 20 spørsmålmaks 25
Avsluttende eksamen (desember)75 %4 timer13–16 oppgaver: flervalg først, deretter kodeskrivingmaks 75

De to summerer til 100 poeng, og det er summen som gir bokstavkarakteren.
Tre mekaniske detaljer det lønner seg å vite på forhånd:
1. Den siste «oppgaven» på den avsluttende eksamenen skal ikke besvares. Den heter gjerne oppgave 15, 16 eller 17, og er bare et felt der sensor legger inn poengene dine fra midtveis. Bruk ikke tid på den.

2. Blankt og feil gir det samme på flervalg: null poeng. Fra 2024/2025 er den gamle ordningen med minuspoeng fjernet. Det er derfor aldri en kostnad ved å gjette, og du skal alltid krysse av.

3. Midtveiseksamen deles med parallellemnene IN-KJM1900 og IN-GEO1900. Samme sett brukes i alle tre emnene, og det holder seg derfor til kjernen av fellespensumet — grunnleggende Python, ikke spesialiteter.

Hvor mye er flervalg, og hvor mye er kodeskriving?

Dette er det viktigste formtrekket, fordi de to krever helt ulik trening.

På den avsluttende eksamenen er de 4–7 første oppgavene et flervalgsskall: du leser kode og velger et svar. Det utgjør omtrent 15–25 % av de 75 poengene. Resten — 75–85 % — er fritekst der du skriver kode selv, 3 til 12 poeng per oppgave.

Midtveiseksamen er 100 % flervalg. Av de 20 spørsmålene er 4–5 såkalte matche-tabeller (du parer flere uttrykk med hver sin verdi, 0,5 poeng per rad), resten er «velg ett svar» til 1 poeng.

Regner du de to eksamenene sammen med vektene 25 og 75, blir bildet omtrent 40 % flervalg og 60 % kodeskriving. En god forberedelse trener begge: presis kodesporing for flervalget, og selvstendig koding i den korte stilen den som retter forventer.

Inspera

UiOs digitale eksamenssystem. Du skriver svarene i nettleseren, og koden skrives i et vanlig tekstfelt uten hjelp fra en editor: ingen fargelegging, ingen autofullføring, ingen mulighet til å kjøre programmet.

Praktisk konsekvens for lesingen din: innrykk må sitte i fingrene, og du må kunne stave range, append og linspace uten å slå opp.

Midtveiseksamen

Den første av de to eksamenene, i oktober. Den teller 25 % av karakteren, varer rundt to timer effektivt, og består av 20 flervalgsspørsmål til maks 25 poeng.

Innholdet er nesten utelukkende kodesporing — «hva skriver dette programmet ut?» — sammen med indeksering, boolske uttrykk, løkketerminering og feilhåndtering. Hele Del 1 er skrevet for denne eksamenen.

Avsluttende eksamen

Den andre eksamenen, i desember. Den teller 75 %, varer fire timer og har 13–16 oppgaver til maks 75 poeng.

Formen er fast: et flervalgsskall på de første oppgavene, deretter kodeskriving med økende vekt — en rekke med testfunksjon, en klasse, en differenslikning, et ODE-system og en fillesingsoppgave. Den siste nummererte «oppgaven» skal ikke besvares; den er feltet for midtveispoengene.

Flervalg («select one»)

Et spørsmål med fire–fem alternativer der du krysser av for ett. Verdt 1 poeng på midtveis, 2–3,5 poeng på den avsluttende.

Blankt og feil gir likt, altså null. Kryss derfor alltid av, også når du bare kan utelukke to av alternativene — da er sjansen 50 %, og den er gratis.

Matche-tabell («match the values»)

En tabell med flere rader — typisk fire til sju uttrykk — der hver rad skal pares med ett av en felles liste med svaralternativer. 0,5 poeng per rad, opptil 3,5 poeng.

Radene rettes hver for seg, så en usikker rad er aldri grunn til å la hele tabellen stå tom. De tre vanligste variantene er indeksering og utsnitt (sjanger B), hvilken feil et kall utløser (sjanger C), og om en løkke stopper (sjanger D).

Fritekstoppgave

En oppgave der du skriver koden selv i et tomt tekstfelt. Dette er hovedtyngden av den avsluttende eksamenen, med 3 til 12 poeng per oppgave.

Oppgaveteksten oppgir som regel den nøyaktige signaturen — «skriv funksjonen forward_euler(f, T, N, u0)» — og den skal du skrive av ordrett. Flere deloppgaver kan løses uavhengig av hverandre.

Hjelpemiddelfri eksamen

Ingen bok, ingen notater, ingen internett og ingen mulighet til å kjøre koden. Bare systemets egen kalkulator.

Ett unntak er verdt å merke seg: enkelte oppgaver leverer et vedlegg — typisk ODE-modulen du skal bruke, eller dokumentasjonen for en funksjon fra et bibliotek. Det vedlegget skal du lese nøye, for det kan variere fra år til år.

Karakterskalaen A–F

A er best, E er laveste ståkarakter, F er stryk. Karakteren settes ut fra summen av de to eksamenene, med vektene 25 og 75.

C er en god og vanlig karakter. Den betyr at du behersker de faste mønstrene og leverer kode som virker, med noen småfeil i detaljene. Det er et fullt ut respektabelt resultat i et emne mange tar i sitt første semester, og det er nøyaktig det denne boka er bygget for å gi deg — med god margin oppover for den som også drillet sporingen.

Offisielt løsningsforslag

For hver eksamen publiseres et løsningsforslag med kode og kommentarer. Det fungerer i praksis som en sensorveiledning: det sier hvilke løsninger som gir full uttelling, og hvilke avvik som godtas.

Løsningsforslagene er kilden til alt som står i denne boka om hva som belønnes. De sier gjentatte ganger at fasitens kode bare er ett eksempel på en enkel og kompakt besvarelse som ville fått full score — flere løsninger er like gode.

Delpoeng og delvis uttelling

Poengene på en kodeoppgave fordeles på delene av løsningen, ikke etter «riktig eller galt».

Løsningsforslagene er eksplisitte på tre punkter: riktig overordnet struktur belønnes selv med små indeksfeil; å få alle indekser hundre prosent riktig er nesten umulig under tidspress; og deloppgaver kan løses uavhengig, slik at du kan skrive testfunksjonen selv om du ikke fikk til funksjonen den skal teste.

Praktisk konsekvens: skriv alltid ned det du har. Et halvferdig, riktig strukturert program gir langt mer enn et blankt felt.

Sjangerkodene A–O

Bokas eget system: femten bokstaver for de femten oppgavetypene som går igjen på eksamen. De er ikke offisielle — de er et arbeidsverktøy, slik at hver oppgave i boka kan si hvilken eksamenstype den trener.

Alle femten står i sjangerkortet i dette kapitlet, med oppskrift, typisk vekt og vanligste feil. Hver bokstav skrives dessuten ut i klartekst første gang den brukes i et kapittel, slik at du aldri møter en kald kode.

Feilkodene #1–#24

Bokas register over de feilene som faktisk koster poeng, nummerert fra 1 til 24 og samlet nederst i dette kapitlet.

De tjue første er belagt i eksamensarkivet: de er utledet av kommentarene i de offisielle løsningsforslagene og av hvilke gale svar som brukes som alternativer på flervalg. De fire siste er allmenne Python-feller boka har lagt til; om dem påstås ingenting om hvor ofte de kommer på eksamen. Hvert kapittel forklarer i klartekst de kodene det bruker.

Prioritetsklassene i boka

Hvert kapittel er merket med ett av tre nivåer, ut fra hvor ofte temaet kommer og hvor mye det er verdt:

- Må sitte — temaet har vært i så godt som hvert eneste sett, og bærer mesteparten av poengene. Dette skal du kunne uten å tenke.
- Må kunne — temaet kommer i de fleste sett. Du skal kunne mønsteret, men trenger ikke ha det i fingrene.
- Bør kjenne til — temaet kommer sjeldnere, og skiller de aller beste besvarelsene. Prioriter det sist.

Merkingen er en prioritering av lesetiden din, ikke et krav om plettfri kode. Ingen leverer en feilfri besvarelse på fire timer, og det er ikke det som kreves for en god karakter.

Prioriteringskartet: hva kommer faktisk? (~8 min)

Tabellen under er telt i de åtte avsluttende settene fra 2018 til 2025. «8 av 8» betyr at temaet har vært en egen oppgave eller en tydelig deloppgave i hvert eneste av dem.

TemaForekomstNivå
Kodesporing — «hva skrives ut?»8 av 8 = 100 %må sitte
Klasser med spesialmetoder8 av 8 = 100 %må sitte
ODE-løsere og ODESolver-hierarkiet8 av 8 = 100 %må sitte
Fillesing til ordbok eller lister8 av 8 = 100 %må sitte
Rekke- og sumimplementering8 av 8 = 100 %må sitte
Testfunksjon7 av 8 = 88 %må kunne
Plotting med matplotlib7 av 8 = 88 %må kunne
Lister mot NumPy-tabeller6 av 8 = 75 %må kunne
Feilhåndtering (exceptions)6 av 8 = 75 % (nær 100 % på midtveis)må kunne
Differenslikninger6 av 8 = 75 % (4 av 4 siste)må kunne
Stykkvis eller diskontinuerlig funksjon5 av 8 = 63 %må kunne
Numerisk derivasjon4 av 8 = 50 %bør kjenne til
Streng- og listealgoritmer4 av 8 = 50 % (mest på flervalg)bør kjenne til
Nullpunkt og likningsløsing3 av 8 = 38 %, økendebør kjenne til
Todimensjonale NumPy-tabeller2 av 8 = 25 %bør kjenne til
Numerisk integrasjon1 av 8 = 13 %bør kjenne til

Det viktigste funnet: fem temaer har vært i hvert eneste nyere sett. De er ryggraden i emnet, og de utgjør omtrent 70 % av poengene. Treffer du dem, er du trygt over.

Leseplanen som følger av tabellen

Må sitte — les grundig, gjør alle oppgavene, ta prøvene:

- Del 1 Python-grunnlaget og kodesporing — bærer hele midtveiseksamen.
- Del 3 funksjoner, testing og rekker.
- Del 5 klasser med spesialmetoder — de tyngste enkeltoppgavene, 8–12 poeng.
- Del 7 ODE-løsere — alltid en stor oppgave på 9–10 poeng.
- Del 8 fillesing og datastrukturer, 8–12 poeng.

Må kunne — les, gjør et utvalg oppgaver:

- Del 2 feilhåndtering (særlig viktig for midtveis).
- Del 4 NumPy, vektorisering og plotting.
- Del 6 numeriske metoder og differenslikninger.

Bør kjenne til — les raskt, og bare når du har tid til overs: todimensjonale NumPy-tabeller i kap. 4.1, fast-bredde-lesing av filer i kap. 8.2, nullpunktsmetoder i kap. 6.1, og den mest avanserte ODE-varianten i kap. 7.4.

Sjangerkortet — alle femten på én side

Hva den som retter, ser etter (~7 min)

De offisielle løsningsforslagene gjentar de samme fem metareglene hvert år. De er verdt å kunne, fordi de forteller deg hvor du ikke skal bruke tid.

1. Kort, idiomatisk kode. Løsningene i fasit er korte, og det står eksplisitt at de fleste oppgavene fører til kode med lite behov for kommentarer. Et ekstra hovedprogram, ekstra utskrift eller lange forklarende kommentarer gir ingen uttelling.
2. Rimelige antakelser er lov — men skriv dem ned. Er oppgaven underspesifisert, kan du velge en tolkning. Dokumenter valget i én kommentarlinje. Det er den ene bruken av kommentarer som lønner seg.
3. Ta med de nødvendige import-linjene når oppgaven ber om kjørbar kode.
4. Kryss alltid av på flervalg. Blankt og feil gir likt.
5. Rekursjon — at en funksjon kaller seg selv — er utenfor pensum, og markeres eksplisitt som uønsket i fasit. Alt løses med løkke, også de rekkene der neste ledd er regnet ut fra det forrige.

Og den viktigste av dem alle, som er verdt et eget avsnitt:

Mønstrene du må kunne skrive fra bunnen — og resten kan du lese i vedlegget

Prognose for neste eksamen (~5 min)

Ut fra hvordan settene har sett ut de siste årene, er dette et rimelig anslag. Det er en prognose, ikke et løfte — et nytt sett kan alltid endre bildet.

Midtveis (20 spørsmål, 25 poeng): omtrent 10–12 rene kodesporingsspørsmål med løkker, indeksering, zip, utskriftsdetaljer og variabel-scope; 3–4 matche-tabeller (indeksering i nøstede lister, boolske uttrykk, løkketerminering, «hvilke alternativer er riktige»); 1–2 spørsmål om feilhåndtering; 1–2 om fillesing til ordbok; og ett av typen «hvilken linje mangler».

Avsluttende (13–16 oppgaver, 75 poeng): først et flervalgsskall på 4–7 oppgaver — kodesporing, minst én tabell om feilhåndtering og minst én om indeksering. Deretter kodeskrivingen, i denne rekkefølgen eller nær den:

1. én rekke eller sum, med tilhørende testfunksjon;
2. minst én klasse med spesialmetoder — gjerne en vektor- eller funksjonsklasse;
3. én differenslikning, med plott;
4. ett ODE-system løst med det utleverte apparatet, og plottet;
5. én fillesing til nøstet ordbok, med filtrering.

Til slutt kommer gjerne den vanskeligste oppgaven, som skiller toppkarakterene: en egen ODE-subklasse, eventuelt kombinert med en likningsløser.

Den vitenskapelige innpakningen roterer — epidemi, populasjonsdynamikk, planetbane, nervecelle, vær — men programmeringsøvelsen bak er den samme hvert år. Det er derfor boka øver på mønsteret og varierer innpakningen.

📝Oppgave 1

(Innstegsoppgave — refleksjon om eksamensformen.) Svar kort på hvert punkt.

a) Hvor mange poeng er den avsluttende eksamenen verdt, og hvor mange er midtveiseksamen verdt?

b) Du står fast på et flervalgsspørsmål og har ett minutt igjen. Skal du la det stå blankt eller gjette? Begrunn.

c) Hva er den siste nummererte «oppgaven» på den avsluttende eksamenen, og hva skal du gjøre med den?

📝Oppgave 2

(Refleksjon — sett opp et tidsbudsjett.) Den avsluttende eksamenen varer fire timer og gir 75 poeng. Flervalgsskallet er de 4–7 første oppgavene og utgjør omtrent 20 poeng; kodeskrivingen utgjør de resterende 55.

a) Sett opp et tidsbudsjett i minutter for de to delene, ut fra hvor mange poeng de er verdt.

b) Juster budsjettet ut fra at kodesporing går fort når du har drillet den, mens en klasseoppgave på 10 poeng tar tid. Hva blir din endelige plan?

c) Hvor mye tid setter du av til slutt, og til hva?

📝Oppgave 3

(Refleksjon — planlegg lesingen.) Du har seks uker igjen til den avsluttende eksamenen og kan bruke omtrent åtte timer i uka.

a) Hvilke fem temaer prioriterer du høyest, og hvorfor?

b) Hvor i de seks ukene legger du de to avsluttende øvingseksamenene, og hvorfor ikke begge til slutt?

c) Hvor mye av de åtte timene bør være lesing, og hvor mye bør være egen koding?

Feilregisteret #1–#24

Hva som IKKE er pensum (~3 min)

Like nyttig som å vite hva som kommer, er å vite hva du trygt kan la ligge. Følgende er utenfor pensum i dette emnet, og boka bruker det ikke:

- Rekursjon — at en funksjon kaller seg selv. Det er utenfor pensum og markeres eksplisitt som uønsket i fasit. Alt løses med løkke.
- Objektorientert design utover de fem spesialmetodene og enkel arv: ingen designmønstre, ingen egenskaper med @property.
- Generatorer, dekoratorer og egendefinerte kontekstmanagere.
- map, filter og reduce — bruk vanlige løkker.
- Testrammeverk som pytest eller unittest. Boka bruker enkle testfunksjoner med assert, slik fasit gjør.
- Filformater utover ren tekst — ingen CSV-modul, ingen JSON.
- Biblioteker utenfor det korte pensumet. Du trenger math, numpy, matplotlib.pyplot, sys, og i de tyngste oppgavene én enkelt funksjon fra scipy.

Én ting til, som mange har lært i andre sammenhenger: linja if __name__ == '__main__': gir ingen uttelling i dette emnet og skal ikke skrives. Sensor forventer korte løsninger uten hovedprogram.

Repetisjon — de sju setningene fra dette kapitlet

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.