We present an argument in favor of forming coalitions of peers in a data swarming system consisting of peers with heterogeneous upload capacities. In this paper, a coalition refers to a set of peers that explicitly cooperate with other peers inside the coalition via choking, piece selection, and capacity allocation strategies. Furthermore, each peer in a coalition exchanges data with peers outside its coalition via distinct choking, piece selection, and capacity allocation strategies. We first propose a simple Random Choking strategy for peers inside a coalition and develop an analytical model for studying its performance. Our model accurately predicts a coalition's performance and shows that the proposed strategy helps a coalition achieve near-optimal performance. Furthermore, our model can be easily adapted to model a BitTorrent-like swarm. We show that our Random Choking strategy significantly outperforms Tit-for-Tat and Unchoke-All strategies proposed in prior work. We also introduce a simple piece selection strategy, which significantly improves data availability within a coalition as compared to Rarest-First strategy employed in BitTorrent systems. Using cooperative game theory, we prove the existence of stable coalitions when peer population is fixed and each peer has complete information of other peers' actions and payoffs. When peers are allowed to freely join or leave coalitions, we propose a Cooperation-Aware Better Response strategy that achieves convergence of the dynamic coalition formation process. Finally, using extensive simulations, we demonstrate that forming coalitions results in significant improvements in the overall performance of a data swarm.