По алгоритмам и структурам данных - классика, но на мой взгляд, не утратила актуальности - Никлаус Вирт, "Программы = алгоритмы + структуры данных". Старая, еще до ООП. Довольно компактная и очень ясно написанная. Есть несколько вариантов, где в примерах используются разные языки (начиная с паскаля), но в конкретный язык не упирается - фокус на общих принципах.
По ООП - Гради Буч, "Объектно-ориентированное проектирование" - тоже классика по ООП, первоисточник.
Вообще классическая классика по программированию - Кнут, "Программирование" - но это надо быть героем. 10 томов, где 10000 алгоритмов разобраны и изложены на языке уровня ассемблера.