Graduates of the module will be able to explain the structure of operating systems using Android as an example and discuss theoretical foundations of operating systems in order to recognize and react to the effects of operating system processes on their own programs. Students will be able to design and implement their own Android apps by understanding and using the Binder as a mechanism for inter-process communication (IPC), using processes, threads and coroutines for concurrency, using BroadcastReceivers and Intents to communicate between applications, recognizing race conditions, identifying critical sections and synchronizing operations, and knowing and using the solutions to classical synchronization problems to later develop or evaluate their own hardware- or system-related software for distributed systems. The module consists of a lecture and a project-oriented practical course.
Learning Outcomes
Students will be able to discuss theoretical foundations of operating systems and make a practical connection to their own applications by…
- understanding an operating systems as an abstraction of hardware to beautiful software interfaces (e.g. sensors from hardware to sensor API),
- relating to the general layered model of operating systems,
- understand processes as an abstraction of applications at runtime,
- describe different concepts for scheduling processes within the operating system,
- describe different concepts for memory management of processes within the operating system
- and relate scheduling and memory management to own processes and the runtime behavior of own applications (e.g. monitoring, profiling),
to later recognize and react to effects of operating system operations and resource limitations on their own programs.
Students will be able to explain the structure of operating systems using Android as an example by…
- name and describe the goals of Android development,
- name and describe the main tasks of operating systems,
- present and explain the structure of operating systems,
to be able to use the different components and concepts of operating systems.
Students will be able to create their own Kotlin applications for distributed systems by…
- Implement your own Kotlin programs,
- Implement concurrency using processes, threads, and coroutines,
- Understand and be able to use sockets for client and server programs,
- Understand and be able to use system services to interact with core operating system functions,
- Implement communication between processes using Binder, AIDL, BroadcastReceiver and Intents,
- recognize race conditions, define critical sections and synchronize processes,
- know and use solutions to classical synchronization problems,
to later develop or evaluate hardware or system-related software for distributed systems, e.g. in the area of “Internet of Things”.
Links to the course
- More info on the agenda, zoom, Praktika, etc. will appear in the Wiki