Таненбаум «Архитектура компьютера» (остальные его книги — опционально)
Хагарти «Дискретная математика для программистов» (поможет лучше понять МИТовский учебник по алгоритмам)
Стивенс «Профессиональное программирование в Юникс» (ещё у него есть три книги TCP/IP Illustrated, это если сетями занимаетесь).
Керниган и Пайк «Практика программирования»
Опционально (очень углубленное изучение фундаментальных основ, которое может Вам даже не понадобиться):
Кнут «Искусство программирования» (вышло 4 тома и ещё пара выпусков приложений) — требует очень глубокого знания дискретной математики.
Ульман, Ахо и сотоварищи Книга дракона (если задумаете свой язык и компилятор к нему написать), так же от них «Введение в теорию автоматов, языков и вычислений», которую надо читать перед книгой дракона.
Так же опционально какие-нибудь книги по вычислительной математике, а перед ними — по высшей математике (Фихтенгольц). Как справочник можно держать Письменного «Конспект лекций по высшей математике».