Поскольку буду показывать трансляцию рабочего стола с GNU/Linux, и примеры все будут на этой системе — то да, думаю, с этого надо начать.
Ладно. Прошу учесть, что все что ниже - чистой воды ИМХО, и текущий план в целом нормальный.
На мой взгляд начинать стоит с архитектуры компьютера, как минимум разобраться что такое CPU и RAM, и как они в целом работают. Для описания и демонстрации принципов (инструкции процессора, работа с памятью) можно взять любой простой асемблер (что-нибудь вроде PIC, там вся ISA на 40 страниц) и разбирать простейшие примеры на нём. После этого у людей должно сложиться понимание, что всё программирование сводится к перекладыванию байт с места на место и выполнению простейших операций над ними.
После этого можно и С объяснять. С учётом прошлого этапа, модель памяти в целом, и тема указателей в С в частности, должны пойти сильно проще.
По темам "Синхронизация" как мне кажется нехватает примеров (классических задачек вроде философов). Если делать как "домашнее задание", то они отлично дают понять, что жизнь - боль. Ещё атомиков нехватает.