0.1 Eksamenskartet — slik testes TDT4110
Eksamensformen (4 t, kode D, tredelt sett), temafrekvensene, sjangerkatalogen A–J og lesestrategien som styrer hele boka.
Slik testes TDT4110
TDT4110 Informasjonsteknologi grunnkurs er NTNUs store innføringsemne i programmering. Flere tusen studenter tar det hvert år, og for mange er det første møte med å skrive et program. Emnet undervises også under koden TDT4109 for enkelte studieprogram — samme pensum, samme eksamensform, bare et annet emnenummer. Alt i denne boka gjelder begge.
Det uvanlige med faget er at det tester tre helt ulike ferdigheter på samme dag: du skal kunne fakta om hvordan en datamaskin virker, du skal kunne lese et program og si nøyaktig hva det gjør, og du skal kunne skrive et program selv, for hånd, uten maskin.
Den gode nyheten er at oppgavene har vært påfallende like år etter år. Dette kapitlet viser deg nøyaktig hvordan de ser ut, hva som teller mest, og i hvilken rekkefølge du bør lese resten av boka. Det er verdt de 35 minuttene.
Før vi går inn i detaljene, tre praktiske ting du bør vite.
Karakterskalaen. Faget vurderes med bokstavkarakterer fra A til F, der A er best og F betyr ikke bestått. Det finnes ingen deleksamen og ingen mappe: én skriftlig eksamen avgjør hele karakteren. C er en god og vanlig karakter — den betyr at du behersker faget. Boka er skrevet for å få deg trygt gjennom, ikke for å jage perfeksjon.
Oppgavetypene har hver sin bokstav. Boka bruker ti bokstaver, A til J, som navn på de ti oppgavetypene som faktisk går igjen. De er ikke offisielle NTNU-koder — de er bokas egen sortering, laget for at du skal kunne kjenne igjen en oppgave og huske oppskriften. Hver gang en bokstav brukes i et kapittel, skrives den ut i klartekst første gang: «sjanger B — kodesporing, altså «hva skriver dette programmet ut?»». Hele lista står i sjangerkortet lenger ned.
Feilene har numre. Boka nummererer de sytten vanligste feilene, fra #1 til #17. Nummeret er en snarvei, ikke en gåte: hver gang et nummer brukes, står forklaringen i parentes rett ved. Hele registeret står samlet i dette kapitlet, med henvisning til hvilket kapittel som forebygger hver feil.
Ingenting forutsettes kjent. Hver Python-konstruksjon og hvert fagbegrep forklares der det brukes første gang. Har du aldri programmert, kan du lese boka fra perm til perm uten å slå opp noe annet sted.
Eksamensformen
Vurderingen er én avsluttende skriftlig skoleeksamen på fire timer, som teller 100 prosent.
En skoleeksamen er en eksamen du møter opp til på et bestemt sted til et bestemt klokkeslett, under tilsyn, og leverer før tida er ute. Du får ikke ta den med hjem, og du får ikke bruke internett.
Hjelpemidlene er strengt begrenset. Hjelpemiddelkode D betyr at du bare får ta med én bestemt, enkel kalkulator — ingen bøker, ingen notater, ingen datamaskin, ingen telefon, ingen annen elektronikk. Praktisk sagt: du skriver all koden for hånd, på papir, uten å kunne prøve om den virker.
Noen flere faste trekk:
- All kode er Python 3.
- Settet finnes på både bokmål og nynorsk.
- Obligatoriske øvinger — innleveringsoppgaver gjennom semesteret — må være godkjent for at du skal få gå opp til eksamen. De gir ingen karakterpoeng i seg selv.
- Det finnes ingen midtveiseksamen. Alt avgjøres på de fire timene.
De tre delene av settet
Settet har hatt samme tredeling hvert eneste år i perioden boka bygger på:
| Del av settet | Hva det er | Vekt |
|---|---|---|
| Oppgave 1 — teori | Rundt tjue flervalgsspørsmål om maskinvare, tallrepresentasjon, nettverk, sikkerhet, komprimering og sampling, og av og til systemutvikling og algoritmer | ~25 % |
| Kodeforståelse | Fire til seks deloppgaver: «hva skrives ut eller returneres», «forklar med én setning hva funksjonen gjør», og «fyll inn den manglende kodelinja» | ~15–20 % |
| Programmering | Én til to oppgaver som bygger en liten applikasjon: en kjede av små funksjoner som leser en fil, tolker dataene, analyserer dem og skriver ut eller lagrer svaret | ~50–60 % |
Et flervalgsspørsmål er et spørsmål med ferdige svaralternativer der du krysser av for ett. En fritekstoppgave er en der du skriver svaret selv — enten en setning eller et stykke kode.
Rekkefølgen varierer: kodeforståelsen har vært både Oppgave 2 og Oppgave 4. Men alle tre byggeklossene er der hvert år, og prosentvekten står trykt på settet ved hver enkelt deloppgave. Den vekten er din tidsplan.
(Innstegsoppgave — les av tabellen over de tre delene av settet.) Eksamen varer fire timer, altså 240 minutter.
a) Omtrent hvor mange minutter bør teoridelen få, når den veier rundt 25 prosent?
b) Omtrent hvor mange minutter bør programmeringsdelen få, når den veier rundt 58 prosent?
Begrepene du trenger for å lese resten
Under står de begrepene resten av boka bruker uten å forklare på nytt. De er også bokas første flashcards — du får dem igjen i den interaktive treningen.
En eksamen du møter opp til på et fastsatt sted og tidspunkt, under tilsyn, og leverer før tida er ute.
I TDT4110 varer den fire timer og teller 100 prosent av karakteren. Det finnes ingen hjemmeeksamen, ingen mappe og ingen deleksamen som kan veie opp for en dårlig dag.
Konsekvensen for lesingen: du må kunne stoffet uten oppslagsverk, og du må kunne skrive kode uten å kunne kjøre den.
NTNUs kode for «bestemt, enkel kalkulator tillatt». Ingen trykte eller håndskrevne hjelpemidler, ingen datamaskin, ingen telefon, ingen annen elektronikk.
For dette faget betyr det tre ting: du må huske Python-konstruksjonene utenat, du skriver koden for hånd, og de få regnestykkene i teoridelen kan gjøres på kalkulator.
Kalkulatoren er nyttig i teoridelen, der spørsmål om for eksempel bildestørrelse eller antall symboler i et gitt antall bit krever et raskt regnestykke.
Ved hver deloppgave på settet står det trykt hvor mye den teller ved sensur, oppgitt i prosent.
Det er ikke pynt — det er den eneste tidsplanen du får. En deloppgave på 3 prosent skal ha omtrent 7 minutter av de 240; en på 10 prosent skal ha rundt 24.
Bruk et halvminutt i starten på å summere vektene og skrive et klokkeslett i margen ved hver oppgave. Det er den billigste karakterforsikringen som finnes.
I flervalgsdelen gir et feil svar null poeng — akkurat som et blankt svar. Feil kryss trekker altså ikke fra noe sted.
Konsekvensen er absolutt: kryss alltid av, også når du ikke aner. Med fire alternativer er gjettesjansen én av fire, og blankt er null av fire.
Historisk merknad: aller tidligst i perioden boka bygger på, ble det trukket en halv poeng for feil kryss. Den ordningen ble fjernet, og har ikke vært i bruk siden. Det er historikk, ikke gjeldende regel.
Rundt tjue flervalgsspørsmål om hvordan datateknologi virker: prosessoren, minnet, tallsystemer, nettverk, sikkerhet, komprimering og sampling.
Forekommer i alle settene og utgjør omtrent en fjerdedel av karakteren.
Kjennetegnet er at alternativene ligger tett: ofte skiller ett ord eller ett tall riktig fra galt. Oppskriften er å lese alle fire alternativene før du velger, stryke de to som er tydelig gale, og lete etter det ene ordet som skiller de to siste.
«Hva skriver dette programmet ut?» eller «hva returnerer denne funksjonen?». Du får et lite program og skal skrive svaret nøyaktig, tegn for tegn.
Forekommer i alle settene, med fire til seks deloppgaver som hver teller 1–3 prosent.
Oppskriften er en sporingstavle: én rad per runde i løkka, én kolonne per variabel som endrer seg, og en kolonne for hva som er skrevet ut så langt. Metoden er mekanisk med vilje — det er det som gjør den pålitelig under tidspress.
Du får en funksjon og skal si hva den gjør, i én setning. Ikke hvordan den virker linje for linje.
Forekommer i omtrent seks av ti sett og teller rundt 2 prosent. Dette er en sjanger som er spesiell for NTNU.
Sensor sier det samme hvert år: svar kort og klart — er svaret uklart eller lengre enn nødvendig, trekker det ned. Et godt svar begynner med et verb og sier hva funksjonen oppnår: «Returnerer den transponerte av en tabell.» Et dårlig svar er et avsnitt om hva hver linje gjør.
En funksjon der én linje er byttet ut med en plassholder, og fire alternativer til hva den skal være. Du velger ett.
Forekommer i omtrent halvparten av settene og teller 1–3 prosent.
Alternativene er alltid syntaktisk lovlige og ser plausible ut — det er grensene og indeksene som skiller dem. Oppskriften er å prøve hvert alternativ mot et lite eksempel du kan regne i hodet, ikke å velge det som «ser riktig ut».
De fem leddene i den store programmeringsoppgaven, som til sammen utgjør over halve eksamen:
- E — les en fil og bygg en tabell eller en oppslagsstruktur.
- F — tolk og gjør om dataene, for eksempel en tidsstreng til antall sekunder.
- G — analysér: finn den beste, tell forekomster, grupper, sortér. Dette er tyngdepunktet.
- H — spør brukeren, med validering, og eventuelt en meny.
- I — skriv ut pent eller lagre til fil.
De opptrer nesten alltid som deloppgaver a) til f) i én sammenhengende oppgave, der hver deloppgave bygger på den forrige.
En funksjon som kaller seg selv, eller et søk som halverer søkeområdet for hvert steg. Du skal enten spore den eller skrive den.
Rekursjon forekommer i omtrent seks av ti sett, binærsøk i omtrent tre av ti. Sammen teller de 1–5 prosent.
Dette er en av forskjellene mellom TDT4110 og tilsvarende emner andre steder: her testes rekursjon eksplisitt, og du må kunne både lese og skrive den.
Den faste oppskriften som ligger under hver eneste programmeringsoppgave, uansett hvilket domene den er pakket inn i:
les fil → bygg tabell eller oppslagsstruktur → analysér → skriv ut eller lagre
Med en hovedfunksjon som binder leddene sammen, leser fila én gang, og sender dataene videre til de andre funksjonene.
Sensor belønner eksplisitt at senere funksjoner gjenbruker de tidligere i stedet for å kopiere kode. Det er den enkeltvanen som gir mest uttelling i denne delen.
At innpakningen på programmeringsoppgaven byttes ut hvert år, mens selve programmeringsøvelsen er den samme.
Innpakningene har blant annet vært reisetid, stemmetelling ved valg, terningspill, priskrig mellom butikker, auksjon, matoppskrifter og fartsmåling. Under ligger alltid den samme kjeden: les fil, bygg struktur, analysér, skriv ut.
Dette er godt nytt. Du skal ikke forberede deg på et tema — du skal øve på mønsteret, til det sitter uansett hva domenet heter. Boka bruker derfor bevisst helt andre domener enn de som har vært brukt.
Boka merker alt stoff med ett av tre nivåer, ut fra hvor ofte det faktisk kommer på eksamen:
- Må sitte — høyeste prioritet. Kommer i alle eller nesten alle sett, og avgjør karakteren.
- Må kunne — kommer ofte og skiller en middels fra en god besvarelse.
- Bør kjenne til — kommer av og til, og er det du tar når resten sitter.
«Må sitte» er ikke et krav om plettfri kode. Sensor gir god uttelling for riktig overordnet struktur selv når det er småfeil i indekser og kanttilfeller, og flere ulike løsninger regnes som like riktige.
Innleveringsoppgaver gjennom semesteret som må være godkjent for at du skal få gå opp til eksamen.
De gir ingen karakterpoeng i seg selv — karakteren settes utelukkende på de fire timene. Men uten godkjenning får du ikke ta eksamen i det hele tatt.
Praktisk råd: øvingene er den eneste treningen mange får i å skrive kode selv. Bruk dem som det, ikke som noe å bli ferdig med.
Hva som faktisk kommer — frekvenskartet
Tallene under er telt i arkivet, sett for sett. Arkivet er ti eksamenssittinger, så prosentene er tideler: «100 %» betyr ti av ti sett, «~80 %» betyr åtte av ti.
Kodesiden:
| Tema | Hvor ofte | Nivå |
|---|---|---|
| Funksjoner | 100 % | må sitte |
| Løkker og betingelser | 100 % | må sitte |
| Lister, inkludert tabeller av lister | 100 % | må sitte |
| Filbehandling | 100 % | må sitte |
| Strenger: dele opp, rense, sette sammen | 100 % | må sitte |
| Kodesporing | 100 % | må sitte |
| Variabler, datatyper og konvertering | 100 % | må sitte |
| Oppslagsstrukturer med nøkkel og verdi | ~80 % | må sitte |
| Input-validering | ~80 % | må sitte |
| Finn den beste eller største | ~80 % | må sitte |
| Sortering | 70 % | må kunne |
| Formatert utskrift | 70 % | må kunne |
| Rekursjon | 60 % | må kunne |
| Feilhåndtering rundt filoperasjoner | 60 % | må kunne |
| Forklar med én setning | 60 % | må kunne |
| Tupler | 50 % | må kunne |
| Meny og hovedløkke | 50 % | må kunne |
| Fyll inn manglende kodelinje | 50 % | må kunne |
| Tilfeldige tall | 50 % | bør kjenne til |
| Lagring til binærfil | 30 % | bør kjenne til |
| Binærsøk | 30 % | bør kjenne til |
Teorisiden:
| Temaklynge | Hvor ofte | Nivå |
|---|---|---|
| Maskinvare og datamaskinens oppbygning | ~100 % | må sitte |
| Tallrepresentasjon og data | ~100 % | må sitte |
| Nettverk | 90 % | må kunne |
| Sikkerhet | 80 % | må kunne |
| Komprimering og sampling | 80 % | må kunne |
| Systemutvikling | 50 % | bør kjenne til |
| Algoritmeteori og kompleksitet | 40 % | bør kjenne til |
Legg merke til hvor mye som ligger på 100 prosent. Sju kodetemaer kommer i hvert eneste sett. Det er ikke tilfeldig — de er byggeklossene den store programmeringsoppgaven består av.
(Refleksjon — prioritering ut fra frekvenskartet.) Du har åtte kvelder igjen og rekker omtrent to timer per kveld, altså rundt 960 minutter til sammen.
a) Sett opp en plan for de åtte kveldene ut fra frekvenskartet i dette kapitlet.
b) Hva dropper du først hvis du mister to av kveldene, og hvorfor?
Hvordan teoridelen har flyttet seg
Ett mønster er verdt å kjenne til når du prioriterer. I den første halvdelen av perioden hadde teoridelen tydelig innslag av systemutvikling — vannfallsmodell, spiralmodell, kravspesifikasjon, akseptansetesting — og av algoritmeteori, altså hva en algoritme er og hvor raskt den vokser.
I den siste halvdelen dreide teoridelen mot nettverk, sikkerhet og maskinvare, mens de to første klyngene ble tonet ned.
Begge klyngene dekkes i boka. Systemutvikling og algoritmeteori er merket «bør kjenne til», men med en påminnelse om at de har kommet igjen før og godt kan gjøre det igjen. Det koster lite å lese dem én gang.
Fem setninger som gjentas på settet år etter år, og som er verdt mer enn de ser ut til:
1. Les gjennom hele settet før du begynner. Da vet du hva som venter, og du kan starte med det du kan best.
2. Disponer tiden etter prosentvekten. Den står trykt ved hver deloppgave.
3. Gjør rimelige antakelser der oppgaveteksten er ufullstendig — og skriv kort hva du antar. En antakelse som er skrevet ned, koster ingenting. En som ikke er det, kan koste poeng.
4. Svar kort og klart. Er svaret uklart eller lengre enn nødvendig, trekker dette ned. Dette gjelder særlig forklaringsoppgavene og teorisvarene.
5. Kryss alltid av på flervalg. Feil svar gir null, akkurat som blankt.
De tre siste er de som faktisk flytter karakterer.
Hvordan poengene gis
Fire trekk ved sensuren er verdt å kjenne, fordi de bør endre hvordan du skriver:
Flere korrekte løsninger sidestilles. Løsningsforslaget sier det eksplisitt: den viste løsningen er bare én av måtene. Har du en annen løsning med rett idé, gir den full uttelling. Du skal altså ikke lete etter «den ene riktige koden» — du skal skrive én som virker.
Riktig struktur belønnes selv med småfeil. En funksjon med riktig mønster og en av-én-feil i en indeks gir god uttelling. Det betyr at du alltid skal skrive noe: en halvferdig funksjon med riktig oppbygning er verdt langt mer enn et blankt felt.
Gjenbruk av egne funksjoner belønnes. Når deloppgave c) trenger noe deloppgave a) allerede gjør, skal du kalle a) — ikke kopiere koden inn på nytt. Dette nevnes eksplisitt i løsningsforslagene.
Robusthet gir toppscore. Enkelte deloppgaver har uttrykkelige krav for full uttelling: ikke anta at en kolonne ligger på en bestemt plass, håndtér at det ikke finnes noe svar, ikke returnér det samme elementet to ganger, og tål at dataene kommer i vilkårlig rekkefølge.
Navnespråk spiller ingen rolle. Norske og engelske funksjons- og variabelnavn går like bra; løsningsforslagene blander. Boka bruker overveiende norske navn.
(Refleksjon — hva som gir uttelling.) Under eksamen står du fast på deloppgave b) i en programmeringsoppgave. Deloppgave c) skal bruke funksjonen fra b).
a) Hva gjør du?
b) Hvilken av disse to besvarelsene på deloppgave c) gir mest uttelling: en tom side, eller en funksjon med riktig oppbygning som har en av-én-feil i én indeks? Begrunn ut fra hvordan poengene gis.
Feilene i dette kapitlet handler ikke om Python. De handler om hvordan du bruker de fire timene.
- La et flervalg stå blankt. Blankt er null, og feil er også null. Å ikke krysse av er å gi bort en sjanse på én av fire helt gratis.
- Bruke for lang tid på et lavvektet spørsmål. Et teorispørsmål til 1 prosent skal ha under to og et halvt minutt. Sitter du fast, kryss av på det mest sannsynlige og gå videre.
- Skrive lange, ordrike forklaringer der én setning kreves. Det trekker aktivt ned — det er ikke bare bortkastet tid.
- Hoppe rett på programmeringen uten å lese hele settet. Da oppdager du først etter to timer at teoridelen var lettere enn du trodde.
- Hoppe over en deloppgave fordi den forrige ikke ble ferdig. Deloppgavene kan løses uavhengig. Skriv «jeg antar at funksjonen fra a) finnes og gjør slik», og løs c) likevel.
(Refleksjon — planlegging under tidspress.) Du har fire timer. Settet er delt slik: Oppgave 1 er teori og teller 25 prosent, Oppgave 2 er kodeforståelse og teller 17 prosent, Oppgave 3 er en programmeringsoppgave på 30 prosent, og Oppgave 4 er en programmeringsoppgave på 28 prosent.
a) Sett opp et tidsbudsjett i minutter for de fire oppgavene.
b) Hvor mye tid setter du av til å lese gjennom settet i starten, og til kontroll til slutt? Begrunn kort.
c) Du oppdager etter halvannen time at du ligger 20 minutter bak skjema. Hva gjør du?
Har du få dager igjen, er dette rekkefølgen som gir mest karakter per time:
Hurtigrute på 3–5 dager:
1. Dag 1 — grunnlaget. Del 1 (variabler, betingelser, løkker, input) og Del 2 (funksjoner). Uten disse virker ingenting annet. Omtrent 265 minutter.
2. Dag 2 — datastrukturene og fila. Del 3 (lister, tabeller, strenger, oppslagsstrukturer) og Del 4 (filbehandling). Omtrent 410 minutter — dette er en lang dag.
3. Dag 3 — programmeringskjeden. Del 7. Den er over halve eksamen, og alt du har lest de to første dagene, brukes her. Omtrent 465 minutter.
4. Dag 4 — teoridelen. Del 8. Den er avhengighetsfri, du kan lese den når som helst, og den er den billigste fjerdedelen av karakteren. Omtrent 375 minutter.
5. Dag 5 — kodesporing og ett helt sett. Del 5, og deretter én av de tre øvingseksamenene under tidspress.
Rekker du ikke alt: dropp Del 6 (algoritmer) sist, ikke først.
Hele boka i tall. De 39 kapitlene er til sammen 2 630 minutter, altså rundt 44 timer. Med de 32 prøvene (940 minutter) blir det 3 570 minutter, altså rundt 60 timer. De tre øvingseksamenene alene er 720 minutter, altså 12 timer.
Ukeplan. Fordelt på 12 uker blir det knapt 5 timer i uka. På 10 uker blir det 6 timer i uka.
Viktig forbehold: alle minuttanslagene er lesetid. Skal du faktisk skrive koden selv — og det skal du — bør du gange med rundt 1,5. 60 timer lesing blir da omtrent 90 timer arbeid.
Deltidsruten: 10 til 12 uker
Leser du ved siden av andre emner, er dette en plan som holder. Regn 5–6 timer i uka.
| Uke | Innhold | Ca. tid |
|---|---|---|
| 1 | Del 0 og Del 1: grunnlaget, med prøvene til delen | 5 t |
| 2 | Del 2: funksjoner og gjenbruk, med prøver | 3,5 t |
| 3 | Del 3, første halvdel: lister, tabeller, strenger | 4 t |
| 4 | Del 3, andre halvdel: utskrift, oppslagsstrukturer, tupler, prøver | 4,5 t |
| 5 | Del 4: filbehandling og robusthet, med prøver | 4,5 t |
| 6 | Del 7, første halvdel: kjeden ledd for ledd | 5 t |
| 7 | Del 7, andre halvdel: robusthet og hele kjeden, med prøver | 6 t |
| 8 | Øvingseksamen 1, tidsstyrt, på papir | 4 t |
| 9 | Del 5: kodesporing og rekursjon, med prøver | 5 t |
| 10 | Del 8: teoridelen, med prøver | 6,5 t |
| 11 | Del 6: algoritmer, og øvingseksamen 2 | 6 t |
| 12 | Repetisjon av svake punkter, og øvingseksamen 3 | 6 t |
Legg merke til at de tre øvingseksamenene er spredt utover — uke 8, 11 og 12. De skal ikke stables til slutt. Hver av dem tar fire timer og avslører noe annet, og du trenger tid mellom dem til å tette hullene de finner.
Har du bare 10 uker, slår du sammen uke 3 og 4, og uke 11 og 12.
Den mest utbredte lesestrategien i dette faget er også den dårligste: å lese kode og kjenne at man forstår den.
Du forstår den. Det er ikke det som testes.
Det som testes, er om du kan produsere koden fra en kravbeskrivelse, uten mal, på fire timer. Det er en helt annen ferdighet, og den kommer bare av å skrive.
Og for dette faget kommer en advarsel til, som er enda viktigere: du må skrive kode for hånd, på papir, uten å kjøre den. Eksamen har hjelpemiddelkode D — ingen maskin. Skriver du all øvingskoden i en editor som retter feilene dine, trener du ikke på det du blir prøvd i.
Konkret krav til deg selv: minst én av de tre øvingseksamenene skal skrives helt for hånd, med penn, uten maskin i rommet. Det er ubehagelig første gang. Det er hele poenget.
Bruk til gjengjeld maskinen aktivt når du kontrollerer etterpå: skriv inn det du skrev på papir, kjør det, og se nøyaktig hvor det sprakk.
Feilregisteret: #1 til #17
Boka nummererer de vanligste feilene, og bruker numrene i kapitlene. Hver gang et nummer nevnes, står forklaringen i parentes ved siden av — du skal aldri måtte slå opp.
Feil belagt i eksamensarkivet:
| Nr. | Feil | Forebygges i |
|---|---|---|
| #1 | Glemt omgjøring fra tekst til tall etter innlesing — regning og sammenligning blir feil | 1.1, 1.4, og Del 4 og 7 |
| #2 | Glemt å rense linja ved filinnlesing, så linjeskiftet henger igjen i siste felt | Del 4 og 7 |
| #3 | Feil skilletegn når linja deles opp, eller variabelt antall mellomrom | Del 3, 4 og 7 |
| #4 | Anta at en kolonne ligger på en bestemt plass, i stedet for å finne plassen selv | Del 3 og 7 |
| #5 | Av-med-én i løkkegrenser og indekser | 1.3, og Del 5 og 6 |
| #6 | Ikke håndtere tomme data eller «ikke funnet» | Del 7 |
| #7 | Returnere det samme elementet flere ganger der svaret skal være unikt | Del 7 |
| #8 | Input-løkka spør bare én gang, eller stopper aldri | 1.4, og Del 2 og 7 |
| #9 | Blande vanlig divisjon og heltallsdeling | 1.1, og Del 3 og 5 |
| #10 | Feil eller manglende grunntilfelle i en funksjon som kaller seg selv | Del 5 |
| #11 | Teori: forveksle to tett formulerte alternativer | Del 8 |
| #12 | Teori: regnefeil i tallsystemer eller bildestørrelse | Del 8 |
| #13 | Forklare hvordan koden virker linje for linje, i stedet for hva den oppnår | Del 5 og 9 |
Bokas egne tillegg — allmenne Python-feller. Disse er ikke telt i arkivet og presenteres ikke som eksamensgjengangere. De er feller som koster tid:
| Nr. | Feil |
|---|---|
| #14 | Bruke et innebygd navn som variabel og ødelegge funksjonen resten av programmet |
| #15 | Tro at to navn på samme liste er to lister — endrer du den ene, endres begge |
| #16 | Innrykksfeil, eller blandet tabulator og mellomrom |
| #17 | Tro at sorteringsmetoden gir en ny liste tilbake — den endrer lista og gir ingenting |
Du trenger ikke pugge numrene. De er der for at kapitlene skal kunne peke presist.
Hva som IKKE er pensum
Like nyttig som å vite hva som kommer, er å vite hva du kan la ligge.
Klasser og objektorientering er utenfor pensum i TDT4110. Emnet er rent prosedyreorientert: alt løses med funksjoner, løkker, betingelser, lister, oppslagsstrukturer, tupler, strenger og filer. Du kommer ikke til å møte class eller self på dette settet, og ingen fasit bruker dem. Objektorientert programmering hører til andre emner. Har du lest deg opp på det andre steder, skal du legge det til side her — det er ikke en løsningsvei sensor ser etter.
Det samme gjelder disse, som alle er utenfor pensum og ikke nevnes videre i boka: lenkede strukturer, iteratorer, generatorer, dekoratorer, tråder, regulære uttrykk, ferdige moduler for tabellformater, grafiske brukergrensesnitt og nettverkskode. Vaktsetningen if __name__ == '__main__': gir heller ingen uttelling og brukes ikke i boka.
Filformatene du trenger, er ren tekst og binærfil. Ingenting annet.
Kilden til tallene i denne boka
Frekvenstallene i denne boka er telt i NTNU-arkivet for TDT4110 2014–2019: 10 eksamenssittinger og 7 offisielle løsningsforslag — 17 dokumenter i alt. Løsningsforslagene og de nyeste settene (2015–2019) er gjennomgått grundig; de eldste er skummet for form- og temaregistrering. Kodesnuttene i kodeforståelsesoppgavene ligger som bilder i PDF-ene og er dekket indirekte, via løsningsforslagenes fasitsvar. Arkivet stopper i 2019, og gjeldende emnebeskrivelse har siden fått tillegg (f-strenger, NumPy/Matplotlib, KI som kodehjelp) som er merket særskilt i boka (verifiser mot gjeldende pensum — ikke i arkivet 2014–2019). Et nytt sett kan endre bildet.
To presiseringer om språkbruken:
«Offisielle løsningsforslag» er den riktige betegnelsen. De fungerer i praksis som sensorveiledning, og det er derfra utsagnene om poenggiving i dette kapitlet er hentet. Det finnes ingen egen, separat publisert dokumenttype ved siden av dem.
Modellbesvarelsene i denne boka er nyskrevne av Skolesaga. De er ikke ekte studentbesvarelser, og de er ikke hentet fra noen fasit. Det samme gjelder alle oppgavetekster, kodeeksempler, datafiler og domener: de er skrevet for denne boka. Kodemønstrene er standard Python-idiomer, som ikke tilhører noen.
Boka er ikke utgitt av eller tilknyttet NTNU, og den kan ikke love noe bestemt eksamensutfall.
Pensumdrift etter 2019
Arkivet stopper i 2019, og noe har kommet til siden. Tre ting er verdt å vite om, alle merket tydelig der de dukker opp i boka:
Formaterte tekststrenger med f-prefiks. Løsningsforslaget for det siste året i arkivet varsler at denne skrivemåten kommer inn i pensum. Boka viser den side om side med den eldre måten å formatere på, og merker den (verifiser mot gjeldende pensum — varslet inn 2019). Den eldre formen er uansett alltid gyldig, så du kan trygt bruke den du liker best.
Bibliotekene for numeriske beregninger og for grafer. Gjeldende emnebeskrivelse nevner NumPy og Matplotlib. Ingen av delene er belagt i arkivet 2014–2019. De omtales derfor kort i én egen boks i teoridelen, merket (verifiser mot gjeldende pensum — ikke i arkivet 2014–2019), og det bygges verken drill eller prøver på dem.
Kunstig intelligens som kodehjelp. Samme status: nevnt i gjeldende emnebeskrivelse, ikke belagt i arkivet, omtalt kort og merket på samme måte.
Sjekk gjeldende emnebeskrivelse selv før eksamen. Det tar to minutter, og et nytt sett kan endre bildet.
Prognose for neste sett
Ut fra hvor stabil malen har vært, er dette det mest sannsynlige:
Oppgave 1, teori, rundt 25 prosent: omtrent tjue flervalgsspørsmål om maskinvare, tallrepresentasjon, nettverk, sikkerhet og komprimering eller sampling. Mulig gjeninntog av systemutvikling og algoritmekompleksitet.
Kodeforståelse, 15 til 20 prosent: fire til seks deloppgaver. To til fire «hva skrives ut» over løkker, rekursjon, boolske uttrykk, utsnitt og oppslagsstrukturer. En eller to «forklar med én setning». En eller to «fyll inn kodelinja».
Programmering, 50 til 60 prosent: én til to oppgaver i et nytt domene. En kjede på fem til åtte funksjoner: les fila, tolk dataene, bygg strukturen, analysér, spør brukeren eller vis en meny, skriv ut eller lagre. Med gjenbruk mellom funksjonene og feilhåndtering rundt filoperasjonene.
Domenet vet ingen. Det spiller heller ingen rolle.
Leseplanen som følger av dette
Må sitte — høyeste prioritet:
- Del 1 til 4: kodegrunnlaget. Variabler og typer, betingelser, løkker, input, funksjoner, lister og tabeller, strenger, oppslagsstrukturer, filbehandling.
- Del 7: programmeringskjeden. Over halve eksamen.
- Del 5: kodesporing. Hvert eneste sett.
- Del 8, klyngene maskinvare og tallrepresentasjon. Nær 100 prosent hver.
Må kunne:
- Del 6: sortering, søking og kjøretid.
- Del 8, klyngene nettverk, sikkerhet og komprimering eller sampling.
- Forklaringssjangeren og fyll-inn-sjangeren i Del 5.
Bør kjenne til:
- Lagring til binærfil, implementasjon av binærsøk, kjøretidsteori, systemutvikling, tilfeldige tall — og de nyere pensumtilleggene som er merket for verifisering.
Rekkefølgen som gir mest per time: Del 1 til 4, så Del 7, så Del 5, så Del 8, så Del 6. Del 8 kan leses parallelt hele veien — den forutsetter ingenting av kodedelen, og passer godt de kveldene du er for sliten til å skrive kode.
Første stopp er kap. 1.1. Har du aldri programmert før, finnes en mykere inngang i Programmering med Python — omtrent en time, og helt valgfri.
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 Norges teknisk-naturvitenskapelige universitet. Dette er ikke offisielt studiemateriell. Les mer.