4th semester elective courses
You are about to choose your electives for the Spring term 2018.
Before you choose you must go through the course descriptions.

All courses are 10 ECTS.
All courses are evaluated according to the general curriculum, section 15 "Elective educational elements".
During each course the student must hand in mandatory assignments. Mandatory assignments must be passed before the exam.

Courses are taught in Roskilde or Næstved, cf. the course descriptions.

Courses are taught in English language, unless otherwise mentioned in the descriptions.

The election opens Friday 3 November 14:00, and closes Friday 10 November 2017, 11:00.
If you fail to vote within theses dates you will get whatever courses are available.

If you vote and later regret, you can vote again - your most recent vote counts.

Roskilde: WebProgramming - WebApps with Angular

During this course you will learn how to build a modern mobile friendly and responsive WebApps based on the latest version of the most used JavaScript-framework: Angular.

Beside Angular, you will learn to use other framework like: TypeScript, NodeJS, Bootstrap 4, RxJS, MongoDB and FireBase.

In the course, I will use the new code editor Visual Code, but you are welcome to use your own favourite IDE/Editor if you like.

This course is not a course in HTML, CSS and basic JavaScript (JS). There will be a short introduction to HTML5, CSS 3 and JavaScript and depending on your prerequisites I will offer some extra help/material if HTML/CSS/JS is new to you.

For more information: http://heho-easj.dk/HTML5&JSE2017/Webprogramming.html

Roskilde: Mobile Application Development
This course is intended to qualify the student to:
Design and program mobile application mainly for Android, but also for iOS.

Learnings objectives


The student has knowledge about:

The architecture of the Android operating system.
The life-cycle of Android activities and fragments.

The student can:
Use a modern programming environments to program mobile application.
Design user interfaces for mobile applications.
Make mobile applications for various types of mobile devices.
Make mobile applications communicate with back-end systems using relevant network protocols.
Use location based services in mobile applications.

Design and program mobile application

Cross-plaform application development (Android + iOS) using Microsoft Xamarin, C# and Visual Studio.

Android applications using the Java Programming Language and the Android Studio IDE.
An Android device (phone or tablet) and/or an Android emulator is used to run the applications.

Roskilde: Big Data Workshop

This course is intended to qualify the student to:

Analyse, Design and Implementation of Big Data .

Learnings objectives


The student has knowledge about:

the theory and practice of the Big Data topic
understand the concepts of Volume, Variety, Velocity, Variability, Veracity and Complexity for Big Data..
understand Big Data as data driven business (e.g. new combination of data to provide new services)


The student can:

select, describe and search for literature concerning a problem of his/her own choice within the context of information technology
discuss relevant processes and analytical approaches associated with the Big Data i.e. maintaining Big Data problems and develope a solution, this could be from analyzing social medias
communicate key results.
be able to set up a small experiment using techniques and tools from Big Data (mostly Hadoop) e.g. databases, deduce new knowledge, some kind of artificial intelligence


The student can:

familiarise himself/herself with Big Data in the context of the theory and/or practices of the discipline without the assistance of others
put the chosen topic(s) into a wide perspective and relate it/them to the other topics addressed during the programme.
reflect on different uses of Big Data for solving the business of tomorrow.

If possible a company will provide a case study to be the base of the mandatory assignment.


The elective educational elements give the student an opportunity to enhance his/her academic and professional
competence by specialising and putting themes into perspective within the wider scope of Big Data with a special focus on Hadoop.

Roskilde: Databases & Data Science
Course Learning Objective Learning outcomes:

Upon completion of the course, students should have acquired knowledge about theory, principles, and practice of:
• DB design.
• Data structure in different DB systems (SQL, NoSQL).
• DBMS (SQL Server, Mongo DB)
• DB implementation.
• Data migration.
• Data Mining.
• Data analysis by visualization

Upon completion of the course, students should have acquired the skills to:
• Design their DB.
• Able to use different database systems (DBMS).
• Reflect on different choices of different DB/DBMS.
• Access their DB from relevant tools and C# applications.
• Eexamining large pre-existing databases in order to generate new information
• Use visualization tools.

Upon completion of the course, students should have acquired the competencies to:
• To be able to analyze, design and implement a database and assess its implications.
• To be able to document database system structure as part of the project development
• To be able to apply knowledge and skills in the database area for practical use in an organization.

Course content:
DB Design, SQL Server, No SQL databases, Mongo DB, Data Mining. Data visualization.

Roskilde: IT-Security
Course Description: IT-Security

The purpose of this elective area is to develop the student’s competencies in making a qualified choices of It-security rules.

Learning objectives:

Upon completion of the course, students should have acquired knowledge about theory, principles, and practice of:
• Symmetric and asymmetric encryption and their advantages and limitations
• Network security in general
• Digital certificates and the management of these
• The techniques used by hackers
• IPSec protocol and its use
• Secure Virtual Private Network (VPN) and the setup of a VPN
• Wireless networks and their vulnerabilities

Upon completion of the course, students should have acquired the skills to:
• Apply various security tools
• Defend hacking in integrated environment
• Perform password cracking by brutal force

Upon completion of the course, students should have acquired the competencies to:
• Set up security rules in a company
• Install IT-Security tools
• Setup a corporate VPN

Course content Network security, Cryptography, Man-in-the-middle attack. Password cracking, VPN. Hacking and counter attacks. Database security. PGP.

Roskilde: Game Development
During this course we will learn how to use Unity and how to build our own (mobile) games in teams of 2-4 students. Find more information on http://evang.dk/gamedevelopment/
This course is intended to qualify the student to:
Design 2d games for dekstop and mobile
Program games in Unity with C#

Learning objectives
The student has knowledge about:
Design simple games
Physics engines in games
Basic Artificial Intelligence in game development
Design games in an object oriented programming language

The student can:
Use Unity to cerate games
USe the core features in Unity
Create games for Computers
Create games for phones
Write Game Design Documents

The student can:
Implement a 2d game in Unity

Roskilde: IoT
This course will focus on learning the basics of Raspberry Pi, Linux, Python sensors and electrical circuits. Later in the course all students are expected to develop their own IOT device in groups. Find more information on http://evang.dk/iot/

This course is intended to qualify the student to:
Create a IOT device based on Python and Raspberry Pi
Develop new concepts
Program sensors
Learning objectives

The student has knowledge about:
IOT devices
Raspberry Pi

The student can:
Install and maintain a linux system
Navigate in a linux shell / environment
Program in python
Make and plan basic electrical circuits
Work with various sensors
Document your work

The student can:
Create a IOT device with sensors connected to the internet

Roskilde: Software testing
Course: Software Testing & DevOps
Course Description
Software touches just about everything in our world today. Today’s consumers expect intuitive and reliable technology, and in an increasingly crowded marketplace small missteps can trigger dissatisfaction and abandonment. Software testing addresses weaknesses in software development while building scalable development processes to ensure a best-in-class user experience.
In this Software Testing program, you will gain essential knowledge about software testing concepts and techniques. You will also learn how to plan, execute and manage software testing as well as software quality techniques for formal verification, which is used in mission critical projects.
Very important: You don't need to be good at programming, indeed it is enough to be able to read and understand other people's code.
This program will be of benefit to Software Testers, Developers and Quality Assurance Engineers. It will provide career-changers with the skills to get an entry-level job in Software Testing and help advance Software Developers skills in unit testing.
Job Outlook
• It is estimated that there are 233,000 Software Quality Assurance Engineers and Testers and there will be 37,000 additional job openings for Software Quality Assurance Engineers and Testers (source: O*Net Online)
• Career prospects include software developer, software tester, quality assurance engineer
• Software Quality Assurance Engineer is ranked as one of the happiest jobs by Forbes (source: forbes.com).
• With digital disruption, many and many companies are moving into DevOps.

Learning outcomes:

Upon completion of the course, students should have acquired knowledge about software testing concepts and techniques (20%), and practice (80%) of:

• How to structure your application for testability?
• Better practices for writing good tests that are readable and maintainable.
• Testing in the agile world.
• Behavior Driven Development (BDD).
• Test Driven Development and its benefits.
• Refactoring and Continuous Integration
• How to mock external Resources
• How to create and implement Unit tests and the elements of a good test
• How to create basic API and web service tests.
• Performance testing and how to create a performance test using Visual Studio and Visual Studio team services (VSTS)
• How to analyze performance test results using Application Insights.
• Exploratory testing in the context of visual Studio and Microsoft Test Manager
• Automation and how to choose the right tool for automate testing.
• How to implement and automate a delivery pipeline: development-continuous integration-continuous deployment and delivery using TeamCity.

Upon completion of the course, students should have acquired the skills to:
• Develop a structured test plan.
• Be able to develop an agile testing strategy.
• Develop high quality software
• Apply and master various automation testing tools
• Be able to implement and automate a delivery pipeline

Upon completion of the course, students should have acquired the competencies to:
• Easily integrate a development team in a company as a good tester
• Select an appropriate tool for automate testing and software delivery

Roskilde: DevOps
DevOps terms
Build servers on premise/cloud
Continuous integration /cloud
Continuous deployment /cloud
Testable code (S.O.L.I.D principles(some of them))
Dependency injection (DI)
Company visit
external speakers

The student can:

Understand how the DevOps support the agile system development process
Setup a buildserver
Understand Design Pattern to create testable code (SOLID)
Code testable code
Test the code
setup a CI/CP flow with test and integration to Prod/Test systems
deployment to cloudservices
understanding containers fx. docker
GitFlow + branching

Versionscontrol: Git + GitFlow
Backend :Cloud services fx Azure, amazon webservices
Manage : Trello/TeamServices/Jira

Roskilde: Process Improvement
This elective course helps the student develop competencies to participate in systematic improvement of existing system development processes. The course takes a pragmatically balanced approach including both and agile and disciplined techniques. The acquired competencies are particularly helpful to students aiming to become project managers or process specialist, but generally useful for any professional developer.
The course also helps the student further developing the competencies to transfer knowledge from the education to practical applications in companies conducting system development. The course applies a hands-on approach that includes a 2 x 2-week field study (group work) of actual system development processes in a company.
The learning objectives are achieved by acquiring knowledge of and skills with the following methodologies:
• Kanban
• Appreciative Inquiry

Learning Objectives
The student has knowledge about
• methods for improving system development processes.
• techniques for eliciting information about existing system development processes.

The student has acquired the skills to
• perform a process analysis based on systematic application of appropriate techniques.
• communicate the analysis results from a process analysis to relevant target groups.
• document and communicate the work process as a process analyst.

The student has acquired the competencies to
• create and communicate proposals for process improvements based on a process analysis.

Roskilde: Artificial Intelligence
Learning outcomes:
By the end of this course, you should be able to acquire knowledge about the theory, concepts and search techniques on:
• Uniformed search algorithms (BFS, DFS, Deepening Search, Uniform Cost Search).
• Unformed Search algorithms (Greedy Search, A* and heuristics, A* Graph Search, Game tree).
• Constraint Satisfaction Problems. CSP 1
• Constraint Satisfaction Problems. CSP 2
• Game Trees (Minimax, Alpha-beta pruning)
• Game Trees (Expectimax ¸utilities)
• Supervised Learning (Neural Networks, Bayesian learning)

Upon completion of the course, students should have acquired the skills to be able to:
• built autonomous agents that efficiently make decisions in fully informed, partially observable and adversarial settings.
• Build autonomous agent that will be able to draw inferences in uncertain environments and optimize actions for arbitrary reward structures.
• Master the techniques that apply to a wide variety of artificial intelligence problems and that serve as the foundation for further study in any application area you choose to pursue.

Upon completion of the course, students should have acquired the competencies to:
• To be able to select appropriate search algorithms to solve specific search problems
• to be able to apply the search algorithm to game scenarios (i.e. Pacman game).

Keywords: BFS, DFS, Deepening Search, Uniform Cost Search, Greedy Search, A*, heuristics, A* Graph Search, Constraint Satisfaction Problems (CSP 1 & CSP2), Minimax, Alpha-beta pruning, Expectimax ¸utilities, Neural Networks, Bayesian learning.

Roskilde: VR & AR Lab
This course will introduce to theories and practices of Virtual and Augmented reality through development of prototypes for Urban Power Architects.
The course follows the research and development project in “Modern User Interfaces”, and is by design of an experimental nature, eg. the course introduce to basic technologies as AutoDesk Revit and A-Frame, and will encourage the student to pursue skills and other technologies if necessary on their own.

A large part of the course will be reserved to project work in collaboration with Urban Power Architects.

The student will gain knowledge about Augmented Reality and Virtual Reality, and technologies for representation of 3D (goggles etc).

The student will be able to produce VR & AR using AutoDesk Revit and A-Frame.

The student will be able to select and use appropriate tools for 3d-related projects.

Næstved: Indlejrede Systemer (Embedded Systems)
Formålet med faget er at de studerende, efter gennemførsel, har fået indblik i, hvad et indlejret system er, hvordan det kan anvendes og hvordan man udvikler software på dedikeret hardware. Faget berører prototype-platformene Raspberry Pi og Arduino, samt programmeringssprogene C, Python og JAVA. Der arbejdes med forskellige indlejrede operativsystemer, bl.a. Embedded Linux og Embedded Android. Faget har fokus på softwaresiden af et indlejret system, der er dog mulighed for at implementere mindre komplekse hardwaredele i systemerne
Det forventes at de studerende opnår følgende evner:
Kendskab til
• Applikationsområder for indlejrede systemer
Viden om
• Off-the-shelf Hardwareplatforme for indlejrede systemer
• Operationssystemer for indlejrede systemer
• Programmering i C og Python
• Raspberry Pi, Linux og Python
• Arduino og C
• Peripherials og GPIO
• Udvikling af produkt med indlejret computer
• Brug af Embedded Android I indlejrede systemer
• Udvikling af fysiske prototyper v.h.a. 3D printing, laserskæring og CNC fræsning

Roger Ye: Embedded Programming with Android: Bringing Up an Android System from Scratch (Android Deep Dive) 1st Edition, ISBN-13: 978-0134030005
Udleverede noter og online materiale
Faget kan undervises på dansk og engelsk

Following the theories on LEAN Start-up developed and published by Bob Dorf and Steve Blank, the course
works stepwise to unveil the possibilities and challenges of starting a new enterprise. The concept focuses
on how to start new businesses without huge capital exposure and with the best chances of surviving. The
course will be case driven, where the students can work on either their own start-up ideas or on prepared
cases. The lectures will include plenum sessions, group studies, visits to Danish and international start-up
environments and external mentoring.

It is expected, that the student will learn the following:

Knowledge of
• Innovation and entrepreneurship for Tech and Non-tech businesses

Knowledge of
• The innovation process and innovation enhancing mechanisms
• Company start-up
• Corporate finance and venture capital

• Methods for Idea generation
• Development of business models
• Estimation of markets and sales forecast
• Customer discovery
• Practical experience with Business Model Canvas and Business planning
• Development of minimum viable products (MVP), customer involvement and investment strategy
Stine Mortensen and Karsten Vandrup
Steve Blank og Bob Dorf : The Startup Owner's Manual: The Step-By-Step Guide for Building a Great
Company, ISBN-13: 978-0-9889993-0-9
Notes, handouts and online resources
The course can be taught in Danish and English

Næstved: Open source web development
Upon completion of the course, students should have acquired knowledge about theory, principles, and practice of:
• Planning of open source web-projects
• Trends in web development
• Basic web-design
• Advanced HTML, CSS
• Advanced JavaScript
• Node.js
• Wordpress or Drupal
• Web hosting

Upon completion of the course, students should have acquired the skills to:
• Apply various web-development tools
• Work with cross platform projects
• Enroll in the open source community

Upon completion of the course, students should have acquired the competencies to:
• Set up web based projects in a company
• Enroll in open source projects
• Develop existing web applications further

Course content: Open source, web development, webdesign, webdev trends, node.js, wordpress or drupal, web hosting

Næstved: Machine Learning
Upon completion of the course, students should have acquired knowledge about theory, principles, and practice of:
• Machine learning algorithms
• Artifical intelligence
• Deep learning algorithms
• Machine learning services
• Image and speach recognition

Upon completion of the course, students should have acquired the skills to:
• Work with cloud based machine learning services
• Find ML based solutions for real life problems

Upon completion of the course, students should have acquired the competencies to:
• Set up an ML based solution
• Develop ML based solutions

Course Contents: Machine learning, Artifical intelligence, Cognitive services, Cloud machine learning, Data analysis

Never submit passwords through Google Forms.
This content is neither created nor endorsed by Google. Report Abuse - Terms of Service