Modulets indhold, forløb og pædagogik
Mange softwaresystemer i den virkelige verden er komplekse, og
involverer multiple enheder, processorer, brugere, og komplekse
algoritmer. Dette modul introducerer flere metoder der er relevante
når store softwaresystemer skal udvikles og anvendes. Formålet er
at give den studerende en forståelse af objekt-orienteret analyse
og designmetoder. Derudover gives også en introduktion til
netværksprogrammering, parallelprogrammering, datastrukturer og
algoritmer.
Læringsmål
Viden
Studerende, som gennemfører modulet, vil opnå:
- Forståelse af de grundlæggende koncepter indenfor
objektorienteret design og analyse (f.eks., encaptulation,
inheritance, composition, association, interfaces)
- Forståelse af brugen af UML sproget til at producere og
kommunikere objekt-orienteret softwaredesign (structure, behaviour,
og interaction diagrams)
- Forståelse af struktur og værktøjer til at dokumentere
kode
- Forståelse af datastrukturer til brug for søgning og sortering
(grafer, linkede lister, køer, stakke, træer, heaps, hash
tabeller)
- Forståelse af begrebet algoritmisk kompleksitet, og Big-O
notation
- Forståelse af programmeringsbegreber relateret til netværk:
klienter og servere, sockets, porte, IP adresser
(statiske/dynamiske), Ethernet-adresser
- Forståelse af digital applikation og kommunikationsprotokoller:
OSI modellen, TCP og UDP
- Forståelse af koncepter bag parallelprogrammering: processer,
tråde, scheduling, bottlenecks og deadlocks, shared data, mutex
locks, race conditions
- Forståelse af terminologi og praktikker til
versionskontrol
Færdigheder
Studerende, som gennemfører modulet, vil være i stand til
at:
- Producere og forstå UML-baserede diagrammer med henblik på at
arbejde med objektorienteret design og analyse
- Implementere et objektorienteret design fra en
UML-beskrivelse
- Vælge og anvende passende datastrukturer til at skabe effektive
programmer til søgning og sortering
- Anvende programmeringsfærdigheder til at implementere et
multitrådet program der anvender netværk til at kommunikere mellem
to digitale enheder
- Anvende alment udbredt softwareversioneringssystem
Kompetencer
Studerende som gennemfører modulet vil være i stand til at:
- Producere og implementere objektorienterede
software-designs
- Dokumentere et objektorienteret softwaresystem ved brug af
UML
- Evaluere eksisterende kode indenfor netværk og multitrådning,
vurdere dets design og anbefale forbedringer
- Designe effektive løsninger ved brug af avancerede
datastrukturer til at løse programmeringsopgaver, særligt inden for
de medieteknologiske område
- Læse og designe algoritmer, og analysere deres
kompleksitet
Undervisningsform
Se oversigt over undervisningsformer under §17.
Eksamen
Forudsætning for indstilling til prøven
- For at kvalificere sig til eksamen, skal den studerende have:
- afleveret obligatoriske opgaver rettidigt
- færdiggjort obligatoriske studieaktiviteter rettidigt
Prøver
Prøvens navn | Programmering af komplekse software-systemer |
Prøveform | Skriftlig eller mundtlig |
ECTS | 5 |
Tilladte hjælpemidler | Med visse hjælpemidler:
Se semesterbeskrivelse |
Bedømmelsesform | 7-trins-skala |
Censur | Intern prøve |
Vurderingskriterier | Vurderingskriterierne er angivet i Universitetets
eksamensordning |