Course Descriptions

Operating System Basics

This course deals with the essential basics of operating systems. You are all familiar with operating systems such as Windows, MacOS, Linux, Android, iOS, etc. that allow us to use our computers in a convenient way without knowing the exact internals and operations of the computer. The main topics we will work on are:

  • Definitions and tasks of an operating system
  • Process management
  • Main memory management
  • File systems
  • I/O subsystems
  • In the exercise we will deal with Bash

Network Technologies

This course deals with the essential fundamentals of computer networks. Computer networks enable communication and data exchange between computers. The largest computer network is certainly known to you; it is the Internet. This means that everything covered in this course has a direct impact on our daily life. Computer networks are often explained using layered models and we will use one of these to describe the transport of data through the different layers and transmission media.

  • Basics, ISO-OSI and TCP/IP modeling
  • Internet and data transmission on the Internet
  • Encapsulation
  • Ethernet and WLAN
  • Hubs, Switches
  • Routing
  • IPv4 and IPv6
  • Network Security

Principles of Computer Science

This course deals with the essential basics of computer science that every software engineer should be familiar with and that lay the foundation for more complex topics in computer science. The main topics we will work on are:

  • Von Neumann Model
  • Information representation
  • Propositional logic
  • Automata and language
  • Turing machines and the Church-Turing thesis
  • Efficiency and complexity of algorithms

Data Structures and Algorithms

This course deals with elementary data structures and algorithms that every software developer should know and be able to apply.

Algorithms are recipes that describe how to solve recurring problems (e.g. sorting). Often, however, there are several algorithms that provide a solution to the same problem. Here we would like to know which of the methods is the most time-saving, for example.

If algorithms are cooking recipes, then we can think of data structures as our tools (e.g., mixing bowl, wooden spoon, hands,...). Of course you can try to bake a cake with a Bunsen burner, however an oven would probably be the more efficient and safer option. Here we will also look at what properties data structures have, so that we can choose the right structure given a problem.

In the exercise you will work practically with the algorithms and data structures and implement them in Java. The main topics we will work on are:

  • Runtime analysis
  • Elementary data structures (array, lists, stack,...)
  • Basic algorithmic principles (recursion, backtracking)
  • Sorting methods
  • Search methods
  • Scattered storage (hashing)
  • Tree structures

Webtechnologies and Usability

Have you ever used a website and thrown in the towel in frustration after a few minutes because, for example, you couldn't find the information you were looking for? Unfortunately, you are not an isolated case, because many websites or even programs that are provided are not user-friendly. Therefore, you should learn how good human-machine communication can work and how you can ensure that your users can use your software product.

One of these software products is a website. In the first part of the course we will look at how the web is built and how you can easily create web pages using HTML and CSS.

The main topics we will work on are:

  • Web and HTTP (HyperText Transfer Protocol)
  • HTML (Hypertext Markup Language) & Web pages
  • CSS (Cascade Style Sheets) & Design
  • Introduction to Human Computer Interaction (HCI)
  • User Experience and Usability Engineering
  • Usability evaluations and benchmarking

Compiler Construction

The lecture gives an overview of the structure and the functionality of a compiler for a programming language. The focus is on the analysis of languages including lexical analysis, parsing, and type checking using attributed grammars. Intermediate code generation, the runtime environment and code generation are also part of this lecture.

The practical part of compiler construction comprises two units. In the first unit, exercises based on the content of the lecture are given and have to be solved. In the second unit the students have to implement a simple compiler in Java using AntLR for a defined small programming language.

Software Maintenance

The software maintenance course introduces the principles of software maintenance. Practical problems regarding maintenance activities as well as theoretical aspects are presented and discussed within the course. In particular, we will have a look at the maintenance processes, software re-use, reverse engineering and foundations of software maintenance. Moreover, we will discuss methods for software analysis like slicing and techniques based on object-flow graphs.

Modelling of Technical Systems

In the course “Modelling Technical Systems” we discuss modeling for simulation and diagnosis of systems comprising components and their connections. The objective of the course is to introduce the modeling language Modelica and its application to automated diagnosis where a modified language is used.

The Twin Peaks Model: Software Architecture and Lifecycle (Value-Network Sued – IT enabled Eco Systems)

This course deals with the basic concepts of modern architectural concepts and teaches the participants the central characteristics of different architectures. Concepts such as components and connetors will be introduced and how they can be used to design complex software systems. Software architecture as a consistent concept in the product life cycle and the potential influence of the organizational structure / team structure on the software architecture (Convey’s Law) are discussed.

Data as a Service: Technologies and Architectures (Value-Network Sued – IT enabled Eco Systems)

This course focuses on limitations of centralized approaches and requirements for distributed and parallel data processing, including big data applications. In the big-data context, very high volumes of data have to be processed very quickly or in real time, as well as a multitude of different data (structured, semi-structured, unstructured data). The validity and usefulness of the data is essentially determined by high credibility. In addition, high quality of the data (i.e., elimination of erroneous values, elimination of duplicates, etc.) should be ensured. These requirements demand the implementation of complex data processing pipelines.

Code Quality (Advanced Software Quality Assurance for Technical Management)

Subject area know-how preparation and development of the level model, exchange about working methods in the company with the following contents:

  • Definition of terms and history
  • Advantages and expenses, prerequisites
  • Coding Standards
  • Clean Code
  • Code Reviews, Pair Programming
  • Code Refactoring
  • Static and dynamic program analysis
  • Software metrics