Eksamenssett logo
eksamenssett.noTren målrettet
  • Ungdomsskole/VGS
  • Høyskole
  • Ressurser
  • Privatundervisning
  • Kontakt
eksamenssett.noTren målrettet

Komplett samling av eksamensoppgaver og løsninger for norsk skole.

Om ossPrivatundervisningPriserSlik bruker du sidenFAQPersonvernVilkårAngrerettKontaktKI-deklarasjon

© 2026 Eksamenssett.no · Alle rettigheter forbeholdt

Innholdet er utviklet med KI og kvalitetssikres kontinuerlig – av modellene, og ved at våre tusenvis av brukere kan melde fra om feil. Slik jobber vi med kvalitet →

Eksamenssett.no eies og drives av Studenthjelp Privatundervisning AS

Org.nr. 913 117 387 (Foretaksregisteret) · Aksel Olsens vei 10B, 1597 Moss · Ikke MVA-registrert

Eksamenssett logo
eksamenssett.noTren målrettet
  • Ungdomsskole/VGS
  • Høyskole
  • Ressurser
  • Privatundervisning
  • Kontakt
eksamenssett.noTren målrettet

Komplett samling av eksamensoppgaver og løsninger for norsk skole.

Om ossPrivatundervisningPriserSlik bruker du sidenFAQPersonvernVilkårAngrerettKontaktKI-deklarasjon

© 2026 Eksamenssett.no · Alle rettigheter forbeholdt

Innholdet er utviklet med KI og kvalitetssikres kontinuerlig – av modellene, og ved at våre tusenvis av brukere kan melde fra om feil. Slik jobber vi med kvalitet →

Eksamenssett.no eies og drives av Studenthjelp Privatundervisning AS

Org.nr. 913 117 387 (Foretaksregisteret) · Aksel Olsens vei 10B, 1597 Moss · Ikke MVA-registrert

Eksamenssett logo
eksamenssett.noTren målrettet
  • Ungdomsskole/VGS
  • Høyskole
  • Ressurser
  • Privatundervisning
  • Kontakt
eksamenssett.noTren målrettet

Komplett samling av eksamensoppgaver og løsninger for norsk skole.

Om ossPrivatundervisningPriserSlik bruker du sidenFAQPersonvernVilkårAngrerettKontaktKI-deklarasjon

© 2026 Eksamenssett.no · Alle rettigheter forbeholdt

Innholdet er utviklet med KI og kvalitetssikres kontinuerlig – av modellene, og ved at våre tusenvis av brukere kan melde fra om feil. Slik jobber vi med kvalitet →

Eksamenssett.no eies og drives av Studenthjelp Privatundervisning AS

Org.nr. 913 117 387 (Foretaksregisteret) · Aksel Olsens vei 10B, 1597 Moss · Ikke MVA-registrert

Eksamenssett logo
eksamenssett.noTren målrettet
  • Ungdomsskole/VGS
  • Høyskole
  • Ressurser
  • Privatundervisning
  • Kontakt
  1. Hjem
  2. Høyskole
  3. UiO
  4. IN1900
  5. Studieguide
IN1900 · UiO

Studieguide for IN1900 Introduksjon til programmering med vitenskapelige anvendelser

Komplett pensumoversikt for introduksjon til programmering med vitenskapelige anvendelser ved UiO — med forklaringer, sentrale begreper, eksamenstips og vanlige fallgruver. Eksamensoptimalisert basert på tidligere eksamener.

Innhold

  • Introduksjon
  • Grunnleggende Python og kodelesing
  • Funksjoner, lambda og summer
  • Testfunksjoner og feilhåndtering
  • Filer, strenger og ordbøker
  • NumPy, vektorisering og plotting
  • Klasser, spesialmetoder og arv
  • Differenslikninger
  • ODE-er: Euler, Runge–Kutta og ODESolver
  • Numeriske metoder: derivasjon, integrasjon og nullpunkter
  • Eksamensstrategi
  • Formelark

Introduksjon

IN1900 Introduksjon til programmering med vitenskapelige anvendelser er UiOs første programmeringsemne for realfagsstudenter. Du lærer Python med vekt på det naturvitere trenger: løkker og lister, funksjoner, filer og ordbøker, klasser, differenslikninger og numerisk løsning av differensiallikninger.

Guiden er bygd på alle 19 ordinære eksamenssett fra 2007 til 2025 og 18 midtveiseksamener fra 2007 til 2025, sammen med UiOs løsningsforslag til hvert sett. Hver deloppgave er klassifisert etter tema, oppgavetype og poeng. Tallene du ser i guiden, som «i 5 av 5 sett 2021–2025», er telt opp fra settene — ikke anslått.

Slik ser eksamen ut i dag

  • Karakteren bygger på 100 poeng: 25 fra midtveiseksamen i oktober og 75 fra den avsluttende eksamenen i desember. Settet har en egen, ubesvart oppgave der sensor legger inn midtveispoengene.
  • Avsluttende eksamen: 4 timer (09–13), digitalt i Inspera, ingen hjelpemidler (en enkel kalkulator ligger i Inspera). I 2021–2025 hadde settene 13–16 oppgaver.
  • Midtveiseksamen: 20–22 flervalgs- og matchoppgaver, 25 poeng, ingen hjelpemidler. Feil svar gir 0 poeng, akkurat som blankt — så du skal alltid svare. (Unntak: i H2021 og H2022 ga oppgaver med to riktige svar −1 per feil avkrysning, minst 0 per oppgave.)

To eksamener, to ferdigheter

Midtveiseksamen tester nesten bare kodelesing: «Hva skrives ut?», «Hvilken linje mangler?», «Hvilket funksjonskall er riktig?». I 2021–2025 sto grunnleggende Python for om lag 16 av de 25 poengene.

Den avsluttende eksamenen er mest kodeskriving. Settet åpner med 5–8 korte lesoppgaver på til sammen 11–24 poeng. Deretter følger 7–9 skriveoppgaver på til sammen 51–64 poeng, den største på 10–12 poeng. Du skriver kode for hånd i en tekstboks, uten å kunne kjøre den.

Hva som teller mest (snitt per 100 poeng, 2021–2025)

TemaPoengSett
Grunnleggende Python og kodelesing≈ 255/5 + 5/5
Klasser, spesialmetoder og arv≈ 145/5 ord.
Filer, strenger og ordbøker≈ 135/5 + 5/5
ODE-er og ODESolver≈ 115/5 ord.
Testfunksjoner og feilhåndtering≈ 105/5 + 5/5
Funksjoner, lambda og summer≈ 95/5 + 5/5
Differenslikninger≈ 84/5 ord.
NumPy og plotting≈ 64/5 + 3/5
Numeriske metoder≈ 54/5 + 4/5

«5/5 + 5/5» betyr at temaet var med på alle fem avsluttende eksamener og alle fem midtveiseksamener 2021–2025.

Hva som har endret seg

  • Stokastisk simulering er borte. Monte Carlo, terninger og myntkast var med i 9 av 10 avsluttende sett 2007–2016, men i ingen av de 18 settene (ordinær og midtveis) fra 2017 til 2025. Det har derfor ikke egen seksjon her.
  • Differenslikninger er tilbake. De manglet i alle fire avsluttende sett 2017–2020, men var med i 4 av 5 sett 2021–2025, på 5–12 poeng.
  • Klasser veier mer. I 2021–2025 har klasser gitt i snitt rundt 14 av 75 poeng på avsluttende eksamen, mot rundt 4 i 2017–2020.
  • ODESolver har ny form. Fra 2023 er høyresiden f(t, u) og løsningen solver.solve(t_span, N). Settene fra 2011–2022 bruker f(u, t), og de fleste av dem solve(time_points). Løser du eldre sett, må du bytte rekkefølgen.

Studerer du bare én ting, så lær deg å spore kode for hånd. «Hva skrives ut?»-oppgaver har vært med i 18 av 19 avsluttende sett og i alle 18 midtveissett.

Grunnleggende Python og kodelesing

Eksamensrelevant

Kodelesing gir i snitt 24,6 av 100 poeng (9,0 p ordinær + 15,6 p midtveis, 2021–2025) og sto i 5 av 5 ordinære sett og 5 av 5 midtveissett. «Hva skrives ut?» finnes i 18 av 19 ordinære sett og alle 18 midtveissett.

Oversikt

Kodelesing er det tyngste enkeltområdet i IN1900 når ordinær eksamen og midtveiseksamen ses under ett. I settene 2021–2025 ga temaet i snitt 9,0 av 75 poeng på ordinær eksamen og 15,6 av 25 poeng på midtveiseksamen – til sammen 24,6 av 100 poeng. Det sto i 5 av 5 ordinære sett og 5 av 5 midtveissett 2021–2025 (17 av 19 ordinære sett og 18 av 18 midtveissett siden 2007). Oppgavetypen «Hva skrives ut?» finnes i 18 av 19 ordinære sett og i alle 18 midtveissett.

Slik ser oppgaven ut på eksamen

TypeEksemplerPoeng
Hva skrives ut? (flervalg)H2025 oppg. 1–2, H2024 oppg. 1, H2025-midtveis oppg. 1–72 p ordinær, 1 p midtveis
Løkke som teller (while med to variabler)H2021 oppg. 1, H2025 oppg. 32 p
Match uttrykk og verdi (indeksering, boolske uttrykk)H2021 oppg. 2 og 5, H2022 oppg. 2, H2023 oppg. 5; midtveis i 5 av 5 sett 2021–20252–3,5 p
Hva gjør funksjonen? / hvilken kode er riktig?H2023 oppg. 3 (sortering), H2025-midtveis oppg. 191–2 p

Sporingstabell – metoden som alltid virker

Lag én kolonne per variabel og én rad per gjennomløp. Skriv ned verdien etter hver linje, og noter utskriften i en egen kolonne. Aldri regn «i hodet» når det er en løkke.

s = 1
for k in range(2, 11, 4):
    s = s * k
    print(k, s)
ksutskrift
222 2
6126 12
1012010 120

range(a, b, d) starter på a, øker med d og stopper før b. Derfor er 10 med (10 < 11), men ikke 14. range(n) har n elementer, range(1, n) har bare n − 1.

Eksempel 1: Løkke som teller

Hva er verdien av n når koden er kjørt? Alternativer: 16, 18, 19, 21.

n = 1
k = 12
while n < k:
    n = n + 3
    k = k + 1
print(n)
  1. Begge variablene endres i hver runde: n øker med 3 og k med 1, så avstanden k−nk-nk−n krymper med 2 per runde.
  2. Startavstanden er 12−1=1112-1=1112−1=11. Etter runde 1–6 er den 9, 7, 5, 3, 1, −1. Løkka stopper først når avstanden er negativ, altså etter 6 runder.
  3. Etter 6 runder er n=1+6⋅3=19n = 1 + 6\cdot 3 = 19n=1+6⋅3=19 (og k = 18).

Svar: 19.

Nøstede løkker og end=' '

print(..., end=' ') avslutter med mellomrom i stedet for linjeskift, så alt havner på én linje. Den indre løkka kjører helt ferdig for hver verdi av den ytre. Merk at range(i, 3) er tom når i ≥ 3.

Eksempel 2: Hva skrives ut? (flervalg)

for i in range(1, 4):
    print(i, end=' ')
    for j in range(i, 3):
        print(j, end=' ')

Alternativer: 112223, 11222, 1122233, 12123 (mellomrom utelatt).

  1. i = 1: skriv 1, deretter j i range(1, 3) = 1, 2.
  2. i = 2: skriv 2, deretter j i range(2, 3) = 2.
  3. i = 3: skriv 3; range(3, 3) er tom, så ingenting mer.

Svar: 1 1 2 2 2 3, altså 112223.

Indeksering i nøstede lister

Regn innenfra og ut: finn indeksen først, slå så opp. liste[i] gir et element, liste[i:i+1] gir alltid en liste med ett element. Negative indekser teller bakfra.

Eksempel 3: Match uttrykk og verdi (midtveisform)

Gitt v = [3, -1, [4], [[0]], 1]. Koble hvert uttrykk til en av verdiene 1, −1, 4, [0], [-1], [[0]].

  1. v[-1] er siste element: 1.
  2. v[v[-1]] = v[1] = −1.
  3. v[v[0]] = v[3] = [[0]].
  4. v[2][0]: v[2] er [4], element 0 er 4.
  5. v[3][0]: v[3] er [[0]], element 0 er [0].
  6. v[1:2] er et utsnitt: [-1], ikke −1.
  7. v[v[1]] = v[-1] = 1.

Svar: 1, −1, [[0]], 4, [0], [-1], 1.

Boolske uttrykk og typer

Presedens: sammenlikning før not, not før and, and før or. Sett usynlige parenteser før du regner.

print(True or False and False)
print(not True or True)
print((True or False) and False)
print(3 > 2 and not 2 > 1)

Utskrift: True, True, False, False. Første linje leses True or (False and False). Heltall ganger flyttall gir flyttall, og / gir alltid float:

r = 2
A = r * 1.5
print(type(r), type(A))
print(7 / 7, 7 // 2, 7 % 2)

Utskrift: <class 'int'> <class 'float'> og 1.0 3 1.

Lokale variabler, referanse og kopi

Eksempel 4: Hva skrives ut?

x = 5
data = [1, 2]
def f(a, liste):
    x = a * 2
    liste.append(x)
    return x + 1
y = f(x, data)
print(x, y, data)
  1. Inne i f er x = a * 2 en ny lokal variabel (10). Den globale x er fortsatt 5.
  2. liste peker på samme listeobjekt som data, så append endrer data.
  3. f returnerer 10 + 1 = 11.

Svar: 5 11 [1, 2, 10]

b = a lager ingen kopi – bare et nytt navn. a[:] (eller a.copy()) lager en ny liste:

a = [1, 2]
b = a
c = a[:]
b.append(3)
c.append(4)
print(a, c)

Utskrift: [1, 2, 3] [1, 2, 4].

Eksempel 5: Hva gjør funksjonen?

t er en liste med tall. Hva returnerer g(t)?

def g(t):
    for i in range(len(t) - 1):
        if t[i] > t[i + 1]:
            t[i], t[i + 1] = t[i + 1], t[i]
    return t[-1]
  1. Løkka sammenlikner naboer og bytter når venstre er størst. Det største tallet «bobler» dermed ett steg mot høyre hver gang det møtes.
  2. Det er bare ett gjennomløp, så lista blir ikke nødvendigvis sortert: [4, 9, 1, 7] blir [4, 1, 7, 9].
  3. Men det største elementet ender alltid sist, og t[-1] returneres.

Svar: Funksjonen returnerer det største tallet i lista (og endrer rekkefølgen i lista som ble sendt inn).

Nøkkelformler

  • •range(a, b, d) gir a, a+d, a+2d, … så lenge verdien er mindre enn b
  • •Presedens: sammenlikning > not > and > or
  • •/ gir alltid float; // er heltallsdivisjon og % er rest
  • •b = a er samme liste; b = a[:] eller a.copy() er en ny liste
  • •liste[-1] er siste element; liste[i:j] tar med i, men ikke j
  • •print(x, end=' ') avslutter med mellomrom i stedet for linjeskift

Vanlige feil

  • ⚠️Å ta med sluttverdien i range: range(1, 9, 3) er 1, 4, 7 – ikke 10.
  • ⚠️Å tro at en variabel som settes inne i en funksjon endrer den globale med samme navn.
  • ⚠️Å glemme at append på en parameter endrer lista hos den som kalte funksjonen.
  • ⚠️Å svare 4 når uttrykket er v[2:3] – et utsnitt gir alltid en liste, her [4].
  • ⚠️Å lese True or False and False fra venstre mot høyre; and regnes først.
  • ⚠️Å skrive 1 i stedet for 1.0 når svaret kommer fra /.

Eksamenstips

  • 💡Lag sporingstabell med én kolonne per variabel ved hver løkke – særlig når to variabler endres i samme while-løkke (H2021 og H2025 oppg. 1/3).
  • 💡Skriv range(a, b, d) ut som en liste før du regner: range(2, 11, 3) er 2, 5, 8 – sluttverdien 11 er aldri med.
  • 💡I matchoppgaver med nøstede lister: regn ut den indre indeksen først, og skill mellom v[i] (element) og v[i:i+1] (liste).
  • 💡Sett parenteser i boolske uttrykk etter presedens: not før and før or.
  • 💡Midtveis gir 1 p per flervalg. Siden 2023 gir feil svar 0, så svar alltid. I H2021 og H2022 hadde noen «kryss av alle riktige»-oppgaver −1 per feil avkrysning (minst 0 per oppgave), så der kostet et ekstra kryss.
  • 💡«En feilmelding» er et vanlig alternativ; sjekk at hver indeks finnes før du avviser det.

Laster...

Laster…
eksamenssett.noTren målrettet

Komplett samling av eksamensoppgaver og løsninger for norsk skole.

Om ossPrivatundervisningPriserSlik bruker du sidenFAQPersonvernVilkårAngrerettKontaktKI-deklarasjon

© 2026 Eksamenssett.no · Alle rettigheter forbeholdt

Innholdet er utviklet med KI og kvalitetssikres kontinuerlig – av modellene, og ved at våre tusenvis av brukere kan melde fra om feil. Slik jobber vi med kvalitet →

Eksamenssett.no eies og drives av Studenthjelp Privatundervisning AS

Org.nr. 913 117 387 (Foretaksregisteret) · Aksel Olsens vei 10B, 1597 Moss · Ikke MVA-registrert