Anbefalede faglige forudsætninger for at
deltage i modulet
Viden svarende til kurserne Imperativ programmering og
Objektorienteret programmering, Computerarkitektur og
operativsystemer, samt programmeringserfaring svarende til
projektmodulet på 3. semester
Modulets indhold, forløb og pædagogik
FORMÅL
For at udvikle og vedligeholde moderne software, skal studerende
være i stand til at bruge avancerede programmeringsteknikker især
til håndtering af samtidighed
Læringsmål
Viden
Den studerende skal opnå viden om:
- hardware arkitektur for samtidighed: single-core, multi-core,
shared memory, caches, local memory, distributed memory, SIMD og
GPU
- mekanismer for samtidighed (processer, tråde, fibre,
synkronisering )
- mekanismer til delt hukommelses parallelitet med låse og
semaforer, låse fri, ikke blokerende algoritmer, transaktions
baseret hukommelse
- meddelelsesoverførsel samtidighed, og om hvordan samtidig
programmering kan bruges til parallel programmering
- programstruktureringsprincipper og designmønstre til håndtering
af samtidighed
- sproglige abstraktioner til samtidighed
- udfordringerne og begrænsningerne ved samtidighed (race
conditions, dead-locks, ydeevne (performance), flaskehals) i
praktisk softwareudvikling
Færdigheder
Den studerende skal opnå følgende færdigheder:
- kunne redegøre for de berørte teknikker og begreber ved brug af
fagets terminologi
- kunne bruge programstruktureringsprincipper og designmønstre
for samtidighed
- kunne ræsonnere datalogisk om og med de berørte begreber og
teknikker
Kompetencer
Den studerende skal kunne:
- sætte sig hurtigt ind i avancerede programmeringsteknikker fra
akademisk litteratur og/eller teknisk dokumentation
- bruge disse teknikker til at løse udfordrende, realistiske
problemer
- skrive korrekte, sikre, effektive og vedligeholdbare programmer
med klar adskillelse af bekymringer
- anvende test og profilering for at evaluere korrekthed og
performance af samtidige programmer
- bruge værktøjer til logning, sporing og performance-analyse til
at diagnosticere samtidighedsproblemer i systemer
- give en vurdering af deres egen kode, baseret på en systematisk
evaluering af rigtighed, valg af algoritmer og datastrukturer,
performance, fejlscenarier og elegance
Undervisningsform
Undervisningen tilrettelægges i henhold til de generelle
undervisningsformer for uddannelsen jf. § 17
Omfang og forventet arbejdsindsats
Det forventes at den studerende bruger 30 timer per ECTS,
hvilket for denne aktivitet betyder 150 timer.
Eksamen
Prøver
Prøvens navn | Concurrent Programming |
Prøveform | Skriftlig eller mundtlig |
ECTS | 5 |
Tilladte hjælpemidler | Eventuelle tilladte hjælpemidler, vil fremgå af kursussiden i
MOODLE |
Bedømmelsesform | 7-trins-skala |
Censur | Ekstern prøve |
Vurderingskriterier | Vurderingskriterierne er angivet i Universitetets
eksamensordning |
Yderligere informationer
Kontakt: Studienævn for datalogi via
cs-sn@cs.aau.dk eller
9940 8854