NITH 2012 - 2013 / Emner / Programmeringsemner (PG,IPG) / PG4400 C++ Programmering  

PG4400 C++ Programmering

Emnenivå
Bachelor

Emnekode
PG4400

Emnenavn
C++ Programmering

Studiepoeng
7,50

Emneansvarlig
Kjetil Raaen

Godkjenningsdato


Hensikt
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 Microsoft Visual Studio som IDE for C++.

Forutsetninger
Objektorientert programmering som fra PG2100 (Programmering 2), samt C-programmering som fra PG3400 (Programmering i C for Linux). Eventuelt tilsvarende emner.

Læringsutbytte

Kunnskap

  • Kjenne til referanser og pekere, samt deres relasjon til hverandre.
  • Kjenne til et bibliotek for 2D grafikkprogrammering.
  • Kjenne til grunnleggende konsepter i 2D grafikkprogrammering.
  • Kjenne til minneallokering i C++ inklusiv forskjellene på stack og heap.
  • Kjenne til erstatninger for function pointers i C++, som callback functions og functors.
  • Kjenne til templates og deres bruksområder.
  • Kjenne til ulike revisjoner av C++ og de viktigste forskjellene.
  • Kjenne til hvordan kompilatoren utnytter CPU, minne og cache.

Ferdigheter

  • Beherske Visual Studio som C++ programmeringsmiljø (opprette projects, kompilere, linke, kjøre).
  • Beherske debugging i Visual Studio.
  • Programmere med standard IO (cin, cout).
  • Beherske skriving og lesing til og fra fil med streams.
  • Anvende pekere og referanser.
  • Korrekt anvendelse av minne ved new og delete.
  • Korrekt anvendelse av const og mutable.
  • Programmere med containers, algoritmer og iteratorer fra STL.
  • Kunne anvende og utvikle egne templates.
  • Kunne anvende objektorientert programmering i C++ med bruk av klasser, objekter, arv og polymorfi.
  • Programmere med threads og synkroniseringsmekanismer i C++.
  • Anvende smart pointers for å forenkle minnehåndtering.
  • Programmere med operator-overlasting.
  • Håndtere og lage egne exceptions.
  • Kunne inkludere og anvende tredjepartsbiblioteker ved hjelp av macroer i Visual Studio.
  • Beherske enkel 2D grafikkprogrammering.
  • Benytte callback functions.
  • Kunne anvende tid som en faktor under kjøring av et program.
  • Håndtere brukerinput interaktivt i applikasjoner.

Generell kompetanse

  • Utvide sin forståelse for hvordan objektorientering kan benyttes til å skape veldesignede programmer.
  • Forstå poenget med operator-overlasting og bruksområde.
  • Forstå når man skal bruke tredjeparts biblioteker og når en skal utvikle selv.
  • Forstå hvordan parallel programmering er nødvendig for å få optimal ytelse av moderne hardware. 
Gjennomføring
Forelesninger og øvinger, til sammen 4 timer/uke. Kurset gjennomføres med 12 forelesninger a ca 2 timer og 12 lærerstyrte øvinger a ca 2 timer. Øvingene er ikke obligatoriske, men for å oppnå kompetansemålene forventes det at studentene fullfører øvingsoppgavene på egenhånd der øvingstimene ikke strekker til.

Anbefalt tidsbruk

Aktivitet

Tidsbruk

Deltakelse i undervisning

24

Selvstudium

92

Forberedelse til presentasjon/diskusjon i klassen

0

Øving

24

Vurdering

60

Anbefalt tidsbruk totalt

200

Verktøy

Microsoft Visual Studio med 3. parts biblioteker for ekstra funksjonalitet.

Karakterskala
Letter grades A-E for passed and F for failure

Vitnemålstekst
Emnet har gitt studentene kunnskap om fundamentale og avanserte programmeringsbegreper i språket C++. Studentenes programmeringskunnskaper er videreutviklet til det som er nødvendig for å utvikle effektive og komplekse systemer, inklusive spill og interaktive applikasjoner. De har lært å beherske Microsoft Visual Studio som IDE for C++.

Pensum

Se litteraturliste, under. Pensum dekkes i tillegg av forelesningsmaterialet og nødvendige hjelpemidler for å gjennomføre øvingsopplegget. Materiellet gjøres tilgjengelig for studentene fortløpende gjennom kurset.

Vurderingstype
Innlevering

Vurdering

Innlevering (40%)
Skriftlig eksamen (60%)




Litteraturliste:
Tittel Forfatter Forlag Utgitt år ISBN Utgave Kommentar Type Litteratur
C++ for Game Programmers  Michael J. Dickheiser  Charles River Media  2006  ISBN-13: 978-1-58450-452-8 ISBN-10: 1-58450-452-8   2nd edition    Bok  Pensum 

Vurdering / Assessment

Vekting (%):
40

Vurderingstype:
Innlevering / Assignment

Hjelpemiddel:
Alle / All

Varighet:
14 dager

Semester:
Vår / Spring


Vekting (%):
60

Vurderingstype:
Skriftlig / Written

Hjelpemiddel:


Varighet:
3t

Semester:
Vår / Spring