Courses
On this page you can find information about the courses offered by our Research Group.
Bachelor
64-132 Proseminar Distributed Operating Systems
Reading scientific sources is elementarily important for the successful completion of scientific work. However, it differs fundamentally from other types of reading. Therefore, in this proseminar, students will practice dealing with scientific literature within the thematic framework of (distributed) operating systems. Students learn how to identify relevant literature on a topic and how to gain insights for their own work from this literature. Numerous practical examples are used to show how scientific sources can be read and how different sources can be compared with each other. The scientific publication process always serves as a framework and can be experienced by the students themselves in a simplified form through various exercises.
The proseminar takes place in the summer semester.
64-640/641 Lecture + Exercise Modern Operating Systems
An operating system is an essential part of any computer. It manages resources such as processors, memory, hard disks and interaction with input and output devices. Thus, it enables the execution of user programs on the computer. This lecture offers a comprehensive insight into the tasks and functions of operating systems in general and deals with the characteristics of individual operating systems. The contents are always illustrated by practical examples and can be experienced by the students themselves in numerous programming examples and exercises. In addition to the basic topics of operating system theory, the course covers more advanced topics such as virtualization, distributed operating systems and middleware. The topic of cloud computing is also covered.
The course includes the following areas, among others:
Processes and Threads
CPU Scheduling
Concurrency
Memory Management
File Systems
Device Management
Virtualization
Middleware
Synchronization and Communication
Cloud Computing
In an exercise related to this lecture, students will work on various programming tasks on a real operating system based on a continuous project. Thus, the contents of the lecture "Modern Operating Systems" are repeated and deepened. Different components of an operating system are implemented. For this purpose, the operating system is executed on an emulated hardware and can thus be manipulated without affecting the physical device or the actual operating system. The exercises are carried out in the programming language C.
Lecture and exercise take place in the summer semester.
64-158 Practical Course Development of Context Sensitive Applications for Mobile Devices
Context-sensitive systems detect and process the situation they are in and, if necessary, adapt their behavior to the environment. This enables the development of dynamic systems in numerous areas in research and practice. In this practical course, the topic of context is to be learned and applied in the context of a position-based real-time game. The proposed application example for this is the implementation of the classic game "Scotland Yard" (https://youtu.be/hhoFVkV5So4) as an application for the real world. The game board is no longer a cardboard map, but rather a campus, a district or a park. Instead of plastic figures, the players move themselves and try to catch the escaping Mister X, or to escape the detectives as Mister X himself. The game thus integrates the context of the players (in this case, the position data, the game group and also the time) into a mobile application similar to the game Pokémon GO. Other ideas for context-sensitive applications for mobile devices are also welcome. In addition to exciting use cases, the practical course offers students the opportunity to gain knowledge in three relevant areas. First, the topics of context (definition, acquisition, processing) and context sensitivity are covered. Here, students learn how to integrate different context dimensions into applications. Second, the development of mobile applications is learned or deepened. Building on programming knowledge in the Java language, simple applications for Android end devices can be developed after a very short period of time. Development for iPhones is possible after consultation. Third, students are trained in the development of distributed systems. This includes the design of application protocols, the use of communication endpoints (sockets) and the handling of distributed clocks. At the end of the practical course, students should have a mobile multiplayer game that is functional in its basic features, whereby the joint testing of the applications is also a component of the course.
The practical course is a block course and takes place in the winter semester.
Master
64-866 Masterproject with integrated seminar about Smart Cities
Within the project, selected issues of modern digital smart cities are covered in a broader sense. For example, modern cities and their citizens are increasingly dependent on very different types of urban data (environmental, traffic, infrastructure data, etc.). Sensor networks are increasingly being used to collect such data. Therefore, in this project a distributed network structure for the exchange and browsing of collected sensor data will be designed and prototypically implemented for such applications.
In this project, a road map with information about accessibility will be created, on the basis of which wheelchair users can be navigated on accessible routes. For this purpose, sensor data will first be collected and conclusions about soil characteristics and possible obstacles will be drawn with the help of machine learning methods. Crowdsourcing collected sensor data can then be used to create a digital, barrier-free road map.
Since movement data is particularly requiring protection, the routes traveled should be managed decentrally by the wheelchair users themselves and only released to services (such as a map representation, barrier-free routing, indoor routing, etc.) through active consent. Thus, the tasks range from the hardware-related development of the sensor technology on the wheelchair, through a decentralized network for the management and distribution of the data, to sample services that use the data.
Throughout the project, software-related agile methods and processes are mainly used in the team. In addition to the steps known from SE 1&2 "Plan, Code, Build and Test", the steps "Release, Deploy, Operate and Monitor" and thus the entire DevOps lifecycle are applied. Thereby, the technologies and practices to be used are not fixed and a participation in their selection by the students is welcomed and encouraged.
Learning Objective:
- Students will experience the entire DevOps lifecycle of software development.
- Students will be able to organize an agile software project.
- Students will be able to construct decentralized, peer-to-peer based applications.
- Students will develop different strategies for realizing specific system aspects.
- Students will be able to evaluate alternative design decisions.
Procedure:
The project module consists of an integrated seminar on current research issues in the field of distributed crowdsensing smart city applications and a project in which own ideas are practically realized using current technologies. After an introduction by the organizers, the practical understanding of the used technologies is first learned or deepened through small tutorials. In the remaining course, individual aspects of the overall system will be designed and implemented in smaller teams.
It is assumed that participants can already independently realize applications in at least one object-oriented programming language (e.g.: Java, Kotlin, JavaScript, TypeScript,...).
The project takes place in the winter semester.