This module is intended to provide an understanding of the technical issues involved in the design of modern distributed systems. Besides conveying the central principles involved in designing distributed systems, this module also aims to present some of the major current paradigms (see learning outcomes below).
1. Introduction to Distributed Systems (2 lectures)
- Hardware concepts (multiprocessor & multicomputer systems)
- Software concepts (operating systems & middleware)
- Client-Server model
2. Communication (4 lectures)
- Layered protocols
- Remote procedure calls & object invocation
- Message- & stream-oriented communication
3. Processes (3 lectures)
- Clients & servers
4. Naming (2 lectures)
- Naming entities
- Locating mobile entities
5. Synchronisation (4 lectures)
- Logical clocks & clock synchronisation
- Election algorithms
- Mutual exclusion
- Distributed transactions
6. Consistency and replication (2 lectures)
- Overview of consistency models
- Distribution protocols
- Consistency protocols
7. Fault tolerance (3 lectures)
- Failure masking by redundancy
- Reliable client-server communication
8. Security (2 lectures)
- Secure channels
- Access control
9. Object-based Systems (3 lectures)
- Two examples (CORBA and Java RM!) of an object-based system will be discussed and compared
10. File systems (3 lectures)
- Two examples (NFS and Coda) of a distributed file system will be discussed and compared
11. Coordination-based systems (2 lectures)
- Two examples (TIB/Rendezvous and Jini) of a coordination-based system will be discussed and compared
Andrew S Tanenbaum, Maarken van Steen Distributed Systems: principles and paradigms, Prentice Hall (also available from Pearson Education), 2002.
An appreciation of the main principles underlying distributed systems: processes, communication, naming, synchronisation, consistency, fault tolerance, and security.
Familiarity with some of the main paradigms in distributed systems: object-based systems, file systems, and coordination-based systems.
Knowledge and understanding of the essential facts, concepts, principles and theories relating to Computer Science in general, and Distributed Computing in particular.
A sound knowledge of the criteria and mechanisms whereby traditional and distributed systems can be critically evaluated and analysed to determine the extent to which they meet the criteria defined for their current and future development.
An in depth understanding of the appropriate theory, practices, languages and tools that may be deployed for the specification, design, implementation and evaluation of both traditional and Internet related distributed computer systems.
The module will be taught as 30 lectures (3 lectures a week for 10 weeks).
The formal lecture material being reinforced by a series of practical exercises.