Programmering af komplekse software-systemer

2020/2021

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 navnProgrammering af komplekse software-systemer
Prøveform
Skriftlig eller mundtlig
ECTS5
Tilladte hjælpemidler
Med visse hjælpemidler:
Se semesterbeskrivelse
Bedømmelsesform7-trins-skala
CensurIntern prøve
VurderingskriterierVurderingskriterierne er angivet i Universitetets eksamensordning

Fakta om modulet

Engelsk titelProgramming of Complex Software Systems
ModulkodeMSNMEDB3204A
ModultypeKursus
Varighed1 semester
SemesterEfterår
ECTS5
UndervisningssprogDansk
UndervisningsstedCampus Aalborg
Modulansvarlig

Organisation

StudienævnStudienævn for Medieteknologi
InstitutInstitut for Arkitektur og Medieteknologi
FakultetDet Tekniske Fakultet for IT og Design