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