Пожалуй, все зависит от Вашего текущего уровня, и не только в области программирования, но и в области математики и информатики в целом, т.к. многие хорошие книги подразумевают, что читатель уже знаком, например, с основами устройства "железа" или с такими математическими понятиями, как матрицы или численные методы.
Как правило, чем "скучнее" книга, тем лучше и точнее в ней описан язык программирования. Иногда, лучший учебник - это официальная документация той технологии, которую хотите освоить. А самые плохие книги и курсы - в стиле самоучителей и "освой за 24 часа".
Конкретных книг перечислять не буду, т.к. выбор книги зависит от того направления, которое Вас интересует.
Идеальный вариант для обучения - это наличие трех составляющих: искреннее желание и любовь, хорошая книга без воды, хороший наставник.
Преподаватель крайне важен. Но это должен быть человек, который сам разрабатывает настоящие реальные программы, а не просто препод, который, например, пересказывает на лекциях основы Бейсика по доисторической методичке.
Мне рекоммендовали сайт JavaRush - там курс по Java оформленный в виде игры по Футураме, все просто и доступно объясняют. Вначале он бесплатный, но со временем начинаются платные уроки.
Человеку нужны глубокие знания, он же сказал.
Универские методички? Серьезно?
Да ими можно разжигать костер, они бестолковые.
Ну так вот же!
https://javarush.ru/quests/lectures?quest=QUEST_HARVARD_CS50&level=0
Я не знаю, кто эти волшебные люди, но они полностью перевели весь гарвардский курс на русский язык и раздают его бесплатно! Это даже хлеще чем Хогвардс!
потеря времени
В дополнение к остальным, во многом правильным, ответам:
Если вы хотите стать программистом и готовы отдать обучению половину своей жизни — отправляйтесь читать "Искусство Программирования" Дональда Кнута
Кнута всего прочитать? Вы шутите?
Обычно так говорят те, кто даже одной книги не осилил.