Scalable Distributed Systems (SDS)
Objectives:
Learn the fundamental concepts, operation and design guidelines, patterns and methods for developing software systems with good scalability and predictability, and the evaluation of scalable and Internet-scale systems.
Content:
- Fundamental concepts: The effect of scale in system properties (functional and operational).
- Issues in large-scale systems: virtualization, service orientation and composition, availability, locality, performance and adaptation (host-spots, autonomic computing).
- Models for large-scale systems: system models for analysis (game-theoretic, economic, evolutionary, control, complex networks), architectural models (multi-tier, cluster, farm, grid, cloud, SaaS).
- Scaling techniques: basic techniques (caching, distribution, replication), scalable computing techniques for architectural models.
- Middleware and Applications: computing, storage, web, content distribution, Internet-scale systems or services.
Methodology:
Theory classes, Reading and discussion of research papers, Presentation of topics by students, Laboratory activities
Evaluation:
The evaluation of the course will be based on the participation of students in class, reading reports and an experimental project work on specific topics.
References:
A collection of research papers.
Course materials at the course wiki
Pre-requisites:
Basic concepts of distributed systems, including DHTs (e.g. Chord) as in the "Distributed Systems" (SODX) course.