DM852: Introduktion til generisk programmering
Det Naturvidenskabelige Studienævn
Undervisningssprog: På dansk eller engelsk afhængigt af underviser, men engelsk ved internationale studerende
EKA: N340038102
Censur: Ekstern prøve
Bedømmelse: 7-trinsskala
Udbudssteder: Odense
Udbudsterminer: Forår
Niveau: Kandidat
STADS ID (UVA): N340038101
ECTS-point: 5
Godkendelsesdato: 27-10-2022
Varighed: 1 semester
Version: Godkendt - aktiv
Kommentar
NEDLÆGGES - udbydes sidste gang F24
1. Eksamensforsøg afholdes juni 2024 (ordinær eksamen)
2. Eksamensforsøg afholdes august 2024 (reeksamen)
3. Eksamensforsøg afholdes Januar 2025 (reeksamen)
Indgangskrav
Faglige forudsætninger
Studerende, der følger kurset, forventes at
- have viden om og kompeencer i objekt-orientere programmering.
- have basal viden om og færdigheder i systemprogrammering og funktionel programmering.
- have viden om computerarkitektur og basal oversætterkontruktion.
- have viden om almene algoritmer og datastrukturer, og basale færdigheder i deres implementering.
- være i stand til at vurdere kompleksiteten af algoritmer, med hensyn til køretid såvel som pladsforbrug.
Formål
Formålet med kurset er at sætte den studerende i stand til at implementere effektive generiske algoritmer og datasttrukturer i C++. I generisk programmering kan en algoritme formuleres ved brug af abstrakte typer der kun instantieres når algoritmen bruges med konkrete typer. Templates i C++ er en compile-time-mekanisme der gør det muligt at implementere generiske algoritmer på et højt abstraktionsnivea, og som er statisk type-sikre og har et minimalt overhead på køreid.
Kurset bygger på kompetencer i programmering, computer-arkitektur, systemprogrammering, algoritmer og data strukturer, og oversætterkonstruktion, med henblik på at kombinere dem, for at gøre den studerende i stand til at lave genbruglige praktiske implementeringer af almene algoritmer og datastrukturer.
I relation til uddannelsens læringsmål har kurset eksplicit fokus på
- ekspertviden på et afgrænset fagområde, der er baseret på det højeste internationale forskningsfelt inden for det datalogiske fagområde.
- at kunne forstå og på et videnskabeligt grundlag reflektere over det datalogiske fagområdes viden samt kunne identificere videnskabelige problemstillinger.
- beskrive, analysere og løse avancerede datalogiske problemstillinger ved hjælp af de lærte modeller.
- analysere fordele og ulemper ved forskellige datalogiske metoder, også inden for fagligt komplekse områder.
- 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
Efter kurset er det forventet at den studerende har følgende.
Viden om
- objektmodellen i C++, og de overordnede forskelle til forskelle i andre almene programmeringssprog.
- den basale brug af exceptions i C++ og deres interagering med objektmodellen og håndtering af resourcer.
- forskellige typer af polymorfi på et basalt niveau.
- de fundamentale principper for generisk programmering i C++, deriblandt forskellen mellem abstrakte beskrivelser, beskrivelser ved brug af koncepter og konkrete implementeringer af algoritmer og datastrukturer.
- fundamentale koncepter for generiske datastrukturer i C++, deriblandt, regularitet og iterators,
- overordnede forskelle i understøttelse for generisk programmering i almene programmeringssprog.
- basal brug af template-metaprogrammering i C++ for at løse konkrete problemer.
Færdigheder i
- programmering i C++ med moderne faciliteter i sproget og almene mønstre.
- implementering af generiske datastrukturer der modellerer givne koncepter.
- implementering af generiske algoritmer ved brug af interfaces defineret af givne koncepter.
- basal implementering af check af koncepter for datastrukturer.
- basal brug af template-metaprogrammering i C++ for at løse konkrete problemer.
Kompetener i
- basalt design af generiske datastrukturer der modellerer givne koncepter.
- basalt design af generiske algoritmer ved brug af interfaces defineret af givne koncepter.
- basal dokumentering af generiske datastrukturer der modellerer givne koncepter.
- basal dokumentering af generiske algoritmer der bruger interfaces defineret af givne koncepter.
- basal evaluering af den prakiske effektivitet af generiske algoritmer og datastrukturer, both med hensyn til pladsforbrug og køretid.
- kommunikation og diskussion af basale designvalg for generiske algoritmer og datastrukturer.
- opnå videregående viden om generisk programmering.
Indhold
De følgende hovedemner indgår i kurset.
- Programmering i C++, deriblandt brug af standardbiblioteket, og idéerne bag dele af dets implementering.
- Templates, type-deduktion og type-sikkerhed.
- Fejlhåndtering.
- Resource-håndtering (eks. hukommelse).
- Almene generiske datastrukturer.
- Almene generiske algoritmer.
- Metaprogrammering.
Litteratur
Eksamensbestemmelser
Eksamenselement a)
Tidsmæssig placering
Forår og juni
Udprøvninger
Portfolio og test
EKA
N340038102
Censur
Ekstern prøve
Bedømmelse
7-trinsskala
Identifikation
Fulde navn og SDU brugernavn
Sprog
Følger, som udgangspunkt, undervisningssprog
Hjælpemidler
Tilladt, nærmere beskrivelse af eksamensreglerne vil blive offentliggjort i itslearning.
ECTS-point
5
Uddybende information
Portfolio består af: Afsluttende projekt og opgaver.
Et antal opgaver afleveret undervejs i kurset samt et afsluttende projekt. Karakter baseres på et samlet indtryk af komponenterne som indgår i evaluering, dog med højest vægtning af det afsluttende projekt. Censor vil have adgang til besvarelserne af opgaverne.
Reeksamen: har samme form som den ordinære eksamen, med et antal opgaver og et projekt, men hvor deadline(s) vil være i reeksamensperioden.
Et antal opgaver afleveret undervejs i kurset samt et afsluttende projekt. Karakter baseres på et samlet indtryk af komponenterne som indgår i evaluering, dog med højest vægtning af det afsluttende projekt. Censor vil have adgang til besvarelserne af opgaverne.
Reeksamen: har samme form som den ordinære eksamen, med et antal opgaver og et projekt, men hvor deadline(s) vil være i reeksamensperioden.
Vejledende antal undervisningstimer
Undervisningsform
På naturvidenskab er undervisningen tilrettelagt efter trefasemodellen, dvs. intro-, trænings- og studiefasen.
- Introfase: 30 timers forelæsnigner.
- Træningsfase: 10 timers laboratorieøvelser.
Aktiviteter i studiefasen:
- Brug af den tilegnede viden til at udvikle færdigheder og kompetencer i øvelser og projekter.
- Læsning og diskussion af de videnskabelige artikler, bog-kapitler og andet materiale.
Ansvarlig underviser
Skemaoplysninger
Administrationsenhed
Team hos Uddannelsesjura & Registratur
Udbudssteder
Anbefalede studieforløb
Overgangsordninger
Overgangsordninger beskriver, hvordan et kursus erstatter et andet kursus, når der ændres i et studieforløb.
Hvis der er lavet en overgangsordning for et kursus vil den fremgå af oversigten.
Se overgangsordninger for alle kurser på Det Naturvidenskabelige Fakultet.
Se overgangsordninger for alle kurser på Det Naturvidenskabelige Fakultet.