Darwin is a configuration language which allows distributed and parallel programs to be structured in terms of groups of process instances which communicate by message-passing. In addition to expressing static structure, Darwin can be used to express structures which change dynamically as execution progresses. In this paper, we present a set of examples illustrating the use of Darwin in constructing parallel programs. As processes can be considered as abstractions of physical processors, Darwin can also be used to describe the hardware structure of distributed memory multicomputers in terms of processors and their interconnection. We illustrate this for a multicomputer constructed from transputers and show its use in the process of mapping the logical structure of a parallel program to the physical hardware.