Должны ли по предмету ООП изучать какой либо язык?
Лучше с языком, иначе будет нихрена не понятно.
В идеале язык должен иметь такую сущность, как интерфейсы или хотя бы абстрактные классы.
ООП в разных языках имеет небольшие отличия, допустим есть C++ с множественным наследованием, в джаве есть реализация множественного наследования уже через интерфейсы.
В целом если ты проходишь ООП то скорее всего уже знаешь базовый синтаксис языка на котором учишься, лучше конечно изучать по нему, но сама теория ООП подразумевает изучение предмета без кода. Когда я начинал на джаве то вникал в примеры по статьям в которых был тот же Php и вроде как проблем особых у меня не возникло с понимаем. Жёсткой привязки нет, но лучше конечно видеть явно примеры реализаций что бы понять предмет как можно глубже.