This document provides an overview of distributed systems and computing paradigms. It begins with an agenda that covers topics like parallel computing, cluster computing, grid computing, utility computing, and cloud computing. Examples of distributed systems are provided. Definitions of distributed systems emphasize that they are collections of independent computers that appear as a single system to users. Computing paradigms like centralized, parallel, and distributed computing are described. Challenges of distributed systems like failures, scalability, and asynchrony are listed. The operational layers of distributed systems from the application to network layers are outlined. Models and enabling technologies are mentioned.