This text is designed for a CS2 data structures course using C++ as the base programming language. It introduces Object-Oriented Programming concepts in the context of traditional data structures and alghorithms, gradually bringing in generics, inheritance and polymorphism as the book progresses.