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

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, 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.


  • Design algorithms that can solve specific problems.
  • Write technically secure and efficient source code that implements a given algorithm, its invariants, and bounds.
  • Ability to check determinability, and perform performance analysis and benchmarking, for implementations of algorithms.
  • 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: 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
UiT Exams homepage

More info about the coursework requirements

Hand-in of a report and source code as specified by the teacher.

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