The document discusses object-oriented design (OOD). It aims to explain how a software design can be represented as interacting objects that manage their own state and operations. It describes the activities in the OOD process and introduces models that can be used, including the Unified Modeling Language (UML). Characteristics of OOD like encapsulation and message passing are covered. The document provides examples of concepts like objects, classes, associations, generalization and inheritance. It also discusses design of concurrent and distributed systems.