MGDSStudio
Учился на полуайтишной специальности.
На моей памяти преподаватели позиционировали как основу основ всея IT следующие вещи:
П1: Понимание как устроены системы счисления. Умение переводить из одной в другую. В первую очередь, конечно, двоичная)
П2: Модель OSI. Сейчас, правда, часто пишут, что она морально устарела, но тот препод прям фанат был, требовал ее жестко и со всех, до сих пор помню.
П3: Считал основой основ всего Двоичные семафоры Дейкстры. Независимо от вытянутого билета всегда дополнительно спрашивал про них.
Ну может еще булева алгебра. Все-таки все эти "and", "or", "xor" на ней базируются.
Добавлю от себя:
- На 1 курсе всех учат рисовать блок-схемы
- неотъемлемые составляющие любого языка программирования: переменные, циклы, массивы, классы, объекты. Базовые представления об ООП.
- Слышал такой вариант: если развинтить компьютер, то хороший айтишник должен уметь назвать любую деталь и сказать для чего она служит. Разумеется, не до последнего конденсатора и микросхемы, но, как минимум, отличать процессор от оперативки и кулер от винчестера.
- Основы баз данных и 3-я нормальная форма. Уметь создать хотя бы простые таблички, проставить связи между ними и уметь написать простой SQL запрос.
- Еще довольно часто попадается упоминание, что в must have входит умение оценивать сложность алгоритма, всякие O(2) и т д. Для написания серьезных вещей вероятно так и есть.
- Сетевые протоколы, но в первую очередь ,конечно, TCP/IP. И вообще как работает интернет, DNS и т д.
Это пересекается с выше упомянутой моделью OSI
Книг не посоветую. Все гуглится. Лучше ищите не книги, а составьте список вопросов для изучения, которые must have для любого айтишника. И ищите ответы на них в интернете.