Как заполнить пробелы в знаниях?
Для начала можно признать, что такую проблему за день не решить. Я бы посоветовал продолжать жить, много программировать, много заниматься математикой, и через пару лет вы сами себя не узнаете
Иногда легче учить что то новое с нуля, а не переучиваться. )
Что касается алгоритмов, порекомендую курс видеолекций
"Школа анализа данных. Алгоритмы и структуры данных поиска. Лекции и курсы от Яндекса"
rutracker.org/forum/viewtopic.php?t=4640452
Возможно они где то на официальном сайте лежат https://yandexdataschool.ru/  но я ссылки быстро не нашел
Что касается ООП - совет будет зависить от выбранного вами языка