Тут я описал немного примеров.
Нужна логика, булева алгебра, основы теории алгоритмов, теория множеств, для графики - неплохо бы и геометрию, дискретная математика: теория графов, представление данных в виде деревьев очень удобно и эффективно, линейная алгебра. Это то что сходу пришло в голову, но не уверен, что это преподают в школе. Еще можно выделить различные методологии, вроде методов кластерного анализа, методов экспертных оценок, принятия решений, теории вероятностей, теории игр, но это уже не математика, но для их понимания - нужны ее (математики) основы.
Насколько я знаю - в школе преподают арифметику, алгебру (расширение арифметики) и геометрию. Решение систем уравнений и прочие веселые деления столбиком в общем-то полезны для начала, но как говорил Эйнштейн:
Никогда не запоминайте то, что вы можете найти в книге.
Так для меня и осталось загадкой - зачем искать дискриминант десятки раз в разных примерах. Умный считает в уме, а программист - в программе. Достаточно понимать, как и что нужно считать. Не нужно зубрить доказательство теоремы Ферма - это для математиков, но без понимания "исключающего или" далеко не уедешь.
Очень важны знания информационных технологий, в том числе понимание что такое дискретизация, как хранятся и что представляют из себя данные, особенности работы различных устройств ну и английский язык.
Больше подойдет не фантастика, а знакомство хотя бы с фундаментальными паттернами проектирования (для начала).