An assembly refers to a collection of parts joined together to achieve a specific form and/or functionality. Designing assemblies is a non-trivial task as a slight local modification on a part’s geometry or its joining method could have a global impact on the structural and/or functional performance of the whole assembly. Assemblies can be classified as structures that transmit force to carry loads and mechanisms that transfer motion and force to perform mechanical work. In this state-of-the-art report, we focus on computational design of structures with rigid parts, which generally can be formulated as a geometric modeling and optimization problem. We broadly classify existing computational design approaches, mainly from the computer graphics com- munity, according to high-level design objectives, including fabricability, structural stability, reconfigurability, and tileability. Computational analysis of various aspects of assemblies is an integral component in these design approaches. We review dif- ferent classes of computational analysis and design methods, discuss their strengths and limitations, make connections among them, and propose possible directions for future research.