Parallel and Distributed Computing

  1. Distributed Computing Fundamentals
    1. Distributed System Characteristics
      1. Concurrency
        1. No Global Clock
          1. Independent Failures
            1. Heterogeneity
              1. Scalability
                1. Transparency
                  1. Access Transparency
                    1. Location Transparency
                      1. Migration Transparency
                        1. Replication Transparency
                          1. Concurrency Transparency
                            1. Failure Transparency
                          2. Distributed System Models
                            1. System Architecture Models
                              1. Client-Server Model
                                1. Two-tier Architecture
                                  1. Multi-tier Architecture
                                    1. Thin vs Thick Clients
                                    2. Peer-to-Peer Model
                                      1. Pure P2P Systems
                                        1. Hybrid P2P Systems
                                          1. Structured P2P Networks
                                            1. Unstructured P2P Networks
                                            2. Service-Oriented Architecture
                                              1. Microservices Architecture
                                              2. Interaction Models
                                                1. Synchronous Interaction
                                                  1. Asynchronous Interaction
                                                    1. Event-based Interaction
                                                    2. Failure Models
                                                      1. Crash Failures
                                                        1. Omission Failures
                                                          1. Timing Failures
                                                            1. Byzantine Failures
                                                              1. Arbitrary Failures
                                                              2. Security Models
                                                                1. Threat Models
                                                                  1. Security Mechanisms
                                                                    1. Trust Models
                                                                  2. Communication in Distributed Systems
                                                                    1. Inter-process Communication
                                                                      1. Socket Programming
                                                                        1. TCP Sockets
                                                                          1. UDP Sockets
                                                                            1. Socket Options
                                                                            2. Remote Procedure Calls
                                                                              1. Synchronous RPC
                                                                                1. Asynchronous RPC
                                                                                  1. RPC Semantics
                                                                                    1. Parameter Passing
                                                                                    2. Remote Method Invocation
                                                                                      1. Object Serialization
                                                                                        1. Distributed Garbage Collection
                                                                                        2. Message-Oriented Middleware
                                                                                          1. Message Queues
                                                                                            1. Publish-Subscribe Systems
                                                                                              1. Message Brokers
                                                                                            2. Group Communication
                                                                                              1. Multicast Communication
                                                                                                1. Reliable Multicast
                                                                                                  1. Ordered Multicast
                                                                                                    1. Group Membership
                                                                                                    2. Indirect Communication
                                                                                                      1. Space Uncoupling
                                                                                                        1. Time Uncoupling
                                                                                                          1. Message Queues
                                                                                                            1. Tuple Spaces
                                                                                                              1. Publish-Subscribe Systems
                                                                                                            2. Naming and Directory Services
                                                                                                              1. Name Resolution
                                                                                                                1. Naming Systems
                                                                                                                  1. Flat Naming
                                                                                                                    1. Structured Naming
                                                                                                                      1. Attribute-based Naming
                                                                                                                      2. Directory Services
                                                                                                                        1. Hierarchical Directories
                                                                                                                          1. Distributed Directories
                                                                                                                          2. Location Services
                                                                                                                            1. Discovery Services