  Large scale systems are forecasted to greatly impact our future lives thanks
to their wide ranging applications including cooperative robotics, mobility on
demand, resource allocation, supply chain management. While technological
developments have paved the way for the realization of such futuristic systems,
we have a limited grasp on how to coordinate the individual components to
achieve the desired global objective. This thesis deals with the analysis and
coordination of large scale systems without the need of a centralized
authority.
  In the first part of this thesis, we consider non-cooperative decision making
problems where each agent's objective is a function of the aggregate behavior
of the population. First, we compare the performance of an equilibrium
allocation with that of an optimal allocation and propose conditions under
which all equilibrium allocations are efficient. Towards this goal, we prove a
novel result bounding the distance between the strategies at a Nash and Wardrop
equilibrium that might be of independent interest. Second, we show how to
derive scalable algorithms that guide agents towards an equilibrium allocation.
  In the second part of this thesis, we consider large-scale cooperative
problems, where a number of agents need to be allocated to a set of resources
with the goal of jointly maximizing a given submodular or supermodular set
function. Since this class of problems is computationally intractable, we aim
at deriving tractable algorithms for attaining approximate solutions. We
approach the problem from a game-theoretic perspective and ask the following:
how should we design agents' utilities so that any equilibrium configuration is
almost optimal? To answer this question we introduce a novel framework that
allows to characterize and optimize the system performance as a function of the
chosen utilities by means of a tractable linear program.
