Дискретная математика, и просто математика — нужна программистам однозначно!
Цитата:
0. Математическая логика.
1. Исчисление высказываний и предикатов (например, в искуственном интеллекте сильно пригождается)
2. Булева алгебра и булевы функции — ну, сам понимаешь, без этого — никуда.
3. Все, что найдешь по графам — без сомнения, должен прочитать и усвоить. Лучше — алгоритмический подход, чем теоретический (Кристофидеса книжка, например). Без них — вообще никуда. Многие программисты, бывает, изобретают алгоритмы там, где уже все давно написано — в теории графов.
4. Автоматы — сам назвал. "Автоматы всякие важны, автоматы всякие нужны"(с) Михалков, кажется. Там у него мамы. И это в компиляторах тоже много. И не в компиляторах тоже.
5. Формальные грамматики и языки — основа синтаксического анализа в компиляторах.
5. Комбинаторика.
6. Будешь смеяться, но и высшая алгебра — нужна обязательно. Кажется, каким боком? А вот нужна! Теория информации и кодирования — вся на алгебре основана. А кодирование, сам понимаешь — программистский хлеб. Например, zip-архиваторы используют адаптивное кодирование по Хаффмену. А блочный линейный код, знаешь, что такое? ASCII — это блочный линейный код. А с другой стороны есть определение: БЛК — это линейное векторное пространство над полем Галуа. И есть еще много других кодов, основанных, например, на многочленах. Короче, алгебра — обязательно!
7. Теория принятия решений — без нее никак. Многокритериальная оптимизация, например, по принципу Парето — вся принятие решений в экономике на этом стоит — еще с начала века.
8. Вероятность — а экспертные системы многие на этом стоят: шансы, коэффициенты уверенности и так далее. Тут же недалеко и нечеткие множества, логика, отношения, числа, графы.
В общем, математика нужна для понимания и реализации.