autumn 2022
DTE-3611 Algorithms - Design and Analysis - 10 ECTS

Last changed 29.09.2022

Application deadline

Applicants from countries within EU/EEA: June 1st. Exchange students and Fulbright students: April 15th.

Type of course

The course can be taken as a single subject.

Admission requirements

A relevant undergraduate Bachelor degree in Engineering program in computer science or equivalent.

In addition, the following requirements must be met:

- minimum 25 credits in mathematics (equivalent to Mathematical Methods 1, 2 og 3), 5 credits in statistics and 7,5 ects i physics on a higher level is required.

Application Code: 9371

Recommended knowledge about and being able to apply basic object-oriented programming, algorithms and data structures. Recommended experience with basic C++ programming, compilers, build systems and debugging

Course content

A master-level course in algorithms that focuses on decidability and analysis, design and efficiency, and implementation.

Advanced algorithms in selected categories covering different complexities are analyzed, implemented, benchmarked, and reported utilizing scientific methods.

Determinability, NP-completeness, dynamic programming, network flow and graph algorithms, matching, linear programming, and selected advanced data structures are central topics.

Objectives of the course


  • An overview of standard non-polynomial problems and problem settings;
  • Basic understanding of polynomial, pseudo-polynomial, and non-polynomial problems, their differences, and some proofs;
  • Basic understanding of solution strategies for pseudo-polynomial and non-polynomial problems;
  • Basic knowledge of challenging tasks in research by understanding a scientific way of working;
  • Special knowledge of theories, methods, and tools for determining, analyzing, and solving problems using computer programming.



  • Write technically secure and efficient source code that implements a given algorithm, its invariants, and bounds;
  • Determinability, performance analysis, and benchmarking;
  • Write a scientific report which communicates the applied methods, experiments, and results.



  • Can apply the knowledge and skills to analyze problem settings, determine their solvability, and recognize and distinguish between polynomial and non-polynomial problems;
  • Can apply the knowledge and skills to solve solvable problems, and propose solutions for some NP-complete problems;
  • Can apply the knowledge and skills to communicate problems, challenges, properties, limitations, and results to other specialists in the field of computer science engineering.

Language of instruction and examination


Teaching methods

The course is taught using an intensive teaching strategy during four non-consecutive weeks as a mixture of lectures and problem-based learning.

Problem-based learning, in this course, focuses on utilizing analysis- and programming skills to analyze problem settings, suggest strategies for solving, and then solve problems.

Efficient algorithms and their design and bounds are emphasized.

Information to incoming exchange students

This course is open for inbound exchange student who meets the admission requirements. Please see the Admission requirements" section".

Master Level

Do you have questions about this module? Please check the following website to contact the course coordinator for exchange students at the faculty:



Examination systems: Duration: Grade scale:
Oral exam 40 Minutes A–E, fail F
Coursework requirements – To take an examination, the student must have passed the following coursework requirements:
Programming project Approved/ Not approved

More info about the oral exam

Individual oral exam.

Re-sit examination

There will not be arranged a re-sit exam in this course.
  • About the course
  • Campus: Narvik |
  • ECTS: 10
  • Course code: DTE-3611
  • Tidligere år og semester for dette emnet