Правильно ли построен путь программиста, по которому хочу пройти?
Зависит от вашей конечной цели и ожидаемого срока прихода к ней.
программирование на машинных кодах - программирование на Ассемблере
Это практически один шаг, его можно совместить с шагом "архитектура процессора".
Устройство операционных систем без практики изучать бесполезно, а для практики нужно знать С и ассемблер.
Стурктуры данных и алгоритмы лучше начать изучать вместе с языком и до операционных систем, потому что иначе тоже будет неудобно.