✕  Lukk søk

C++ programmering (PG4401)

Innledning

Emnet skal gi studentene kunnskap om fundamentale og avanserte programmeringsbegreper i språket C++. Målet er å videreutvikle studentenes programmeringskunnskaper til det som er nødvendig for å utvikle effektive og komplekse systemer, inklusive spill og interaktive applikasjoner. De vil lære å beherske Microsofts Visual Studio som IDE for C++.

Læringsutbytte

Kunnskap

Studenten...

  • har kunnskap om referanser og pekere, samt deres relasjon til hverandre
  • har kunnskap om bibliotek for 2D grafikkprogrammering
  • har kunnskap om grunnleggende konsepter i 2D grafikkprogrammering
  • har kunnskap om minneallokering i C++, inklusiv forskjellene på stack og heap
  • har kunnskap om function pointers i C++, samt callback functions og functors
  • har kunnskap om templates og deres bruksområder
  • har kunnskap om ulike revisjoner av C++ og de viktigste forskjellene

Ferdigheter

Studenten...

  • behersker et egnet IDE som C++ programmeringsmiljø (opprette projects, kompilere, linke, kjøre)
  • behersker debuging i et egnet IDE
  • kan programmere med standard I/O (cin, cout)
  • behersker skriving og lesing til og fra fil med streams
  • kan anvende pekere og referanser
  • behersker korrekt anvendelse av minne med new og delete
  • behersker korrekt anvendelse av const og mutable
  • kan programmere med containers, algoritmer og iteratorer fra STL
  • kan anvende og utvikle egne templates
  • kan anvende objektorientert programmering i C++ med bruk av klasser, objekter, arv og polymorfi
  • kan programmere med threads og synkroniseringsmekanismer i C++
  • kan anvende smart pointers
  • kan programmere med operator-overlasting
  • kan håndtere og lage egne exceptions
  • kan inkludere og anvende tredjepartsbiblioteker
  • kan beherske enkel 2D grafikkprogrammering
  • kan benytte callback functions
  • kan anvende tid som en faktor under kjøring av et program
  • kan håndtere brukerinput interaktivt i applikasjoner
  • kan utnytte "move semantics" for bedre kode
  • kan benytte tråder, promises og futures til parallell programmering

Generell kompetanse 

Studenten...

  • kan utvide sin forståelse for hvordan objektorientering og template programming kan benyttes til å skape veldesignede programmer
  • kan forstå poenget med operator-overlasting og bruksområde
  • kan forstå når man skal bruke tredjeparts biblioteker og når en skal utvikle selv
  • kan forstå hvordan parallell programmering er nødvendig for å få optimal ytelse av moderne hardware

Emnet inngår i

Bachelor i informasjonsteknologi - Spillprogrammering

Bachelor i informasjonsteknologi - Intelligente systemer

Læringsaktiviteter

12 forelesninger med øvinger.

Anbefalt tidsbruk

Deltakelse i undervisning og veiledning: 24 timer

Selvstudium: 80 timer

Selvstendig øving / lab-arbeid / praktisk arbeid individuelt eller i grupper: 24 timer

Gjennomføring av og forberedelse til eksamen: 72 timer

Anbefalt tidsbruk totalt: 200 timer

Arbeidsverktøy

IDE med kompilator for C++

Obligatorisk aktivitet

Obligatorisk arbeidskrav: Består av én individuell oppgave som må vurderes godkjent  

Individuell kvalifisering: G/IG (godkjent/ikke godkjent) 

Gjennomføring: Individuell

Etterprøvbar: Ja

Arbeidskrav leveres eller gjennomføres i henhold til informasjon gitt av emneansvarlig. 

Arbeidskrav foretas innenfor emnets varighet og skal registreres som godkjent/ikke godkjent minimum to uker før eksamen/eksamensperioden. 

Godkjent arbeidskrav kvalifiserer for adgang til eksamen. Ved ikke godkjent arbeidskrav meldes studenten av eksamen. 

Eksamen

Eksamen: Skriftlig individuell hjemmeeksamen

Varighet: 4 uker

Gradering: Nasjonal karakterskala A - F (F er ikke bestått)

Vekting: 100 % av vurderingen

Hjelpemidler: Alle hjelpemidler er tillatt

Kontinuasjon

Kontinuasjon av eksamen: Individuell innlevering av samme oppgave i forbedret versjon over en uke 

Kontinuasjon av arbeidskrav: Individuell innlevering av oppgave i forbedret versjon

Merknader

Undervisningen vil bli levert på norsk eller engelsk avhengig av undervisere.