Математика -
сильно желательно: теория графов, линейная алгебра, алгоритмы в удобном вам объёме.
опционально: немного алгебры, теория массового обслуживания;
явно лишнее (но пихаемое): матанализ, теория категорий.
вопрос что следует учить - слишком обще поставлен. И ответ на него зависит от примерной вашей ситуации, вот несколько вариантов:
- С (или Rust) + Haskell - «математика» в вопросе намекает на олимпиадность темы?
- Специальный учебный язык
- любой промышленный язык: Java / JavaScript / Python
- промышленный язык с хорошими для обучения характеристиками: Kotlin / Go
- любой прикладной стэк: фронтэнд / бэкэнд/ приложения под платформу (выберите платформу сами)