Man in front of a computer screen

Study Tracks

You have the chance to study a subject area in depth. By selecting different elective and restricted elective courses you can either compose your own study track or specialize within one of these areas with a recommended course structure.



Developing algorithms for computational problems is essential in software development.

During this study track you will obtain solid knowledge of algorithmic paradigms, advanced algorithmic techniques, and various data structures applicable to a large spectrum of problems occurring when developing complex software. You will also be able to argue about solvability of computational problems, correctness, time- and space-complexity of algorithms.

Some track courses focus on theoretical aspects while others are oriented toward practical applications (big data, optimization, bioinformatics, software engineering).

Recommended prerequisites

If you want to follow this study track, your BSc background should include an introductory course on algorithms and data structures as well as solid working knowledge of basic discrete mathematics (elementary set theory, induction proofs, big-O notation, etc.), and linear algebra.




This study track give you a solid foundation in the principles of programming languages and formal methods, with a particular emphasis on exploiting programming-language technology in safety- or performance-critical application domains.

You will learn the basic concepts and methodology for formally defining the meaning of programs and languages, and for proving correctness, equivalence, and other properties of both program fragments and particular language features.

You will get a systematic knowledge of resource-aware models of computation, and of the various fundamental limits on computational performance, or accuracy of program analysis.

At the same time, you will get hands-on experience with performing analysis and transformations of non-trivial programs, with writing tools for assisting in such tasks, and with expressing practical algorithms from a variety of domains in a form suitable for parallel execution.

Recommended prerequisites

Your BSc background should include an introductory compilers or programming-language implementation course, as well as solid working knowledge of basic discrete mathematics (elementary set theory, induction proofs, big-O notation, etc.).

However, even if you have no significant prior background in functional, declarative, or concurrent programming, you will in any case receive an introduction to those topics in the Advanced Programming course, prior to starting on the study track.



The study track in Image Analysis and Computer Vision is aimed at educating specialists in the growing market for vision-based solutions to a broad range of applications. Also part of the track is physics-based modeling and simulations.

The track offers a solid and broad program covering both the theoretical foundation and the state-of-the-art applications within a range of tasks. Recent developments include a significant usage of techniques from Machine Learning. Therefore, the study program includes such courses.

Graduates will acquire a solid background for solving the many unsolved problems in industry, in research, within high-tech companies including those in social media, animated movies etc.


Students are expected to have a basic mathematical and statistical knowledge and an extensive knowledge and experience with programming. For the math, introductory courses within linear algebra and statistics at university level are a minimum, and more will indeed show advantageously.

If you have a bachelor in Computer Science and you enjoyed the math/stat-courses, then you probably will feel at home within the IACV-program. If you have a bachelor in math, in statistics or physics, and you have qualifications for acceptance at the MSc-CS-program, then you may fit as well.



The Machine Learning study track educates specialists in development, analysis, and application of machine learning algorithms. The track offers a solid and broad program ranging from theoretical foundations to practical aspects of machine learning. It provides a wide range of courses covering various aspects of machine learning, including frequentist learning, Bayesian inference, deep learning, online and reinforcement learning, and information retrieval. Graduates of the machine learning study track will come out with a solid theoretical understanding and hands-on experience in this fascinating and rapidly growing area, which has already revolutionized so many aspects of our life, including speech and image understanding, machine translation, bioinformatics, and many more, and continues to changing our lives at an ever increasing pace. They will be well prepared for solving challenging data analysis tasks and pursuing a career in science or industry.

Recommended prerequisites

Knowledge of linear algebra corresponding to an introductory undergraduate course on the topic is expected (in particular: vector spaces; matrix inversion; eigenvalue decomposition; linear projections). This knowledge can be acquired/refreshed using any introductory book on linear algebra.

Knowledge of basic calculus at an advanced high-school level is also expected (in particular: rules of differentiation; simple integration). This knowledge can be acquired/refreshed using any introductory book on calculus.

Knowledge of basic statistics and probability theory is a plus (in particular: discrete and continuous random variables; independence of random variables and conditional distributions; expectation and variance of random variables; central limit theorem and the law of large numbers).  

Basic knowledge of and experience in programming is required.

Weaknesses in one or more of the above areas should not stop you from following this study track, however, be prepared to spend some extra self-study time


This study track covers a broad range of courses related to machine learning and language technology including deep learning, advanced courses in natural language processing, and information retrieval. The language technologies study track equips students with a diverse skillset, combining fundamental and applied courses, as well as a combination of theoretical and practical skills. Graduates will have a strong background in machine-learning approaches to natural language understanding and processing, giving them an excellent platform for pursuing a career in industry or academia.

Recommended prerequisites

We recommend a BSc in Computer Science, Machine Learning or Data Science.




This track focuses on the design, implementation, and evaluation of interactive computing systems for human use.

It covers the main technological aspects, including classical and emerging interface modalities, such as haptics or virtual reality, with a particular emphasis on mobile interfaces – but also the psychological and cognitive aspects involved in interaction and collaboration, including proper design, execution, and analysis of experiments and user studies.

You will learn about technical aspects such as visual tracking, mobile technology and hardware development), as well as methods for studying users' work and desires (e.g., user-centered design, requirements elicitation, ethnographic methods).

Furthermore, the track focuses on analyzing the complexities of organizations and their use of information technology (e.g., groupware, collaborative systems, massive online learning systems).

Courses emphasize both more theoretical competences (e.g., analyzing research papers) and more hands-on activities (e.g., implementing mobile systems and prototyping hardware).

Recommended requirements

Having completed HCI studies at bachelor level is a requirement; having pursued courses about computer graphics and project management is a benefit.

Sample MSc thesis

To give you an idea of what an MSc thesis in the HCI track could be about, here are some representative examples of thesis titles from the past few years:

  • Detecting and understanding the impact of affect in touch-based computer interaction.
  • Distortion Correction on Deformable Displays.
  • ​User-defined midair gestures for large displays.




The Software Engineering study track encompasses all-important aspects of software engineering, including:

  • participatory design and user involvement
  • requirements engineering and prototyping
  • systems analysis and design
  • test, validation and implementation
  • project management
  • software architecture and evolution.

You will learn how to assess user needs and how to build and implement software solutions that are genuinely useful to them. You will also learn how to manage a project, and develop skills in the areas of risk assessment, scheduling, budgeting, and coordination.

This will involve a mixture of theoretical learning, hands on software development, teamwork and collaboration with external parties (e.g., private companies, public institutions, and non-profit organizations).

Sample MSc theses

To give you an idea of possible thesis topics, here are some examples of thesis titles from the past few years:

  • A software platform for development of secure and privacy-protected M-health applications
  • Model-Driven Development of RESTful Web Services
  • Mobile Phone-based Estimation of Energy Expenditure during Outdoor Movement
  • Component reusability in cross-platform mobile solutions




This track offers a unique combination of classic computer science and game development. 

In the first semester of the elective part of the programme, you follow courses from the other tracks based on your particular interests, e.g., algorithmics for game AI, simulation for game physics, languages for game scripting, or mobile-interface technology. 

In the second semester, you participate in a large, cross-institutional development project at DADIU (the Danish National Academy of Digital Interactive Entertainment), in which you collaborate with animators, sound designers, game directors, and other technical-artistic competences to create a substantial computer game.

This track may be relevant for you not only if you are specifically interested in game programming, but also in related areas such as gamification for health or learning, or simply if you want practical experience working in a large, multidisciplinary development team.

Read more about DADIU.