5 книг для начинающих программистов
Полезная подборка, чтобы разобраться в C++, JAVA, Python и узнать про код Грея.

Фундаментальные алгоритмы C++. Анализ. Структуры данных. Сортировка. Поиск
Роберт Седжвик (М.: Диасофт, 2002)
Часто тем, кто всерьёз занимается олимпиадной информатикой, рекомендуют прочесть трёхтомник Дональда Кнута. Кстати, недавно вышел четвёртый том. Но всё же перед тем как взяться за Кнута, советую обратить внимание на книгу Роберта Седжвика «Фундаментальные алгоритмы C++. Анализ. Структуры данных. Сортировка. Поиск».Пособие сравнительно легко читать, оно содержит примеры кода на С++ и подробное описание многих алгоритмов. Не обязательно читать его целиком, но лучше держать под рукой, если понадобится вспомнить или разобраться с нуля с какой-либо темой.

Java 8. Руководство для начинающих
Герберт Шилдт (М.: Вильямс, 2018)
Герберт Шилдт — один из самых опытных авторов книг по изучению языков программирования. Если вы планируете изучать Java, стоит начать именно с этой книги. Шилдт пишет простым языком, последовательно и структурированно.Время от времени встречаются вставки «вопрос – ответ» — своего рода лайфхаки, чтобы глубже понять прочитанный материал.Приятным дополнением станут главы о Swing и JavaFX.

Программирование на языке высокого уровня
Татьяна Павловская (Спб.: Питер, 2016)
Книга подойдёт школьникам и студентам, которые изучают язык с нуля. Материал изложен кратко, без лишних рассуждений и мелких нюансов.Автор разбирает основные структуры данных, принципы объектно-ориентированного программирования и демонстрирует возможности стандартной библиотеки языка. Каждая тема снабжена большим количеством примеров кода.

Python для детей. Самоучитель по программированию
Джейсон Бриггс (М.: Манн, Иванов и Фербер, 2018)
Эту книгу можно описать так: просто и интересно. Автор рассказывает о программировании на «Пайтоне» понятно даже для младшего школьника. Самоучитель содержит живые примеры и забавные картинки. В конце книги обсуждается разработка двух несложных игр.

Ханойские башни
Станислав Окулов, Андрей Лялин (М.: Бином. Лаборатория знаний, 2013)
Эта удивительная книга построена всего лишь на одной известной задаче про Ханойские башни. Несмотря на это, она содержит главы и про битовую арифметику, и про код Грея. Все примеры приводятся на языке Pascal.

Николай Осипов
Автор онлайн-курса программирования на Python в Фоксфорде, волонтёр международных workshop для ACM