This chapter deals with fair division of indivisible goods. The first part of the chapter is dedicated to preference representation for resource allocation problems. Then we introduce fairness and efficiency criteria and focus on the computational aspects of fair division, namely, complexity and algorithmic issues of the centralized computation of fair allocations. The final part of the chapter is dedicated to distributed protocols for fair division.