Design can be considered a process leading to the definition of a physical form that achieves a certain predefined set of performance criteria. The process comprises three distinct operations: (1) Definition of the desired set of performance criteria (design goals), (2) generation of alternative design solutions, (3) evaluation of the expected performances of alternative design solutions, and comparing them to the predefined criteria. Difficulties arise in performing each one of the three operations, and in combining them into a purposeful unified process. Computational techniques were developed to assist each of the three operations. A comprehensive and successful computational design assistant will have to recognize the limitations of current computational techniques, and incorporate a symbiosis between the machine and the human designer. This symbiosis comprises allocating design tasks between the designer and the computer in a manner that is most appropriate for the task at hand. The task allocation must, therefore, be done dynamically, responding to the changing circumstances of the design process. This report proposes a framework for such a symbiotic partnership, which comprises four major components: (1) User interface and design process control, (2) design goals, (3) evaluators, (4) database