Вообще для обучения я бы использовал параллельно 3 курса:
- Работа железки (от триггеров до простейшего АЛУ). В идеале - с проектированием своей простейшей железки и сборкой ее из конструктора (без паялки). И без программирования - просто железныя логика.
- Ассемблер/Си. Можно не погружаться особо в особенности написания программ на ассемблере (ограничиться какими-нибудь очень простыми вычислениям + понятие стека/регистров). Но вот сишные указатели на указатель + адресная арифметика должны быть обязательно усвоены. Тем, кто не усваивает - предлагается еще раз подумать о выборе професии
- Оберон/КП и какой-нибудь ФП (скорее хаскель). На примере оберона рассказать про тот же GC и его проблемы, базовое ООП и компоненты. Ну там про циклы, конечно же
Хаскель - как антикостное средство для мозга
После всего это можно уже на рабочем месте изучать всякие жабы с фрэймворками и прочите питоны с жабаскриптами.