We use cookies to collect statistics

We start using cookies when you continue to another page. You can decline data collection by clicking here. We will use a cookie to remember your choice.

If you wish to avoid cookies altogether, you must disable cookies in your browser settings. However, rejecting all cookies will result in losing some of the functionalities of the website.

Read more about the IT University's use of cookies.

Accept cookies


Master of Science in
Software Development: Advanced Computing Track

The programme

The Advanced Computing Track of the 2-year MSc in Software Development (Cand.It, Advanced Computing Track) is a programme for you who have an IT-related undergraduate degree and wish to develop your skills and knowledge in software development on a high, academic level based on international research.

The programme focuses on business needs, and you will work on projects concerning software development and maintenance of software. You will also learn about the organizational and managerial part of a development process.

When you study the Advanced Computing Track of Software Development, you will gain in-depth knowledge of modern programming languages, databases, distributed systems, IT security, algorithms and data structures, software development processes, requirements, organization and management. The programme gives you opportunity to work with all phases of the development process – analysis, design, development, test and launch.

The programme is taught in English. There will be used cases and examples from both Danish and international organisations. 

Non-curricular events at the university can be held in Danish.

Software Development - Advanced Computing Track

Programme structure: Advanced Computing

The Advanced Computing track is aimed at students who hold a bachelor degree in software development or in a related area e.g. computer science or computer engineering. Combined with previous experience in programming and software development, you have the opportunity to design your own study programme to best fit you and your qualifications.

The AC track assumes that you when enrolling have a rich baggage of knowledge of computing from your previous degree.

It is extremely important that you have the prerequisites for completing the mandatory courses of the first year (see the table below). Expand the paragraph and see more about the prerequisites.

This track prepares you to work in the core of the software development industry, to contribute to development of new software technologies and tools.

See the curriculum for the MSc programme in Software Development.

Course of study for MSc in Software Development - Advanced Computing Track 
1st semester Software Design
 Elective Modules
Practical Concurrent and Parallel Programming
7,5 ECTS credits
Design I
7,5 ECTS credits
Course or Project**
7,5 ECTS credits
Course or Project**
7,5 ECTS credits
2nd semester
Software Design Elective Modules Specialisation Part 1
Advanced Programming
7,5 ECTS credits
Software Architecture 
and Security 

7,5 ECTS credits
Course or Project** 
7,5 ECTS credits
Course 1 
7,5 ECTS credits
3rd semester
Elective Modules Specialisation Part 2
Course or Project**
7,5 ECTS credits
Thesis Preparation
7,5 ECTS credits
Specialisation Course 2 (and 3) 
15 ECTS credits
4th semester
Master Thesis
30 ECTS credits


The mandatory content (30 ECTS) aims at giving you highly relevant skills in problem solving and designing software using modern methods and technological platforms. The mandatory content consists of four study activities which collectively is referred to as a 'module':

  • Software Design (30 ECTS): The module focuses on advanced techniques and methods for designing and  implementing drawn from both computer science and software engineering research, including model-driven development, problem solution techniques, programming languages, project organization, software architecture.

The four mandatory study activities:

  1. Algorithm Design
  2. System Security and Architecture
  3. Practical Parallel and Concurrent Programming 
  4. Advanced Programming

The Advanced Computing track courses, including mandatory courses, build on knowledge of basic discrete mathematics, algorithms and data structures and programming languages as well as Software Engineering. The courses correspond to the mandatory modules of the Design track.

In particular, you should know about the following topics:
  • propositional and predicate logic
  • counting
  • probabilities
  • sets and functions
  • automata, grammars and regular expressions
  • algorithmic problem solving techniques
  • sorting
  • trees and graphs
  • hashing
  • shortest path algorithms
  • big-O notation
  • complexity analysis
  • programming language syntax and parsing techniques
  • types
  • Object-Oriented Programming (preferably Java)
  • inner classes
  • generics
  • a first exposure to threads and locks
Usually, you learn about the topics above by taking courses on Discrete Mathematics, Algorithms and Data Structures, (Objected-Oriented) Programming and participating to some programming projects



The programme offers several specialisations, and you must choose at least one during your studies.  Specialisations are well organised collections of courses that allow you to reach advanced level in a specific area, and prepare you to write an MSc thesis.

You also have an excellent opportunity of shaping your own profile through electives. You can choose between all the courses offered at the IT University at master’s level, and even take electives at a different university. See all courses offered in the course list.

Specialisations offered on the Software Development Programme, Advanced Computing Track:

Specialisation: Business Analytics

This specialisation enables you to:

  • Design database systems for analysis of big data. Perform data mining using classification and prediction algorithms as well as clustering and rule association approaches 
  • Model and optimise business decisions using AI techniques, mathematical programming, constraint programming and meta heuristics 
Courses: Big Data Management, Data Mining & Intelligent Systems Programming 
Prerequisites: Basic programming skills (for example by having followed Introductory programming and Programming Workshop), Discrete mathematics.
Available on both tracks. Starts every semester (courses can be taken out of order)

Specialisation: Databases

The specialisation in Databases enables you to:

  • Structure and model data in order to design databases 
  • Implement database designs, and program complex database queries, triggers, and stored procedures, in widely used relational DBMSs 
  • Perform database tuning for improving the efficiency of large-scale databases 
  • Understand the concept of non-relational data (XML, geographic, textual) and use of simple indexing techniques and query languages for such data 
  • Architecting large scale distributed database systems Perform large-scale data analysis and data mining 

These skills are desirably for main stream jobs like software developer and database architect, in domains like business software, administrative software and web applications. 

Courses: Big Data Management, Database Tuning & Database Tuning Project
Prerequistes: Requires foundational programming skills (Introductory Programming and Programming Workshop, Foundations of Computing). 

Available on Advanced Computing. Starts every semester (courses can be taken out of order)

Specialisation: Algorithms

The specialisation in Scalable Computing enables you to:

  • Deal with computational problems where efficiency and scalability is crucial 
  • Formulate real-world problems as algorithmic ones, analyze the time complexity of algorithms, and predict their performance in a large scale setting 
  • Recognize computationally hard problems and apply techniques for dealing with them in practice 
  • Devise and implement new, efficient data structures and algorithms for problems based on known algorithms for related problems and on general techniques for designing algorithms 
  • Suggest suitable computing architectures for large-scale computations 
  • Algorithmic skills are typically sought by large multinational IT brands, and by small innovative start-ups developing new technologies. 

Courses: Design track: Intelligent Systems Programming, Algorithm Design, and Applied Algorithms
Prerequisites: Intermediate Programming Skills, Discrete mathematics, and basic algorithms and data structures (Introductory Programming, Programming Workshop, Foundations of Computing) 

Courses: Advanced Computing track: Intelligent Systems Programming, Algorithm Design Project & Algorithms Seminar. 
Prerequisites: Programming Skills, Discrete mathematics, and basic algorithms and data structures (Introductory Programming, Programming Workshop, Foundations of Computing, Algorithm Design) Available on both tracks (different courses). Starts every semester (courses can be taken out of order).

Specialisation: Software Engineering

This specialisation enables you to:

  • evaluate and select software engineering methods and processes based on current research to address software engineering challenges encountered in practice. 
  • systematically evaluate the application of methods, tools and techniques. 
  • design and implement the architecture of software applications answering both functional and non-functional requirements. 
  • relate the individual project to the overall IT strategy of an organisation. 
  • develop and implement an IT governance structure for an organisation. 

The specialisation is designed to enable you to work as a software engineer and, after gaining industrial experience, provide the base to take over roles as project manager or technical lead. You will read the courses together with students studying our part time Master in Software Engineering who already now work in these areas.

Courses: Software Architecture, Advanced Software Engineering and Enterprise Architecture. 
Prerequisites: Introductory Software Engineering, intermediate programming skills (note that you may need to take the introdcutory software engineering as an elective to satisfy these prerequisites).

Available on both tracks. Starts every semester (courses can be taken out of order). 



Specialisation: Programming Languages

By following this specialisation you will learn to:

  • Use formal and semi-formal modelling notations such as automata, abstract syntax and grammars, and tools for automatic processing such as lexing and parsing tools, simple code generators and verification 
  • Understand the concepts of byte code, abstract machines, interpretation, compilation, and simple static checking of programs, in order to design domain specific interpreters, develop software productivity tools or debug problems in projects using these technologies 
  • Utilize at least one declarative programming notation besides SQL 
  • Discuss and evaluate new technologies and tools in programming languages 
  • Compare and discuss programming languages. Efficiently learn new languages 

This specialisation aims to prepare you to take software developer and software architect jobs in mainstream software houses and consultancies (business software, administrative software, etc), as well as it serves as a potential entry point to research in programming languages.

Courses: Domain Specific Languages and Automated Software Analysis & Programming Language Seminar
Prerequisites: Intermediate level programming in Java, basics of discrete mathematics (Foundations of Computing). In general the specialization requires willingness to work with mathematical concepts.

Available only on Advanced Computing Track. Starts every Autumn.



Specialisation: Pervasive Computing

This specialisation enables you to:

  • Design mobile applications on the Android Platform, including use of basic distributed service architecture 
  • Design pervasive computing systemsusing state of the art design principles 

Courses: Mobile App Development, Pervasive Computing & Pervasive Computing Project 

Pre-requisites: Basic Programming skills in Java and object-oriented programming in general (e.g. by having followed Introductory Programming and Programming Workshop and OOP). 

Available on both tracks. Starts every Spring semester.

Specialisation: Critical Systems

The specialisation in Critical Systems enables you to:

  • Formally model, design and implement correct complex process-aware distributed systems 
  • Specify compliance rules (e.g. for security policies) formally using temporal logic and graphical formalisms 
  • Explain the principles of formal verification (model-checking) and apply model-checking tools 
  • Explain the principles of behavioural types and their application for robust implementation of complex distributed systems 

This specialisation aims to prepare you to take software developer and software architect jobs in software houses and consultancies taking part in development of distributed, service-oriented and process-aware information systems for which correctness and security plays a critical role (such as electronic patient records and other healthcare software, financial software, e-voting, aministrative systems, embedded software in safety-critical devices such transportation etc), as well as it serves as a potential entry point to research in model-based design, process-aware information systems, formal methods, programming, logic and semantics.

Courses: Business Process Modelling and Analysis (Spring), Critical Systems Seminar (Autumn), Critical Systems Project (Autumn) 
Prerequisites: Discrete Mathematics and Distributed Systems in Java (the latter only for the Critical Systems Seminar and Project)

Available only on Advanced Computing track. Starts every semester (courses can be taken out of order).



Career prospects

The competencies of Software Development and the global perspective of the programme prepares you for a career in both Danish and global context, working as e.g.:

  • System Developer
  • Programmer
  • Software Architect
  • IT Expert 
  • Database manager
  • Software Engineer
  • Quality Engineer
  • Project manager
  • System consultant 

If you want to explore the possibility for a PhD at the IT University see here.

After Graduation


It can be a professional boost and an advantage on your CV to do part of your studies at a foreign university. The IT University has exchange agreements with universities around the world, and to students with software development as their core competence, we recommend:


The teaching method for Software Development includes project work, which demands independent effort, collaborative skills and project management as well as ordinary lectures as you will find at any other university. Furthermore, you must be prepared to study literature including books and research papers. Your teachers are the best in their field – therefore they will also make demands on your abilities and commitment.

Software Development is developed in close cooperation with the business community, and the programme is designed to give you the opportunity to collaborate with private companies.

This means you will always be working with current challenges, and you will have an opportunity to make a network in the business community even before you graduate.

The programme is taught in English. However, there will be used both Danish and international cases and examples in classes.

ITU integrates research projects in the study programme, so the best candidates have the opportunity to try make their first steps into a research career and continue into a PhD programme.


Are you interested in studying at the IT University of Copenhagen, please contact The Study and Career Guidance.

Room 3D05 and 3D07
Rued Langgaards Vej 7
DK-2300 København S

Phone: +45 7218 5240

Email: studievejledningen@itu.dk