DM852: Introduktion til generisk programmering (5 ECTS)

STADS: 15018701

Niveau
Kandidatkursus

Undervisningsperiode
Kurset er placeret i efterårssemesteret.

Ansvarlige undervisere
Email: jlandersen@imada.sdu.dk

Skemaoplysninger
Hold Type Dag Tidsrum Lokale Uger Kommentar
Fælles I Tirsdag 12-14 IMADA semi 36-41,43-51
Fælles I Torsdag 16-18 IMADA semi 36,38-40,43-51
Fælles I Torsdag 16-18 U17 37,41
Vis hele skemaet
Vis personligt skema for dette kursus.

Kommentar:
Ubegrænset deltagerantal.

Indgangskrav:
Ingen.

Faglige forudsætninger:
Studerende, der følger kurset, forventes at:
  • have kendskab til objekt-orienteret programmering, basal system programmering og basal funktionel programmering.
  • have kendskab til maskinarkitektur og basal oversætterkonstruktion.
  • kunne vurdere kompleksitet af algoritmer, såvel med hensyn til køretid som med hensyn til pladsforbrug.


Formål
Kurset har til formål at sætte den studerende i stand til at implementere effektive generiske algoritmer og datastrukturer i C++. I generisk programmering kan algoritmer beskrives ved abstrakte typer der først bliver instantieret når algoritmerne benyttes. Templates i C++ er en compile time-mekanisme der gør det muligt at implementere høj-niveau generiske algoritmer der er statisk type-sikre har minimalt runtime overhead.

Kurset bygger oven på den programmeringsviden der er erhvervet i tidligere kurser og benytter koncepter fra blandt andet DM552 Programmeringssprog, DM546 Oversætterkonstruktion og DM548 Computerarkitektur og systemprogrammering. Kurset giver den studerende et godt fagligt grundlag for praktisk implementering af algoritmer og datastrukturer i eksempelvis et speciale.

I forhold til uddannelsens kompetenceprofil har kurset eksplicit fokus på at give de studerende viden, kompetencer og færdigheder til at

  • beskrive, analysere og løse avancerede datalogiske problemstillinger ved hjælp af de lærte modeller.
  • belyse fremsatte hypoteser på kvalificeret teoretisk baggrund og forholde sig kritisk til egne og andres forskningsresultater og videnskabelige modeller.
  • udvikle nye varianter af de lærte metoder, hvor det konkrete problem kræver det.
  • formidle forskningsbaseret viden og diskutere professionelle og videnskabelige problemstillinger med både fagfæller og ikke-specialister.
  • planlægge og udføre videnskabelige projekter på højt fagligt niveau herunder styre arbejds-og udviklingssituationer, der er komplekse, uforudsigelige og forudsætter nye løsningsmodeller.
  • kunne tage ansvar for egen faglig udvikling og specialisering.


Målbeskrivelse
For at opnå kursets formål er det læringsmålet for kurset, at den studerende demonstrerer evnen til at:
  • demonstrere grundlæggende viden om principperne for generisk programmering.
  • designe, implementere og dokumentere generiske datastrukturer der modellerer givne koncepter.
  • designe og implementere generiske algoritmer og dokumentere dem ved brug af koncepter.
  • forstå og anvende basal meta-programmering i C++ til at løse konkrete problemer.
Indhold
Kurset indeholder følgende faglige hovedområder:
  • Programmering i C++, herunder brug af standardbiblioteket og Boost
  • Templates, typededuktion og typesikkerhed
  • Fejlhåndtering
  • Ressourcehåndtering (eks. hukommelse)
  • Generiske algoritmer
  • Metaprogrammering
Litteratur
    Meddeles ved kursets start.


Kursets hjemmeside
Dette kursus benytter e-learn (blackboard).

Forudsætningsprøver
Projektopgaver. Bestået/ikke-bestået, intern bedømmelse ved underviser (15018712)

Eksamen- og censurform:
Projektrapport. Ekstern censur, 7-trinsskala (15018702)

Vejledende timetal
På naturvidenskab er undervisningen tilrettelagt efter trefasemodellen dvs. intro, trænings- og studiefasen.
Introfase: 28 timer
Træningsfase: 20 timer, heraf:
 - Eksaminatorie: 8 timer
 - Laboratorieøvelser: 12 timer

Aktiviteter i studiefasen

Undervisningsform
Aktiviteter i studiefasen:
  • Anvendelse af den tilegnede viden i projekter.
  • Sammenfatning af videnskabelige artikler/bogkapitler.


Sprog
Dette kursus undervises på dansk eller engelsk, afhængigt af underviseren. Dog altid på Engelsk ved deltagelse af internationale studerende.

Kursustilmelding
Se tilmeldingsfrister.

Pris for åben uddannelse
Se priser for enkeltkurser.

Denne kursusbeskrivelse var gyldig fra 1. september 2016 til 31. januar 2019.