Software Engineering Basics The basic concepts of computer programming will be covered here, as well as the configuration and use of a computer for software development, including the command-line interface and integrated development environment along with the process of iterative development, the use of version control, debugging, and the documentation process.

Algorithms and Data Structures Students who study this module will learn about the analysis of algorithms, algorithm time complexity and

searching and sorting algorithms. Important data structures such as linked list, array, hash tables, trees and graphs are also part of this module.

Concepts of Programming Languages Students who study this module will learn about the concepts found in programming languages and compiler operations. They will focus on understanding those concepts and on similarities and differences between languages. This is supplemented by knowledge of compilers and their operations.

Relational Databases The module covers the basics of operating relational database systems, the theoretical foundations with relational algebra and practical usages such as creating tables, storing data in normalised format and manipulating information. Students will learn about data handling and manipulation techniques like aggregation, indexing, joining and handling huge amounts of data and appropriate frameworks like an ORM.

NoSQL Databases Understanding NoSQL Databases includes understanding different flavors of NoSQL Databases including document databases, key-value database or graph databases. Students learn how to set up a data model for these databases and adapt it to their business entity. They learn how to optimize efficiency and performance of the databases and how to access it through application code in an optimal way including the usage of plain db code and frameworks.

Collaboration Students who study this module will learn the technical

and procedural aspects of collaboration: Version control software, bug tracking systems, and code review

systems, all of which help development teams to work together seamlessly. Further, they will learn how to

write clear technical documentation.

Clean Code Students who study this module will learn about clean code principles such as well-structured functions, classes, and modules. They will also cover methods for iteratively achieving a high code quality. This includes the ability to recognize potential quality issues (‘bad smells’) and leverage refactoring to improve quality.

Cyber Security Security breaches can happen in many dimensions from transport to persistence of data. Understanding

attack vector and knowing architectural patterns to achieve security are the principles of security.

In this module, students need to demonstrate understanding and application of these principles, show that they are able to detect fraud and security breaches within their software

products.