This text is designed for a CS2 data structures course using C++ as the base programming language. The author introduces Object-Oriented Programming concepts in the context of traditional data structures and algorithms, emphasizing encapsulation from the beginning and gradually bringing in generics, inheritance and polymorphism as the book progresses. Real-world examples illustrate the material in a way that makes it accessible to readers with no more than a basic background in the subject. All supporting materials, including source code, will be available to interested individuals via the World Wide Web.