Courses
On this page you can find information about the courses offered by our Research Group.
Bachelor
64-215/216 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 special features of individual operating systems. The contents are always illustrated by practical examples and can be experienced independently in numerous programming examples and exercises.
The course covers the following areas, among others:
- Processes and threads
- CPU scheduling
- Concurrency and synchronization
- Interprocess communication
- Memory management
- Virtual memory
- Device management (input and output)
- Cloud computing and virtualization
Furthermore, the C programming language is introduced in the lecture and its use is demonstrated on various examples and operating system interfaces. This is done in the context of use cases for the topcis listed above. No previous knowledge of the C programming language is necessary. The learned knowledge is deepened by means of exercise sheets.
Two-week exercise sheets help to consolidate the lecture material. In addition, a voluntary tutorial is offered, in which students are supported in working on the exercise sheets and solutions are discussed.
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.
64-633 Hackathon - Introduction to Complex Applications in Distributed Environments
In this practical course, the students' practical programming skills are to be improved and tried out in the independent programming of concrete examples in small group work.
The students are supposed to produce useful, creative and free software within a short period of time according to a given set of topics. Possible topics include the programming of distributed applications in the areas of mobile computing, cloud computing, augmented reality and peer-to-peer systems. Current trends are to be given special consideration.
The group phase of the hackathon will take place as a block event from Fri., 14.04.2023 to Sun., 16.04.2023.
First, a topic complex and its problems will be presented and motivated. The students get together in small groups (3-6 persons) and work on a sub-problem together. At the end of the course, the results are presented in groups. Further tasks are set with the small groups for the extracurricular independent work. Successful completion of the specified task is a prerequisite for passing the course.
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.
64-634 Hackathon - Introduction to Complex Applications in Distributed Environments
In dieser praktischen Lehrveranstaltung sollen die programmierpraktischen Fähigkeiten der Studierenden verbessert und an der selbständigen Programmierung von konkreten Beispielen in Kleingruppenarbeit ausprobiert werden.
Die Studierenden sollen dazu in einem kurzen Zeitraum passend zu einem vorgegebenen Themenkomplex gemeinsam nützliche, kreative und Freie Software produzieren. Mögliche Themengebiete umfassen u.a. die Programmierung verteilter Anwendungen in den Bereichen Mobile Computing, Cloud-Computing, Augmented Reality und Peer-to-Peer Systemen. Aktuelle Trends sollen dabei besondere Berücksichtigung finden.
Die Gruppenphase des Hackathons fndet als Blockveranstaltung statt von Fr., 14.04.2023 bis So., 16.04.2023.
Zunächst werden jeweils ein Themenkomplex und dessen Probleme vorgestellt und motiviert. Die Studierenden finden sich in Kleingruppen (3-6 Personen) zusammen und bearbeiten gemeinsam ein Teilproblem. Am Ende der Veranstaltung werden die Ergebnisse gruppenweise präsentiert. Mit den Kleingruppen werden weiterführende Aufgaben für die außerterminliche Eigenarbeit festgelegt. Die erfolgreiche Abnahme der festgelegten Aufgabe ist Voraussetzung für das Bestehen der Veranstaltung.