В дополнению ко всяким безусловно нужным достойному разработчику фундаментальным дисциплинам вроде мат логики, аналитической геометрии и прочим дискретным математикам, современные ВУЗ-ы практикуют также всякие "близкие к программированию" предметы, которые предполагают практику на компьютере.
Качество таких "практик" и "лабораторных работ" как правило настолько низкое, что выпускники даже стесняются их указывать в своих резюме.
С другой стороны ВУЗы сейчас в достаточной мере одумались и приглашают преподавателей с производства.
Дык вот, моё глубокое ИМХО состоит в том, что образование такое нужно организовывать по модели проектов с открытым кодом Jakart-а (
http://www.apache.org/foundation/how-it-works.html)
когда :
- ВУЗ просто содержит инфраструктуру "учебных" проектов (система контроля доступа, списки обсуждений, issue-tracking и т.п.), сводят студентов и конторы, при этом экономя н апреподавателях и часах но поставляя студентам полноценную практику
- работодатели предлагают проекты, контроллируют их, делают обязательное review-кода, дают разрешения на commit, консультируют студентов и т.п. при этом получая хороших подготовленных студентов и продвигая интересные им проекты.
- студенты вместо дурацких и бессымсленных занятий "на практиках", с первого курса работают на открытых проектах, участся писать так, чтобы это устраивало проффессионалов, пользоваться системами контроля версий, баг-трэкингом и т.п., делать diff-ы кода и тому подобное, как настоящие профессионалы, на старших курсах уже самим вести целые направления младшекурсников и делать самим review (например одно review от профи равняется трём ревью старшекурсников), администрировать всю систему
на выходе таким образом каждый "выпускник" помимо диплома и вкладыша к нему, получает также красиво оформленную бумажку, в которой
- формльно перечисляется его "учебная" деятельность, количество закрытых задач в issue-tracking (можно с описанием нескольких), количество коммитов, количество закоммиченных строк кода, всё со ссылками
- неформально даны рекомендации людей с производсва
вообще, можно даже на такой основе строить "выпускное портфолие программиста" по которому можно делать полноценную "презентацию" о которой пишут в peopleware
вот такой процесс уже будет формально готовить людей, готовых к использованию на производстве.