INF100 – Innføring i programmering – er et obligatorisk fag for alle studenter på Matematisk Naturvitenskapelig fakultet på UIB. Vanligvis har en faget første semester, og for mange er programmering noe helt nytt. Derfor er det også veldig mange som sliter med å komme seg igjennom det.
Jeg hadde selv INF100 første semesteret mitt på bachelorgraden min i matte, og da hadde jeg lite til ingen erfaring med programmering før. Til tross for at jeg syntes faget var nytt og vanskelig, klarte jeg å se hvor nyttig og gøy programmering kan være. Jeg tror det var en veldig stor grunn til at jeg kom meg fint igjennom de utallige obligatoriske oppgavene og til slutt eksamen. Senere har jeg vært gruppeleder i faget over flere semestre, og jeg tenkte derfor at jeg skulle dele litt tips til hvordan man kommer seg igjennom og forhåpentligvis har det litt kjekt på veien!
Tips 1 – Learn by doing
INF100 er ikke et fag du kan lese deg til god karakter. Det er ikke meningen at du skal pugge hvordan enkelte program er programmert eller hvordan en type er definert. Programmering handler om å prøve og feile. Derfor er mitt viktigste tips å gjøre massemassemasse oppgaver. Kjør på! Enkle og vanskelige. Store og små. Mengdetrening er bra!
Tips 2 – Internett er din beste venn
Python, som er programmeringsspråket en bruker i INF100, er et internasjonalt språk. Og det er masse brukt! Hva betyr det? At internett er din beste venn. Sliter du med noe spesielt, google!! Ulempen her er at man ofte kan finne en hel oppgave med løsning på nett, og da lærer man jo ingenting. Prøv å begrense deg til lignende eksempler, eller google en spesifikk ting. For eksempel: «Hvordan sortere en liste» eller «Hvordan iterere over alle karakterene i en streng».
En ting jeg anbefaler å google er ekstraoppgaver (gjerne lette om du synes faget er vanskelig). Det er nok av gøye problemer ute i verden du kan løse med kunnskapen du får i INF100! Se tips 7 for et fint eksempel:)
Tips 3 – printprintprint!
Kommandoen jeg brukte, og for så vidt fortsatt bruker, desidert mest i Python er print-funksjonen. Har du skrevet et program som ikke funker helt som du trodde er det viktig å finne ut hvor det går galt. Da kan det være en veldig god ide å legge inn print-kommandoer rundt omkring i koden din. Usikker på om koden går inn i en if-statement eller en løkke? –> print noe smart inni løkken og se om det blir printet når du kjører koden din. Vet du ikke helt hvordan et objekt ser ut til alle tider? –> print ut objektet ved forskjellige stadier.
Det er fort mye enklere å forstå koden din når du kan se for deg hva som skjer under all syntaxen:)
Tips 4 – ha kontroll på alt grunnleggende
I programmering bygger alt på det grunnleggende. Kanskje du nå er kommet litt ut i semesteret og du henger ikke med på nye temaer fordi du tok det litt for rolig de første ukene. Ingen skam i det! (gjorde det selv hehe…) De første ukene er overveldende, og det er myyyye som skal på plass før man kan begynne på problemløsingen. Forelesere og erfarne programmerere kan fort glemme at det ikke er helt lett å forstå hvordan en streng faktisk fungerer.
Bruk litt ekstra tid på å gå tilbake til de grunnleggende typene; Lister, strenger, integers osv. Om du har kontroll på dette er det mye enklere å vite hvilken syntax og hvilke operasjoner du kan bruke i større problemløsningsoppgaver.
Tips 5 – Problemløsing
Veldig mange syntes at det vanskeligste i programmering er å faktisk løse et problem. Det skjønner jeg ekstremt godt! Det er ikke alltid like lett å vite hva oppgaven spør om, og det er i hvert fall ikke lett å vite hvordan du skal gjøre det om til kode. Når man skal løse en oppgave, enten det er i programmering, matte eller sosiologi, så er det sjeldent at svaret kommer til deg med en gang. Spesielt i programmering er det viktig å ikke være redd for å gjøre feil i koden, og ofte kommer svarene til deg underveis.
Noen småtips til hvordan løse et problem:
- Skriv ned oppgaven med egne ord og prøv å bryt den ned til enkle setninger. Ta for eksempel oppgaven «Gitt en streng, returner en ny streng hvor strengen har «ikke» først med mindre den allerede begynner med «ikke». Den kan brytes ned til «Har en streng. Hvis strengen starter med «ikke», så returner strengen. Alle andre ganger: returner «ikke» + strengen».
- Ordene «hvis» og «eller» blir nesten alltid til «if-else-statements» når du gjør problemet til kode. Få kontroll på hva du skal sjekke. «Hvis tallet er større enn tre» –> «If n>3».
- Skal du gjøre eller sjekke noe flere ganger? Løkker!! While-løkke om du skal sjekke/gjøre noe frem til noe skjer. For-løkke om du skal sjekke/gjøre noe på en gitt mengde elementer. (Kan alltid skrive den ene løkken som den andre. Har du en favoritt så bare kjør på med den!)
- Begynn med den delen av oppgaven du forstår. Du kan alltids bygge rundt den koden du allerede har. Om du vet at du skal sjekke et tall mot et annet, skriv det ned! Jeg startet ofte kodene mine slik som dette:
Tips 6 – Codingbat.com
Som et siste tips vil jeg anbefale en ressurs som hjalp meg mye, spesielt i eksamensperioden. Utover i semesteret lærer en om nye bibliotek og hvordan en kan fremstille forskjellige programmer. I eksamensperioden ble det etter hvert veldig tungt å skulle programmere, og jeg savnet de lette oppgavene vi fikk helt i starten. For å få tilbake selvtilliten og bygge grunnleggende kunnskap brukte jeg en nettside som heter Codingbat.com.
Codingbat.com gir deg oppgaver om alt grunnleggende i Python; Strenger, Lister, Booleans, Løkker, osv. Det er flere forskjellige nivå, og du får «enkle» og korte oppgaver som skal løse et spesifikt problem. Deretter kan du kjøre koden din og du blir vist om den passerer et lite utvalg av tester.
Jeg syntes det var veldig greit å slippe unna det tunge pensumet, og samtidig programmere så jeg f
ølte at jeg var litt produktiv i hvertfall. Codingbat var en veldig god ressurs for å forstå det grunnleggende i Python, og for å få hjernen litt inn i «programmerings-modus».
Jeg kan forresten hilse fra min beste venn som tar INF100 for første gang dette semesteret og si at heller ikke hun skjønner noe som helst. Så om du tror at du er alene så må du tro om igjen!
Programmering er gøy (syntes i hvert fall jeg) så slide inn i DM’en til @realfagUIB eller meg @johannehlmoy om du trenger desperat hjelp;)
Masse lykke til med faget!
Johanne