In the last years, a considerable deal of work has so far been spent to understand and hence harness the physical principles that underpin the general properties of self-assembling systems. In particular, theoretical and computational modelling have been extensively used to obtain a detailed description of the actual process. This thesis reports on computational work, focusing on two different self-assembling systems and from two distinct perspectives. In the first part, a computational study of the self-assembly of string-like rigid templates in solution aims to explore to what extent it is possible to direct the assembly of the templates into knotted or linked structures by suitably tuning geometrical parameters of the system. The second part is devoted to some of the smallest instances of molecular self-assembly in nature, that is viral capsids. We report on the development of a physics-based algorithm to subdivide the structure of a capsid in quasi-rigid units, helping to elucidate the pathway of assembly from the identification of its building blocks with a top-down approach.