Статья 20 ФЗ "О воинской обязанности и военной службе" предусматривает две программы обучения: программа военной подготовки для прохождения военной службы по контракту на воинских должностях, подлежащих замещению офицерами, и о дальнейшем прохождении военной службы по контракту после получения высшего образования (п. 1) и программа военной подготовки офицеров запаса, программе военной подготовки сержантов, старшин запаса либо программе военной подготовки солдат, матросов запаса (п. 2). Вот эти две программы постоянно путают и вносят неразбериху, кстати, юристы тоже часто читают седалищем. Обязанность заключить контракт после обучения относится только к первой программе, но это совсем не то, что предлагается в большинстве вузов. В основном вуцы обучают студентов гражданских вузов по второй программе, которая заканчивается месячными сборами, после чего обучающийся становится "запасным". Первая программа, контрактная, предусматривает помимо прочего  выплату студенту за счет средств федерального бюджета дополнительной стипендии, дифференцированной в зависимости от уровня его успеваемости по указанной программе. Вообще, автор, такие вопросы задают профильным юристам, ибо на еве каждый суслик - агроном, а возможность писать глупости анонимно сильно повышает процент ерунды и снижает уровень ответственности  за написанное.Другое дело, вам нужно иметь в виду, что офицерская программа рассчитана на 2,5 года и она частично попадает на срок обучения в магистратуре, поэтому, магистратура обязательна - раз, в магу другого вуза поступить не получится (сын учится по этой схеме) - два. Кроме того, если раньше это спасало от срочной службы в дальнейшем, сейчас, в условиях мобилизации, хз как это обернется. дернуть из запаса могут любого после окончания учебных отсрочек. В нашем варианте сын пойдет в аспирантуру на всякий случай, пока аспирантам дали отсрочку от призыва по мобилизации, а дальше будем смотреть, может это все закончится. А если не закончится, а наоборот, тогда похрен будет на военку или ее отсутствие, "сядем все" (с)