
This course teaches principles and practices of advanced object-oriented design and programming.Students learn the following concepts:Class-Level Method design Class design Classes and interfaces Subtyping and inheritance Implementing inheritance Design by contract Collaboration-Level Values vs. objects Role objects Type objects Object creation Collaboration-based design Design patterns Component-Level Error handling Meta-object protocols Frameworks and components Domain-driven design API evolution