This document provides an overview of distributed systems and distributed computing paradigms. It defines distributed systems as a collection of independent computers that can communicate with each other over a network. It discusses several distributed computing paradigms including message passing, client-server, peer-to-peer, publish/subscribe, remote procedure call (RPC), collaborative applications, and mobile agents. For each paradigm, it provides examples and explanations of how the paradigm works.