Multi Agent Systems (MAS) have recently attracted a lot of interest because of their ability to model many real life scenarios where information and control are distributed among a set of different agents. Practical applications include planning, scheduling, distributed control, resource allocation, etc. A major challenge in such systems is coordinating agent decisions, such that a globally optimal outcome is achieved. Distributed Constraint Optimization Problems (DCOP) are a framework that recently emerged as one of the most successful approaches to coordination in MAS. This thesis addresses three major issues that arise in DCOP: efficient optimization algorithms, dynamic and open environments, and manipulations from self-interested users. We make significant contributions in all these directions: Efficiency-wise, we introduce a series of DCOP algorithms, which are based on dynamic programming, and largely outperform previous DCOP algorithms. The basis of this class of algorithms is DPOP, a distributed algorithm that requires only a linear number of messages, thus incurring low networking overhead. For dynamic environments we introduce self-stabilizing algorithms that can deal with changes and continuously update their solutions. For self interested users, we propose the M-DPOP algorithm, which is the first DCOP algorithm that makes honest behaviour an ex-post Nash equilibrium by implementing the VCG mechanism distributedly. We also discuss the issue of budget balance, and introduce two algorithms that allow for redistributing (some of) the VCG payments back to the agents, thus avoiding the welfare loss caused by wasting the VCG taxes.