Я бы сказал, что эти 2 курса, найденные в открытых учебных курсах MIT, дают довольно хорошее представление о том, что нужно (2-я ссылка в комментарии):
http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2005/lecture-notes/
Я бы сказал, чтоВам, по крайней мере, нужно все, что упомянуто в 1-м курсе «Математика для информатики» (12-14 неделя).Эти темы были очень важны для меня для анализа алгоритмов и станут основой, если вы хотите изучить более продвинутые вещи во втором курсе (а также некоторые исчисления).Второй курс, который, я бы не сказал, вам обязательно нужен, зависит от того, в каком направлении вы хотите идти, например, он вам, вероятно, понадобится, если вы хотите заняться машинным обучением.(Я сам на том уровне, на котором мне нужно многому научиться, начиная со 2-го курса, поэтому я не знаю много о его применимости помимо того, что я написал)
Что касается собственно изучения, яЯ использовал книгу Кеннета Розена «Дискретная математика и ее приложения», которая является хорошей книгой, потому что в ней много упражнений, ответы на которые приведены в конце для половины из них.Упражнения - это действительно то, что нужно для изучения этого материала, чтение только поможет вам на полпути.
Книга «Разработка алгоритмов» Джона Кляйнберга и Евы Тардос - хорошая книга после того, как она узнала некоторые из них, чтобы на самом деле попытаться применить ее в информатике.В ней есть глава о рандомизированных алгоритмах, где теория вероятностей широко используется.Другим предложением для этого было бы «Введение в алгоритмы» Лейзерсона, Кормена, Ривеста и Стейна.
Что касается более продвинутой теории вероятностей, я сейчас читаю «Вероятность и статистика для информатики» Джеймса Л.Джонсон, но я еще не полностью продал эту книгу (пока я прочитал только первые 100 страниц).