In recent years, there has been a great deal of attention in the software engineering community on the development of techniques and tools that provide support for the design and implementation of applications to be distributed across networks of workstations. Some of this focus has been on support for initial development and configuration of applications while other research has focused on techniques to support these types of applications at run-time. One novel aspect of workstation environments is that the number of processors available for use tends to grow and shrink over time. This aspect has caused increased interest in dynamic reconfiguration techniques that allow applications to adapt to their changing environment. Much of the current research in dynamic reconfiguration has focused on reconfiguration environments and heterogeneous process migration. This research is developing techniques for supporting dynamic structural and implementation changes. The work has three parts: 1) studying general approaches to implementing dynamic structural and implementation changes to applications, including those changes that require process participation, 2) determining what aspects of this task can be automated, and 3) building tools to support dynamic structural and implementation changes. The most promising approach is one that enables mapping the old global state of an application to a new global state based on the structural changes to be made. This CAREER project includes teaching initiatives geared towards introducing undergraduate students to issues in the design and implementation of distributed applications. The goal is to improve training in an area where many students get inadequate preparation for industry positions that require knowledge in this domain. ***