During the last decade, control and coordination of distributed multi-agent systems has changed dramatically due to a confluence of new tools found in the intersection of graph theory and systems theory, new application domains, low-cost platforms, and novel control and coordination protocols. As a result, we now have a much better understanding of how large teams of spatially distributed agents should be structured in order to solve increasingly complex tasks. In this talk, we will discuss some of these recent developments and we will show how one can go from high-level specifications and instructions for the team as a whole, to local interaction rules for the individual agents that achieve and maintain formations, cover areas, and even make the agents respond to high-level, human instructions.