Pensum/læringskrav

I IN1910 skal vi dekke en bred rekke med emner innenfor programmering for naturvitenskapelige anvendelser med Python og C++. Det finnes ingen bok som dekker alle de temaene vi skal innom på veien. Istedet vil vi utvikle forelesningsnotater som dekker det dere skal lære. Disse vil deles gjennom et github repository og kan også leses gjennom Jupyterhub. Disse finner dere på følgende sider (dere må logge inn med deres UiO-bruker på begge sidene)

Det er forelesningsnotatene som definerer og dekker pensum. I tillegg kommer vi til å anbefale forskjellig tilleggslitteratur. Dette er ment for de som ønsker å gå mer i dybden på et tema, eller som ønsker et alternativ til forelesningsnotatene. Tilleggslitteraturen henvises til i forelesningsnotatene, og er stort sett kilder som er åpent tilgjenglig på nett.

I tillegg anbefaler vi bruk av A Primer on Scientific Programming with Python, Fifth Edition av Hans Petter Langtangen som referanseverk for Python. Boken dekker også flere deler av pensum i IN1910, og dette er kapitler som ikke er dekket av IN1900 i særlig stor grad. Boka anbefales også for de som ikke har mye erfaring med Python fra før, og som en repetisjon til de som ikke har brukt Python på en god stund.  

 

Liste over tema som dekkes i IN1910

Objekt-orientert Programmering

  • Lage klasser i Python og C++
  • Arv og hierarki, Polymorfisme, Interfaces, abstrakte klasser, virtuelle metoder

Versjonskontroll, validering,

  • Versjonskontroll med Git
  • Enhetstesting med pytest

C++

  • Skrive, kompilere og kjøre C++ kode
  • Forstå og forklare grunnleggende forskjeller mellom Python og C++
  • Datastrukturer i C++ (arrays, structs, klasser)
  • Enkel blandet programmering med Python og C++

Datastrukturer og Algoritmer

  • Dynamiske arrays, lenkede lister og binære søketrær
  • Algoritmeanalyse og Big Oh-analyse

Stokastiske simuleringer og tilfeldighet

  • Psuedotilfeldige tallgeneratorer
  • Random walks, markovkjeder 
  • Monte Carlo integrasjon

Profilering og optimalisering

  • Profilering og benchmarking
  • Algoritmeanalyse og optimalisering
  • Kort innføring i parallelitet
Publisert 19. aug. 2019 09:41 - Sist endret 19. aug. 2019 11:14