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ålKurset 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ålbeskrivelseFor 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.
IndholdKurset 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
LitteraturMeddeles 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
UndervisningsformAktiviteter 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.