This course deals with the essential basics of operating systems. Topics include Definitions and tasks of an operating system<, Process management, Main memory management, File systems, I/O subsystems and Bash.Read More
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.Read More
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.Read More
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.Read More
Have you ever used a website and thrown in the towel in frustration after a few minutes because? Therefore, you should learn how good human-machine communication can work and how you can ensure that your users can use your software product, e.g., website.Read More
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.Read More
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.Read More
In the course “Modelling Technical Systems” we discuss modeling for simulation and diagnosis of systems comprising components and their connections.Read More
This course deals with the basic concepts of modern architectural concepts and teaches the participants the central characteristics of different architectures.Read More
This course focuses on limitations of centralized approaches and requirements for distributed and parallel data processing, including big data applications.Read More
Subject area know-how preparation and development of the level model, exchange about working methods in the company.Read More
Program Dependence Graphs (PDG) can be used to identify plagiarism in software to a certain extend by determining the similarity between portions of code. In this thesis, some of the methods to detect similarities based on the PDG of programs should be investigated and one or several of the implemented for simple programs.
In this thesis different of algorithms covered in the course software maintenance should be visualized (for example the Hitting Set Algorithm by Reiter, Slicing with the PDG,...). As part of the work, suitable concepts to visually represent the algorithms have to be developed and subsequently, those visualizations should be implemented.
Different tools are to be identified and compared, which allow to analyze procedural or object priented programs (e.g. the Slicing Plug Kaveri. As part of the work different tools should be identified and compared in relation certain objectives such as capabilities, scope, performance etc.
Delta Debugging is a divide-and-conquer strategy that returns a 1-minimal erroneous input. QuickXplain is an algorithm that should find minimal explanations for over-constrained problems and is also based on a divide-and-conquer strategy. These two approaches should be compared on the one hand theoretically and on the other hand practically with each other. The goal is to define a unified framework to compare these different methods and examine whether the algorithms return the same result for the same input or how the results differ.
There are various slicing techniques beyond the usual suspects of static and dynamic slicing. For instance, quasi-slicing tries to balance between the two extremes that are static and dynamic slicing by only considering a portion of the input variables. Also extension to dynamic slicing such as simultaneous slicing exist, that explore several dynamic slices in conjunction. In this thesis, those and other approaches should be compared in regard to their capabilities to determine root causes for abnormal behavior in programs.
In this thesis the required worksteps for integrating a hardware to a cotinous integration (CI) (Hardware-in-the-loop) are explained by means of a an evaluation board. These worksteps are: communication between the board and the CI, execution of hardware relevant tests and control of the power supply for the hardware. This Hardware-in-the-loop setup should ensure a defined and stable behaviour of the hardware in a defined environment.
Code optimization during program compilation is performed on an intermediate representation (for example, AST, three address code) of the program. And the effects of these optimizations are only visible in the code generation part. However, we now want the results of the optimization to be displayed on the AST, Three Address Code, … such that the effects of local and global optimizations can be directly seen.
In the scope of the thesis an application should be developed that makes code optimzations (e.g. dead code elimination, copy propagation,…) visible make not only on the target code but also on intermediate representation. The application should allow the user to apply these optimizations in different orderings using a GUI.
As software projects grow their test suites also increase in size as well as the time to execute the test suite. Test Suite Reduction (TSR) deals with identifying and removing redundant test cases from a test suite. The reduced test suite ideally fulfills the same requirements as the initial test suite and retains the fault detection capability of the original test suite.
While commonly used metrics such as line or method coverage have been applied extensively in theory and practice, we investigate a different type of coverage metric: checked coverage. The idea is that not only executed portions of the code are relevant but also if these parts of the code were checked by some type of test oracle. This thesis investigates whether checked coverage is suitable for TSR.
Model-based diagnosis derives explanations for discrepancies between the expected and observed system behavior by relying on a formal representation of the artifact under consideration. Although its theoretical background has been established decades ago and various research prototypes have been implemented, industrial applications are sparse. The thesis emphasizes the role of essential technology acceptance factors, i.e., usefulness and usability, within the context of model-based diagnosis. In particular, we develop a concept and interface design for an abductive model-based diagnosis application integrated into existing condition monitoring software for industrial wind turbines. This fault identification tool should enhance the performance of the maintenance personnel while respecting their current work processes, taking into account their particular needs, and being easy to use under the given work conditions. By employing an iterative design process, continuous feedback in regard to the users’ work goals, tasks, and patterns can be included, while also considering other stakeholders’ requirements. The result is a workflow and interface design proposal to be implemented in the final software product.