This document discusses mobile code paradigms for designing distributed applications. It defines key terms like components, sites, and interactions. It then describes four mobile code paradigms: client-server, remote evaluation, code on demand, and mobile agents. For each paradigm, it shows how components are redistributed across sites before and after. It discusses how these paradigms can benefit scenarios like deployment/upgrades, customization, disconnected operations, and fault tolerance. The document concludes that no single paradigm is best and the choice depends on the application and which costs to minimize. It provides an example showing remote evaluation is better than others for information retrieval.