Лабораторные по программированию
Я считаю что важными являются, как и умение писать ТЗ, так и навыки написания хорошего кода, а главное умение приметь математические или другие знания для написания действительно классных программ. В университетской программе основной задачей стоит научить правильно формализовать задачу, научиться аналитическому мышлению, получить общие знания  в основ сферах и направлениях для данной специальности. Не ставится задача научить студентов какому-то определенному языку программирования или же заточить под какие-то определенные технологии, потому что это вещи которые можно очень быстро освоить при хороших базовых знаниях. 
       Хотя если лабы по программирования, то все таки, я думаю, что было бы неплохо делать малейшее review кода для выявления ошибок и избежания их появления в дальнейшем (как ни крути, но предмет все-таки называется программирование).
       И теперь отвечу на твой конкретный вопрос, что если не хочешь всю жизнь проработать обычным "быдлокодером", то ты должен уметь писать ТЗ, но и кроме этого уметь применять математические методы и алгоритмы на практике. 
       Cпасибо за внимание и успехов в учебе!
99% причина в том что преподаватель некомпетентен и его знания остались на уровне 80х годов. Так как в программировании он особо не разбирается - будет мучать что отступы не по ГОСТу в отчете, что картинки не пронумерованы и т.д..
У меня по крайней мере именно так и было. В нормальных конторах никто не будет глупостями заниматься, нужен результат, писать кучу формальностей не нужно.
Так что отвечая на ваш вопрос - нет, это не нормально. И зная как заставляют писать ТЗ в универах - нет, такого в реальных ТЗ писать не придется (исключение составляют те несчастные, которые работают в вояковских конторах и вообще на наше гос-во, но если хоть более-менее любить свое дело - то вам хватит знаний, чтобы не попасть в такие конторы).