The second half of the twentieth century saw an astonishing increase in computing power; today computers are unbelievably faster than they used to be, they have more memory, they can communicate routinely with remote machines all over the world - and they can fit on a desktop. But, despite this remarkable progress, the voracity of modem applications and user expectations still pushes technology right to the limit. As hardware engineers build ever-more-powerful machines, so too must software become more sophisticated to keep up. Medium- to large-scale programming projects need teams of people to pull everything together in an acceptable timescale. The question of how pro gram mers understand their own tasks, and how they fit together with those of their colleagues to achieve the overall goal, is a major concern. Without that under standing it would be practically impossible to realise the commercial potential of our present-day computing hardware. That programming has been able to keep pace with the formidable advances in hardware is due to the similarly formidable advances in the principles for design, construction and organisation of programs. The efficacy of these methods and principles speaks for itself - computer technology is all-pervasive - but even more telling is that they are beginning to feed back and inftuence hardware design as weIl. The study of such methods is called programming methodology, whose topics range over system-and domain-modelling, concurrency, object orientation, program specification and validation. That is the theme of this collection.