Programming of Complex Software Systems


Recommended prerequisite for participation in the module

The module adds to the knowledge obtained in Programming for Interaction and Introduction to Pro-gramming.

Content, progress and pedagogy of the module


Many real world software systems are complex, involving multiple devices, processors, users, and complex algorithms. To allow the students to work with such software systems, this module introduces several methods that are relevant when developing and using large software systems. The objective is to give the students an understanding of object-oriented software analysis and design methods. Furthermore, an introduction to network programming and parallel programming, data structures and algorithms is also given. Several of these aspects of the module can also support the Image Processing course running in parallel.

Learning objectives


Students who complete the module will obtain the following qualifications:

  • Understanding of the basic concepts of object-oriented design and analysis (e.g., encapsulation, inheritance, composition, association, interfaces)
  • Understanding of using the UML language to produce and communicate an object-oriented software design (structure, behaviour, and interaction diagrams)
  • Understanding of structure and tools for documenting codebases
  • Understanding of data structures used for search and sort algorithms (graphs, linked lists, queues, stacks, trees, heaps, hash tables)
  • Understanding of the concept of the complexity of an algorithm and big-O notation
  • Understanding of programming concepts related to networks: clients and servers, sockets, ports, IP address (static/dynamic), Ethernet address
  • Understanding digital application and communication protocols: the OSI model, TCP and UDP.
  • Understanding the concepts behind parallel programming: processes and threads, scheduling, bottlenecks and deadlocks, shared data, mutex locks, race conditions
  • Understanding of common versioning software practices and terminology


Students who complete the module will obtain the following qualifications:

  • Ability to both produce and understand UML-based diagrams in order to work with object-oriented design and analysis (application, analysis)
  • Ability to implement an object-oriented design from a UML description (application)
  • Ability to choose and apply appropriate data-structures to create efficient programmes for searching and sorting
  • Ability to apply to design a fitting software solution both in the field of networking and multithreaded programming
  • Ability to apply programming skills to implement a multithreaded program that uses the network to communicate between two digital devices (application)
  • Ability to use a commonly used software versioning system (application)


Students who complete the module will obtain the following qualifications:

  • Produce and implement object-oriented software designs (application)
  • Document an object-oriented software system using UML (application)
  • Evaluate existing code in the fields of network and multithreading, judge its design and recommend changes
  • Must have competencies in designing efficient solutions using advanced data structures to solve programming tasks, especially programming tasks related to medialogy, communication and IT/new media (application)
  • Read and design algorithms and analyse their complexity

Type of instruction

Refer to the overview of instruction types listed in the start of chapter 3. The types of instruction for this course are decided in accordance with the current Joint Programme Regulations and directions are decided and given by the Study Board for Media Technology.



Name of examProgramming of Complex Software Systems
Type of exam
Written or oral exam
In accordance with the current Joint Programme Regulations and directions on examination from the
Study Board for Media Technology:

To be eligible to take the exam the student must have fulfilled:
• handing in of written assignments or the like
• completion of certain – or all – study activities

Note that if admittance to the exam or parts of the assessment is to be based on written work or ex-ercises, a deadline is stipulated for when the work must be handed in.

Individual oral or written examination with internal censor. The assessment is performed
in accordance with the 7-point scale.
Permitted aids
With certain aids:
See semester description
Assessment7-point grading scale
Type of gradingInternal examination
Criteria of assessmentThe criteria of assessment are stated in the Examination Policies and Procedures

Facts about the module

Danish titleProgrammering af komplekse software-systemer
Module codeMSNMEDB3174
Module typeCourse
Duration1 semester
Language of instructionEnglish
Location of the lectureCampus Aalborg, Campus Copenhagen
Responsible for the module


Study BoardStudy Board of Media Technology
DepartmentDepartment of Architecture, Design and Media Technology
FacultyThe Technical Faculty of IT and Design