The purpose of this project is to further investigate the nature of programming. Insights gained into the nature of programming can be used to improve the technology of structured programming, and, in time, facilitate the development of automatic programmers. The approach taken is based on Tarski's algebra of relations. In this approach, program construction is viewed in terms of solving equations in the algebra of relations. Since the algebra of relations is not sufficiently structured, these equations cannot be solved systematically. The essence of this project is to derive a network of heuristics for solving these equations. The task of programming digital computers is complex. Recent advances in structured programming have provided ways to control this complexity, but much work remains to be done. New advances that contribute to the simplification and systematization of the programming process can make a broad multi-disciplinary impact.