Мне кажется, то, с чего нужно начинать, это дискретная математика. Можно сказать, это азбука для программиста. Я ниже приложил некоторый список книг. Стоит, правда, понять, хотите вы самостоятельно изучать предмет или иметь менторов и готовую программу...
Дискретная математика
Есть здоровская книжка
Андерсона "Дискретная математика и комбинаторика". Она довольно толстая, но главы можно читать почти в случайном порядке. Некоторые математики жалуются, что она не очень строгая и много воды, но для начала самое то.
По дискретной математике есть русский
онлайн-курс на Stepic-е.
Если идти чуть глубже, есть неплохая книжка
Кнута и др. "Конкретная математика".
Алгоритмы и структуры данныхКормен "Алгоритмы: построение и анализ" в переводе А. Шеня. Осилить первые две главы, потом можно идти почти в случайном порядке. Написано достаточно просто и понятно.
Дасгупта, Пападимитриу, Вазирани "Алгоритмы".
Онлайн-курс по алгоритмам.
О математике
МЦНМО свободно распространяет много интересных книг:
www.mccme.ru/free-books
Посмотрите там в первую очередь Шеня и Арнольда. Например, В. И. Арнольд. Задачи для детей от 5 до 15 лет.
И разумеется не упустите замечательного писателя Мартина Гарднера "Математические головоломки и развлечения".
Задачники
Попрактиковаться в решении с проверкой можно здесь.
www.braingames.ru -- по математике
https://projecteuler.net/ -- среднее, ближе к программированию
acm.timus.ru -- по программированию
Очные программы
Умение самоорганизоваться -- это хорошо, но иногда нужен ментор и готовая программа.
Если вы живете в Москве или Петербурге, попытайте счастье в этих двух организациях:
https://yandexdataschool.ru/
https://compscicenter.ru/
Если нет, но есть возможность на два года уйти в учебу, попробуйте поступить в магистратуру СПбАУ на SE-направление:
mit.spbau.ru
Посмотрите задания на собеседования. Скорее всего вам будет что повторить или изучить, прежде чем поступить.
Удачи!