course-details-portlet

PROG2006

Avansert programmering

Studiepoeng 7,5
Nivå Videregående emner, nivå II
Undervisningsstart Vår 2026
Varighet 1 semester
Undervisningsspråk Engelsk
Sted Gjøvik
Vurderingsordning Samlet karakter

Om

Om emnet

Faglig innhold

Kurset er på engelsk. Kurset introduserer studentene til et bredt spekter av programmeringsspråk og paradigmer, med fokus på multiparadigmeaspekter og moderne funksjoner ved programmeringsspråk. Kurset dekker det grunnleggende om lambda-kalkulus og funksjonell programmeringsstil, late beregninger, minnehåndtering, hendelsesdrevet og reaktiv programmering, samt flertrådede og samtidige programmeringsmønstre. Kurset bruker også nye programmeringsteknikker som Smart Contracts. Språkene som brukes kan dekke, men er ikke begrenset til, Rust og Haskell (hovedspråk), Golang, Java/Kotlin, Dart og Solidity. Referanser til moderne C++ og andre språk gjøres gjennom hele kurset.

Generativ AI og store språkmodeller brukes til noen oppgaver for å lære og få erfaring med prompt engineering. Det oppmuntres til bruk av moderne kodegenereringsverktøy og det gjøres øvelser i bruken av dem i kurset.

Læringsutbytte

På slutten av kurset skal studentene ha spesialisert kunnskap og ferdigheter:

Kunnskap

  • Forstå det grunnleggende om multi-paradigme programmering
  • Forstå det grunnleggende om lambda-kalkulus og funksjonell programmeringsstil
  • Forstå hovedtrekkene til et lat funksjonsspråk
  • Forstå beregnings- og minneadministrasjonsproblemene som påvirker sekvensiell implementering av late funksjonelle språk
  • Forstå hendelsesdrevet programmering, reaktiv programmering, funksjonell programmering
  • Forstå flertråds/samtidig programmeringForstå hva smarte kontrakter er og hva de kan brukes til
  • Forstå styrken og begrensningene til generativ AI og store språkmodeller.

Ferdigheter

  • Kunne diskutere ulike programmeringsparadigmer: objektorientert og meldingsformidling, funksjonell, reaktiv, hendelsesdrevet, defensivKunne skrive programmer i en funksjonell stil, reaktiv stil og andre
  • Begrunn formelt om funksjonelle programmer
  • Bruk polymorfisme i objektorienterte og funksjonelle programmeringsparadigmer
  • Kunne bruke høyere ordens funksjoner
  • Begrunnelse for programmers kompleksitet i tid og romKunne bruke moderne tilnærminger til flertrådede og samtidige programmeringsoppgaverKunne skrive enkle smarte kontrakter
  • Kunne bruke generativ AI og veldefinerte spørsmål for store språkmodeller

Generell kompetanse

Har en forbedret evne til å diskutere programmeringsoppgaver

  • Kunne diskutere ulike løsninger på ulike programmeringsproblemer ved hjelp av ulike metaforer og programmeringsparadigmerKunne bidra til et bredt spekter av programmeringsmiljøer
  • Kunne vurdere og diskutere etiske, cybersikkerhets- og miljømessige (f.eks. ytelse og energiforbruk) begrensninger når du arbeider med programmeringsoppgaver
  • Kunne bidra med kunnskap og diskutere til desentraliserte systemer gjennom smart kontraktsprogrammering

Læringsformer og aktiviteter

  • Lectures
  • Tutorials and exercises
  • Web-based learning (online reading resources, online lectures and video tutorials)
  • Internal assignments
  • Project work

Merk: avhengig av lærernes tilgjengelighet vil forelesningene og undervisningsaktivitetene bli gjennomført på campus eller vil bli utført eksternt gjennom Zoom og Mentimeter. Dette er avhengig av undervisningsopplegg og lærernes tilgjengelighet våren 2026.

Mer om vurdering

Vurderingen er på engelsk. Sluttvurderingen er basert på mappen (60 %) og elektronisk skriftlig eksamen (40 %). Begge gjøres gjennom Inspera. Eksamen har bokstavkarakter. Mappen har også bokstavkarakter. Porteføljen består av flere oppgaver, typisk mellom 5-8 oppgaver. Det er noen obligatoriske oppgaver, og fullføring av nødvendige oppgaver er nødvendig for innlevering av den endelige mappen. De ikke-obligatoriske oppgavene er for ambisiøse elever på jakt etter bedre karakterer. Portfolioinnleveringen består av et individuelt prosjektlager, URL-er til oppdragsarkiv, refleksjonsdokumenter og en innspilt videopresentasjon av det enkelte prosjektet.

Kontinuasjon til skriftlig eksamen i august, kan enten gjøres skriftlig eller endres til muntlig.

Det er INGEN omprøve for porteføljen.Retaking av mappevurderingen kan gjennomføres for enkelte delvurderinger uten at alle delvurderinger må tas opp på nytt.

Spesielle vilkår

Krever opptak til studieprogram:
Data - Ingeniørfag (BIDATA)
Programmering (BPROG)

Forkunnskapskrav

PROG1003 Objekt-orientert programmering

Kursmateriell

Det eksakte kursmaterialet kan variere fra år til år, basert på utviklingen innen programmeringsspråk, og nye versjoner og oppdateringer til standarder.

Eksempler på kursmateriell kan inneholde, men ikke være begrenset til, følgende:

  • Haskell programming patterns
  • Rust programming book
  • Meta-programming, multi-threading patterns
  • Advanced programming techniques
  • Functional programming patterns: functors, monads, pure functions, higher-order functions
  • Abstract data types (Haskell/Rust)
  • Domain modeling using OO and Functional paradigms
  • Languages used for examples: Haskell, Rust, C++, Python, Golang, Kotlin, Dart
  • Reactive programming
  • Advanced security techniques: defensive programming

Fagområder

  • Informatikk
  • Program/system-utvikling

Kontaktinformasjon

Emneansvarlig/koordinator

Faglærere

Ansvarlig enhet

Institutt for datateknologi og informatikk

Eksamen

Eksamen

Vurderingsordning: Samlet karakter
Karakter: Bokstavkarakterer

Ordinær eksamen - Vår 2026

Skriftlig eksamen
Vekting 40/100 Hjelpemiddel Kode E Dato 22.05.2026 Tid 09:00 Varighet 3 timer Eksamenssystem Inspera Assessment
Sted og rom for skriftlig eksamen

Oppgitt rom kan endres og endelig plassering vil være klar senest 3 dager før eksamen. Du finner din romplassering på Studentweb.

Mustad, Inngang D
Rom M438 Eksamensrom 4.etg, Inngang D
1 kandidat
Smaragd
Rom S310
29 kandidater
Rom S410
22 kandidater
Mappe
Vekting 60/100 Eksamenssystem Inspera Assessment

Utsatt eksamen - Sommer 2026

Skriftlig eksamen
Vekting 40/100 Hjelpemiddel Kode E Varighet 3 timer Eksamenssystem Inspera Assessment Sted og rom Ikke spesifisert ennå.