Like some textbooks (Tanenbaum et al., Dollimore et al.) the lecture tries to combine the fundamental problems and algorithms of distributed computing (delivery guarantees, voting algorithms, concurrency control) with different middleware packages. The students will learn the different levels of transparency - going from sockets via RMI to EJB and then to p2p and webservices. Systems management and security as well as design solutions for distributed computing are covered as well. A fairly encompassing q&a section gives students a chance to recap the large topic in teams to prepare for the exams.
The seminar concentrates much more on core concepts, algorithms and principles of distributed systems. Various approaches to model distribution aspects are investigated (temporal logic, petri-nets, models of causality in different disciplines etc.). Core concepts like logical time, failure and causality are discussed. Event-driven systems and their potential for de-coupling make up for a large part of the seminar, ending in complex-event-processing theory..
Reliablity based on group communication algorithms is discussed and so is the concpet of partitioning for scalability. MMOG architectures serve as an example for large-scale use of partitioning vs. communication.
The master seminar uses large scale distributed sites like MySpace, Flickr, Google etc. to investigate architectures that scale and provide a high level of availabilty. Different components of such sytems are examined (load-balancing, storage etc.) to learn the basic principles of scale-up or scale out architectures. The seminar also deals with the treatment of media in distributed systems with a special emphasis on social community sites and MMOGs.
Important algorithms for scalability or availabilty are treated in the context of those architectures (map/reduce, bigtable, consitent hash, Paros etc.
Modeling of such large scale systems is also a key issue for the seminar. We will look at different analytical instruments like queuing theory and possible tools to model the most important aspects responsible for scalability and availability. The concepts used are based on a "system thinking" approach.
Modeling Distributed Systems . Even small solutions consisting of few components and processes show a surprising level of complexity once errors, life-cycle phases and special qualities are introducted. Mostly it is the experience of the developers (that's why older seems better here) that controls the chaos - somehow. An example case and some ideas on what we would need to create practical models of distributed systems and what we would like to express.
We start with common exercises on sockets and RMI. This gives us a common ground. Then students decide on a specific technology and form teams. They can chose whatever distributed computing technology they want. E.g.: