Courses
Bachelor
64-158 Praktikum: 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. The internship has a different focus each year.
In the current year, the internship revolves around digital social innovations to be implemented in the form of applications for mobile devices. Mobile devices are ubiquitous companions in our everyday lives, always within reach and in all areas of life. In the variety of apps and services for mobile devices, there also exist numerous applications that support social and sustainable goals. Examples include digital assistance systems, applications for recording pollution and waste accumulation in cities, apps for sharing items, and programs to support homeless people. Underlying all of these projects is the fact that digital innovation potential is used there to promote one or more of the 17 UN Sustainable Development Goals.
In addition to exciting use cases, the internship 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 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.
This year, the internship will be open to up to 20 students from other departments at the university, working in mixed teams to both devise a sustainable social business model and develop a working prototype of the application.
Note: The internship is offered as a block course, spanning 4 weeks in November and December. All deliverables are to be completed during this time. The dates will be announced in Stine.
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-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.
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-422/423 Lecture & Exercise: Distributed Systems and Middleware
The lecture deals with advanced issues in the area of distributed systems and middleware. Based on fundamental knowledge about computer networks and distributed systems, algorithms that are used in complex distributed systems will be discussed. Furthermore, knowledge about the functionality and use of middlewares will be imparted and discussed on the basis of current examples from research.
The following topics will be covered:
- Fault detection in distributed systems
- Leader Election
- Reliable Broadcast and epidemic algorithms
- Consensus protocols
- Group Communication and Synchronization
- Distributed state detection
- Exclusion in distributed systems
- Logical clocks
- Replication
- Distributed computation (including MapReduce)
- Middleware (distributed objects, name services, remote method calls).
In the accompanying exercise, students design and develop a distributed system with a specific focus on the algorithms covered in the lecture. This will focus on a different topic each semester. The design and implementation will be presented and discussed within the group during the exercise sessions.
64-634 Hackathon: 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.
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.
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.