Semesteroppsummering: Computational physics (FYS4150)

Kort fortalt: Fantastisk om bruken av numeriske metoder i fysikken.
Det beste emnet jeg noen gang har tatt!
Men får trekk for arbeidsmengden.


Jeg er litt forelsket i dette emnet. Jeg har gjennom utdannelsen min vært temmelig frustrert over at mange av emnene jeg har tatt ikke har vært så bra som de kunne ha vært – og burde ha vært. Blant alle emnene jeg har tatt ved Universitetet i Oslo stiller FYS3150/4150 Computational Physics i en klasse for seg selv.

Hva er det som er så bra med dette emnet? Grunnene er mange. Det er summen av et flott undervisningsopplegg, en fantastisk foreleser og en gjeng flinke, hyggelige gruppelærere.

Hva det handler om

ComPhys (som vi kaller det) handler ganske enkelt om hvordan løse klassiske fysiske/matematiske problemer ved hjelp av programmering. Det er nemlig slik at en del fysiske/matematiske problemer er mye lettere å regne på numerisk, dvs. ved hjelp av å programmere problemet på en datamaskin. I mange tilfeller MÅ vi løse problemer numerisk, fordi de fleste problemer er for vanskelige å løse med penn og papir.

I dette emnet har vi gått gjennom de mest nyttige algoritmene (oppskrifter for hvordan vi skal løse et problem numerisk steg for steg) som enhver fysiker bør kjenne til, slik at vi nå kan løse:

  • egenverdiproblemer
  • integraler
  • differensialligninger
  • partielle differensialligninger

med en rekke forskjellige metoder. Vi brukte programmeringsspråket C++. Dette språket minner en del om Python som vi har lært tidligere i utdannelsen, men har sine egne særegenheter. Det var ikke vanskelig å lære seg C++ når vi allerede kunne Python, og det er smart å kunne flere språk – i programmeringsverdenen som i den virkelige verdenen!

Og ikke minst: Det er kjempeviktig, ja helt essensielt, å kunne programmering dersom du har lyst til å drive med forskning innen astrofysikk (muligens innen ALLE realfag). Derfor er dette studieemnet så relevant og viktig, enten du skal skrive egne programmer eller bruke og forstå programmer som andre har skrevet.

Gjennomføringen

Emnet består av 4 timer med forelesning i uken, pluss to hele dager med datalab hvor vi kunne komme og gå som det passet.

Forelesningene fokuserte på å beskrive matematikken bak algoritmene vi skulle lære oss, samt gi tips til prosjektoppgavene. Vi kunne allerede i forelesningene forstå nytteverdien av det som ble forelest, noe som sjeldent har vært tilfellet i tidligere emner. Ofte må vi bare tro på at det vi lærer skal være godt for noe og at lyset vil gå opp for oss en gang i fremtiden.

Det som er gøy med en del av matematikken som brukes i ComPhys, er endelig å se den praktiske nytteverdien av lineær algebra som vi lærte for mange semestre siden! Jeg husket ikke så mye av det, for jeg har jo ikke brukt det siden. Heldigvis antok ikke foreleser at vi husket noe særlig heller, og repeterte det vi hadde bruk for i et rolig tempo.

datalaben ble det ofte gjennomgått mer tekniske problemstillinger, slik som parallellisering, debugging, osv. av programmene våre. Men mesteparten av tiden ble brukt til å jobbe med prosjektoppgaver.

I løpet av semesteret gjorde vi 5 numeriske prosjektoppgaver, hvor de to siste prosjektene stod for 1/3 av den endelige karakteren hver. En avsluttende eksamen på 4 timer stod for den resterende 1/3 av karakteren. I det aller siste prosjektet kunne vi velge mellom ulike oppgaver utifra hva vi syns er mest interessant. De astronomiinteresserte (slik som meg!) kunne da velge å simulere en stjernehop 🙂 Å ha valgmuligheter på den måten er utrolig bra for motivasjonen!

Stjerner på kollisjonskurs. Venstre: Starten av simuleringen. Høyre: Tidspunkt nærmest total kollaps.

Jeg elsker at dette emnet er prosjektbasert (og at prosjektene da faktisk står for mesteparten av karakteren). Jeg syns prosjekter er utrolig mye mer spennende enn å løse mange, urelaterte småoppgaver og det har gitt god trening i å skrive rapporter, som gjør at jeg føler meg bedre rustet til å skrive masteroppgave neste år.

På prosjektoppgavene kan vi samarbeide i grupper på 2-3 studenter som da kan levere inn en felles rapport for hvert prosjekt. Det letter arbeidet litt, ved at vi kan fordele ulike oppgaver oss i mellom. Dessuten er det bra å diskutere sammen og lære å samarbeide med andre, noe vi ikke har gjort noe særlig av tidligere i utdannelsen.

Dessverre er arbeidsmengden alt for stor i dette emnet. ComPhys har tatt alt fokuset dette semesteret. Emnet burde hatt ett prosjekt mindre eller så burde prosjektene være mindre omfattende (eller er problemet at jeg legger for mye i det?). Jeg har ikke noe i mot å jobbe mye, men at ett emne har så stor arbeidsmengde går utover de andre emnene, og jeg syns det er urettferdig. Jeg har jo lyst til å ha tid til de andre emnene også! Den gode nyheten er at ComPhys er så bra at den store arbeidsmengden ikke gjør noe særlig negativt utslag på studentenes oppfattelse av emnet (det er i alle fall inntrykket jeg har).

Hvorfor dette emnet er så bra

Det er nesten litt vanskelig å ta ComPhys uten å vurdere å bytte studieretning til Computational Physics. Emnet er SÅ bra. Og foreleseren er SÅ bra.

I ComPhys har du en foreleser som lærer seg navnene på det jeg antar er rundt 50 studenter, som er i gruppetimene omtrent like mye som gruppelærerne, som setter seg ned ved siden av deg uten at du rakk opp hånden og spør hvordan det går, som gir inntrykk av å ha all tid i verden i stedet for å stresse avgårde til «viktigere» ting enn studentene sine (slik en del forelesere gjør), som liker å diskutere med studentene og få dem til å forstå, uten å få dem til å føle seg dumme. Her er en foreleser som strekker ut en hånd til studentene sine, i stedet for at studentene må klatre over det som kan være en høy terskel for å ta kontakt med foreleser selv. Her er en foreleser med godt, avslappet humør og gode pedagogiske evner som skaper et miljø som vi studenter får lyst til å være en del av.

Og så emnet. Emnet! Her er et emne som gjør seg selv relevant ved å bygge hele pensumet rundt praktiske applikasjoner og prosjekter hvor studentene anvender teorien vi lærer om. I stedet for å lære de numeriske metodene på abstrakte, kjedelige, rent matematiske problemer, anvendes de faktisk på fysikk som er interessant og som gjør at det blir gøy. Det er tross alt fysikere vi er, først og fremst, men med programmering som ett av våre viktigste verktøy.

Summen av dette er et emne vi blir glad i og som vi utrolig nok gledelig jobber livet av oss med, for det føles så relevant og viktig, og miljøet er så bra! For meg oppleves dette emnet som en oase i en ørken av middelmådige studieemner og halvmotiverte forelesere. Beklager, alle andre emner, men dere har fått noe å strekke dere etter nå.

Råd til deg som skal ta dette emnet

Mange studenter tar ComPhys siste året på bachelorgraden sin, mens for astrofysikere er det vanlig å ta emnet første året på mastergraden. Dersom arbeidsmengden ikke nedjusteres, ville jeg hørt med andre studenter eller studieadministrasjonen om hvilket semester de anbefaler deg å ta emnet i, sett i sammenheng med arbeidsmengden i de andre emnene du skal ta samtidig. For meg ble det nesten for mye dette semesteret. Forhåpentligvis er du flinkere på prioriteringer og tidsbruk slik at det ikke blir alt for håpløst!

Mitt siste og viktigste råd: Ta dette emnet! <3

Hva syns du om ComPhys, hvis du har tatt det?

Hovedbilde: kollasj av eget program og figur 🙂

Relaterte innlegg

2 tanker om «Semesteroppsummering: Computational physics (FYS4150)»

  1. Hei! Takk for kjempefin blogg 🙂 Bare lurte på hva dere brukte til å plotte ting og saker? Har lyst til å bytte til C++ videre i studiet men finner liksom ikkeno bra alternativ til matplotlib.

    1. Hei Zak, Takk for hyggelig kommentar 🙂 Det skal visst gå an å plotte med C++ direkte, men vi har ikke lært hvordan i ComPhys, for det er visst ikke helt rett frem. Så det vi gjorde var å skrive datafiler når vi gjorde utregninger i C++, som vi deretter importerte i Python og plottet med f.eks. Matplotlib …

Legg inn en kommentar

Dette nettstedet bruker Akismet for å redusere spam. Lær om hvordan dine kommentar-data prosesseres.