Distributed Systems
The objective of this course was to introduce fundamental concepts of distributed systems and recent developments in this area. The role of distributed systems in the contemporary computing landscape as well as the requirements for (large-scale) distributed systems and different models of distributed systems were discussed. The focus was on fundamental concepts, methods, and algorithms as well as their advantages, disadvantages, and applicability for distributed systems.
The lectures covered the following topics:
- Processes & Communication
- Naming
- Fault Tolerance in Distributed Systems
- Synchronization and Timing
- Consistency & Replication
- Security
- Applications & Technology Trends
The exercise part's aim was to develop software that deals with concepts such as Sockets, Remote Method Invocations (RMI), and basic security mechanisms as well as learning to do network programming. In one single assignment the task was to write a Client-Server application with sockets and multithreading. The second task was a group project building upon the first assignment and introducing encryption, security and how to invoke programs remotely.