Здесь описано про проектирование программ и сопутствующую математику. Вполне фундаментальные вещи.
Так же рекомендую разобраться в: логике первого порядка, теории множеств, машине Тьюринга, лямбда-исчислении. Затем рекомендую освоить какой-нибудь функциональный ЯП (чем больше похож на Haskell, тем лучше). Хорошая инвестиция времени.
Про более приземленные вещи советую читать у Таннебаума:
Компьютерные сети
Распределенные системы
Архитектура компьютера
Современные операционные системы
Операционные системы: разработка и реализация