Теоретическая часть по программированию?
Одно могу сказать точно: если человек, после полутора лет штудирования С++  (кстати, не самое простое, но  - по моему мнению -  самое верное начало) пишет по сути - "хочу не только кодить, ни и уметь действительно разрабатывать программные системы" - это отлично. Потому как многие - а сегодня, увы, можно сказать и большинство -  останавливаються именно не кодинге, и мнят себя при этом курутыми разработчиками.
Если обратить внимание на то, что автору всего 17 лет - то тем более -  респект, так держать!
Теперь по сути. Вы абсолютно правы, кодирование на любом языке, даже виртуозное, это еще не программирование. Что-бы стать хорошим программистом надо основательно изучить основы Теории Алгоритмов и Структур данных, теорию и практику работы с базами данных, особенности построения распределенных, мобильных и веб-приложений (даже если завтра вы не собираетесь писать под веб или Андроид), понять хотя-бы в общих чертах, как работают сети, и "полирнуться" основами архитектуры современных информационных систем и паттернами проектирования.  Ну и надо понимать, для квалифицированного программиста знание одного языка - этого абсолютно недостаточно.
В каком порядке и по каким источникам двигаться к цели - тут мнений много и разных. Вот несколько ссылок - только не воспринимайте их буквально, подходите творчески. Смотрите, что лучше вам ложиться на душу, что легче "заходит". И не комплексуйте, не бейтесь головой об стену если чего не поймете сразу - потом, через определенное время  вернетесь и с высоты приобретенных знаний разберетесь. Главное - не отступать от цели, как в спорте -  хоть по часу-два, но каждый день.
Итак, для начала: 
https://proglib.io/p/cs-learning/
https://teachyourselfcs.com/
https://tproger.ru/curriculum/computer-science-ste...
Удачи!
P.S. И еще забыл - главное :-). English!!!! Без него в этой профессии сегодня - никак!
P.P.S. И да - умение самостоятельно Гууглить, искать нужную информацию, отсекать информационный шлак. Ключевое слово - "самостоятельно"! Но это, как бы, вообще на "нулевом" месте.
Эко вас мотает. То:За полтора года я весьма хорошо изучил основы С++
то:чувствуется пробел в теоретической части (алгоритмы, структуры данных, паттерны и т.д. ...)
Сдаётся мне, что вы не знаете C++. Судя по этой фразе: Sazoks Sazoks Автор вопроса
*Относительно крупных)
~500-600 строк.
Практики у вас  ноль, так что советую сесть и потихоньку делать какую-нибудь программу для себя. Потом другую, потом третью и набивать себе руку.