This is an optional consolidation course on distributed systems. It provides the basic knowledge on the models, methods and techniques for developing distributed systems.
In the lab classes, students will put the learnt techniques in practice by developing several distributed applications of trivial-to-medium complexity.
This is an optional consolidation course on distributed systems. It provides the basic knowledge on the models, methods and techniques for developing distributed systems. As prerequisites students should have previous acquaintance with algorithms, programming, and computer networks.
Knowledge
Know-how
1. Introduction
1.1 Examples, characteristics, challenges
2. Direct communication
2.1 Point-to-point communication
2.2 Multicast
3. Remote invocation
3.1 Model
3.2 Interfaces and data representation
3.3 Protocols and semantics in the presence of faults
3.4 Binding and concurrency in the server
4. Remote invocation in the Internet
4.1 Web-services
4.2 REST
4.3 Asynchronous invocation (e.g. AJAX) and push models
5. Indirect communication
5.1 Group communication
5.2 Publish/subscribe
5.3 Message queues
6. Architectures and models
6.1 Architectures: client/server variants, p2p, proxy
6.2 Fault, interaction and security models
7 Security
7.1 Models
7.2 Cryptography
7.3 Case studies: TLS, OAuth
8. Time
8.1 Physical clocks
8.2 Logical clocks
8.3 Vector clocks
8.4 Version vectors
9. Introduction to replication and consistency
9.1 Caching
9.2 Primary/backup replication
10. Naming in distributed systems
10.1 Problems and concepts
10.2 Name services
10.3 Directory services
Distributed Systems: Concepts and Design
George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair
Publisher: Addison Wesley; 5th edition
ISBN-13: 978-0132143011
As prerequisites students should have previous acquaintance with algorithms, programming, and computer networks.
Good Java programming skills are essential.
Hours per credit | 28 | ||
Hours per week | Weeks | Hours | |
Total hours | 0 | ||
ECTS | 6.0 |