Как самостоятельно изучать теоретическую информатику?
В теоретической информатике довольно много разделов (теория игр, чисел, вычислений, криптография, алгоритмы и т.д.). Такой вопрос, что из этого нужно обязательно изучить и знать, чтобы быть хорошим специалистом?
Посоветуйте какие-нибудь курсы, книги или просто личные советы.
Nick_Redwill, define "сложная задача".
Почему нельзя просто взять пример такой сложной задачи и попробовать её решить привычным способом - изучая всё необходимое для её решения?
Nick_Redwill, Работа лучше всего качает данный навык. Вы набираете базовый минимум нужный для интересующей вас профессии - устраиваетесь на работу джуном, и повышаете свои скилы, не на субъективных задачах которые выдумываете из головы, а на реальных сложных задачах. Вот тут и пригодится литература, опыт старших коллег. Вбирать в свою голову все знания Computer Science - не хватит сил, времени)
Василий Банников, почему нельзя просто делать хорошо, а плохо не делать?
Потому что при столкновении со сложной задачей для решения которой нужно много чего знать, чаще всего не достает знаний ни о дано ни о нужно найти. Если бы мы знали какие знания нужны и применимы к каждой задаче с которой мы сталкиваемся, в другом мире бы жили.
Скорее всего - никак. Информатика (и вычислительная техника) это все практические науки. Их надо изучать параллельно делая что-то руками. Все что вы перечислили. Теория игр. Криптография. Должно быть подкреплено реальным проектом где это используется.
В противном случае - эти знания бесполезны и забудуться. Это я по себе говорю. Такой мой опыт.