стоит понять Архитектуру ЭВМ, Основы ОС и базовый АСМ.
Что бы писать программы для компьютеров надо(внезапно) понимать хотя бы основные принципы работы компьютеров. Ассемблер учить не обязательно, а понимать почему в байте 8 бит на уровне архитектуры - достаточно важно, что бы потом не возникало вопросов "почему нельзя создать переменную которая бы занимала места столько, сколько нужно для хранения именно текущего значения, а не больше, чтобы память экономить", а то тут часто подобную дичь спрашивают. Так же - ОС на уровне как работает ФС, что такое страничная память, как работает адресация, кодировки символов и прочие составляющие. Если быдлокодить - это вообще не нужно знать, если писать что-то более-менее серьезное - без этого уйдет много времени на понимание что и как сделать "чтоб работало". Другой момент что это не обязательно делать ДО обучения, вполне можно совместить.