Prerequisite: CS770. Topics include the organization of a software system; the selection of the structural elements and their interfaces and behavior as specified in the collaboration among those elements; the composition of the elements into progressively larger subsystems; and the architectural style that guides the organization, its elements and their interfaces, collaborations, and composition.