Теория множеств (можно почитать Валенкина, Рассказы о множествах)
Дискретная математика и Комбинаторика (тот же Валенкин "Комбинаторика" или "Беседы о математике")
Алгоритмы и структуры данных (можно почитать Дасгупту - хорошая книжка. интерактивный учебник по алгоритмам:
aliev.me/runestone/)
Из дополнительной литературы могу посоветовать
"Что такое математика?" Курант
SICP (тут на ваше усмотрение, не помешает. пугаться скима не надо. он очень простой и объясняется с самых первых глав. сразу скажу книга не о языке Scheme, а о программировании в общем)
Вы обязаны знать что такое Big-O notation (можно почитать серию статей тут
habrahabr.ru/post/196226/)
А вообще внимательно перечитайте статью
steve-yegge.blogspot.ch/2008/03/get-that-job-at-go... тут описано чего должен знать каждый инженер-программист