CMD + K
Videoer
Animerte scener med fortellerstemme. Velg en scene for å spille av.
20 videoer · 22 minutter totalt
Kapittel 2 · Variabler, datatyper og tallrepresentasjon
Kapittel 3 · Inn- og utdata, strengformatering
Kapittel 4 · Betingelser og logiske uttrykk
Kapittel 5 · Løkker
for-løkka og range: gå gjennom en ferdig rekke
Mens while jobber på en betingelse, plukker for-løkka verdier fra en ferdig rekke. range fra én til seks bygger en rad med fem teal-celler, og for-løkka går igjennom dem én av gangen — en amber-peker hopper fra celle til celle, i tar verdien som ligger der, og total vokser fra null til femten. Når rekka er tom er løkka ferdig, og i beholder den siste verdien — fem, ikke seks. Vist med kode + levende rekke + variabelbokser i, total.
Inni en while-løkke
En while-løkke leses ikke ovenfra og ned én gang — kjøringen hopper tilbake. Programmet sjekker betingelsen, kjører kroppen, og hopper til toppen igjen, runde etter runde, til betingelsen blir usann. Vist ved å trace sum av tallene én til fem linje for linje med levende variabelbokser.
nestede løkker: ytre teller rader, indre teller kolonner
En løkke inne i en løkke. Den ytre venter mens den indre ruller helt rundt — og det er nettopp slik en gangetabell fylles. Vi setter opp en tre-ganger-tre-rute, kjører den nestede koden, og ser cellene lyse opp i rad-først rekkefølge mens i og j klatrer i lockstep. Telleverket lander på ni runder — tre ytre ganger tre indre.
Kapittel 6 · Funksjoner, moduler og scope
Kapittel 7 · Strenger
Kapittel 8 · Lister og tupler
Grunn og dyp kopi: hva deler kopien fortsatt?
Shallow vs deep copy for nestede lister — a.copy() bygger en ny ytre liste men deler de indre listene; copy.deepcopy(a) lager ferske kopier på alle nivåer. Vist med tre matrise-kort (a, b, c), en delt-indre-bracket mellom a og b som pulser når a[0][0] endres slik at begge fliser flipper samtidig, og en uavhengig c som ikke flyttes når a deretter endres.
Listekomprimering: løkka presset ned til én linje
Den verbose for-løkka som bygger en ny liste kan presses ned til én linje med listekomprimering. Klammene rundt sier «ny liste», uttrykket foran sier «hva som havner i hver celle», og resten er en helt vanlig for-løkke. Vist live: først kjøres den lange varianten med tom liste og append, så samme jobb med kortformen — en peker vandrer over kildelisten, hver verdi flyr opp gjennom et kvadrat-glyph og lander som ny celle. Til slutt et if-filter: oddetall blir avvist og glir av skjermen, partall slipper gjennom og kvadreres. Misforståelsen som rettes: studenter tror listekomprimering er noe nytt — den ER en for-løkke, i komprimert form.
To navn, én liste
Klassikeren «b = a lager vel en kopi?»: lista bor ett sted i minnet, navnene er lapper med piler. b = a lager en ny pil, ikke en ny liste — så append gjennom b synes i a. En ekte kopi krever list(a). Vist med et levende minnediagram der celler tegnes, piler pulser og en ny rad bygges for kopien.
Kapittel 9 · Dictionaries og mengder (sets)
Kapittel 10 · Filbehandling og unntak
Kapittel 11 · Rekursjon, sortering og søk
Binærsøk: halvér søkerommet
Hvorfor lønner det seg at lister er sortert? Lineært søk sjekker én og én celle og bruker elleve forsøk på å finne førtito; binærsøk starter i midten og kaster en halvpart per forsøk — fire forsøk. Og forspranget eksploderer: en million sorterte tall trenger bare rundt tjue forsøk. Vist med femten levende celler, vandrende peker, pulserende midtpunkt og halvdeler som dør i ett jafs.
Innstikksortering: én og én på riktig plass
Hvordan sorterer du kort på hånden? Innstikksortering plukker neste tall, sammenligner med de allerede sorterte til venstre, skyver de større ett hakk høyre, og slipper kortet ned i hullet som åpner seg. Vist live på seks tall — fem, to, fire, seks, ett, tre: lift, skyv, drop, om og om igjen, til hele rekka står på rad fra én til seks.
Rekursjon: stabelen bak svaret
Rekursjon ser ut som sirkelresonnement helt til man ser kallstabelen: fakultet av fire stabler fire rammer oppå hverandre ned til basistilfellet, og så faller returverdiene hjem igjen — én ganger to, ganger tre, ganger fire — til tjuefire lander i print. Vist med en levende stabel der rammer bygges, venter, og løses opp med flygende returverdier.
Kapittel 12 · NumPy — beregning med arrays
Kapittel 13 · Matplotlib og visualisering
Kapittel 14 · Objektorientering: klasser og objekter (TDT4109)
Arv: barnet låner foreldrenes triks
En Hund-klasse trenger ikke skrive den samme presenter-koden som en Katt — det felles ligger i en foreldreklasse Dyr, og Hund arver det gratis. Vist live: vi tegner klasse-blokkene side om side, og når rex punkt presenter kalles, vandrer et oppslag opp arvepilen fra Hund (ingen treff) til Dyr (treff). Deretter får Hund sin egen lyd-metode, og samme oppslag stopper med en gang i Hund — overstyring. Lander på at arv er gratis lån, og overstyring er barnet som sier dette gjør jeg selv.
Klassen som mal, objektet som tegning
Klassen er malen, objektet er en utgave. Når vi skriver Hund med argumenter, stempler malen ut et nytt objekt med egne felter — og selv peker alltid på dette objektet her. Vist med et levende minne-diagram der malen stempler ut to ulike hunder side om side, og en self-pil svinger mellom dem når metoder kalles.