Course Outline 2 Introduction to DS: Introduction and Definition, Characteristics, Goals of a Distributed System, Types of Distributed Systems. Architectures: Architectural Styles, System Architectures . Processes: Threads and their Implementation, Anatomy of Clients, Servers and Design Issues, Code Migration Communication: Network Protocols and Standards, Remote Procedure Call, Message-Oriented Communication, Stream-Oriented Communication, Multicast Communication. Naming: Names, Identifiers, and Addresses, Flat Naming, Structured Naming, Attribute-Based Naming, Synchronization: Clock Synchronization, Logical Clocks, Mutual Exclusion, Election algorithms, Consistency and Replication: Reasons for Replication, Data-Centric Consistency Models, Client-Centric Consistency Models, Replica Management, Consistency Protocols, Fault Tolerance: Introduction to Fault Tolerance, Process Resilience, Reliable Client-Server Communication, Reliable Group Communication, Distributed Commit, Recovery