Object-oriented Software Principles and Design
GRS CS 611
Introduces principles and techniques of object-oriented programming. Focuses on specification, programming, analysis of large-scale, reliable, and reusable Java software using object-oriented design. Includes object models, memory models, inheritance, exceptions, namespaces, data abstraction, design against failure, design patterns, reasoning about objects.

