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

Kunnskaper 

Studenten...

  • kjenner til referanser og pekere, samt deres relasjon til hverandre
  • kjenner til bibliotek for 2D grafikkprogrammering
  • kjenner til grunnleggende konsepter i 2D grafikkprogrammering
  • kjenner til minneallokering i C++, inklusiv forskjellene på stack og heap
  • kjenner til function pointers i C++, samt callback functions og functors
  • kjenner til templates og deres bruksområder
  • kjenner til 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
  • skal kunne kunne programmere med standard I/O (cin, cout)
  • behersker skriving og lesing til og fra fil med streams
  • skal kunne anvende pekere og referanser
  • behersker korrekt anvendelse av minne med new og delete
  • behersker korrekt anvendelse av const og mutable
  • skal kunne programmere med containers, algoritmer og iteratorer fra STL
  • skal kunne anvende og utvikle egne templates
  • skal kunne anvende objektorientert programmering i C++ med bruk av klasser, objekter, arv og polymorfi
  • skal kunne programmere med threads og synkroniseringsmekanismer i C++
  • skal kunne anvende smart pointers
  • skal kunne programmere med operator-overlasting
  • skal kunne håndtere og lage egne exceptions
  • skal kunne inkludere og anvende tredjepartsbiblioteker
  • skal beherske enkel 2D grafikkprogrammering
  • skal benytte callback functions
  • skal kunne anvende tid som en faktor under kjøring av et program
  • skal kunne håndtere brukerinput interaktivt i applikasjoner
  • skal kunne utnytte "move semantics" for bedre kode
  • skal kunne benytte tråder, promises og futures til parallell programmering

Generell kompetanse 

Studenten...

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

Emnet inngår i

Spillprogrammering, Intelligente systemer

Læringsaktiviteter

12 forelesninger med øvinger.

Anbefalt tidsbruk

Deltakelse i undervisning og veiledning - 24 timer Selvstudium - 80 timer Selvstendige forberedelse til presentasjon/diskusjon i klassen - 0 timer Studentarbeid med prosjekter, produksjoner, oppdrag mv. - 0 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

Arbeidskrav: Består av en eller flere oppgaver/aktiviteter som til sammen må vurderes godkjent

Kvalifisert: G/IG (godkjent/ikke godkjent)

Hjelpemidler: Alle hjelpemidler er tillatt

Studenten må ha fått godkjent arbeidskravet i henhold til frister i retningslinjer for eksamen for å få lov til å avlegge eksamen.

Eksamen

Eksamensdel: Sammensatt eksamen i gruppe (2-3 studenter) bestående av en prosjekteksamen (75%) og en skriftlig hjemmeeksamen (25 %)

Varighet hjemmeeksamen: 72 timer

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

Vekting: 100 % av sammensatt vurdering

Hjelpemidler: Alle hjelpemidler er tillatt

Vurderingskriterier

Konferer læringsutbyttebeskrivelsen.