Какая информатика нужна информатикам?

Непейвода Николай Николаевич

В статье [1] и в докладах автора последних лет проведён анализ основных проблемных противоречий, возникающих при подготовке информатиков высшего уровня (вопросы подготовки кодеров автора не интересуют). С этой точки зрения проведён детальный анализ требований к математическому циклу. Сейчас необходимо определить требования к профессиональному циклу, тем более, что за последние годы были явно осознаны некоторые базисные понятия, всё время упускаемые в мировой практике программирования и, соответственно, обучения ему.

Базисные тезисы

  1. Чтобы попасть в цель, нужно целиться выше цели. Чтобы готовить программистов высшей квалификации, нужно поставить цель готовить информационных аналитиков, для которых программа не самоцель, а инструмент, причём, как правило, подлежащий доработке, а не использованию как нечто данное.
  2. Если на 1 курсе студентов обучают новейшим системам, то с 5-го они выходят, зная морально устаревшие.
  3. Недоделанные бакалавры никому не нужны (цитата из выступления главы программистской фирмы в УдГУ), а предусмотреть, какая дополнительная квалификация будет нужна на практике, и разработать для всех них магистерские курсы невозможно и нереально.
  4. Работать по-японски, а не по-петровски: приспосабливать лучший мировой опыт к особенностям своего народа, а не свой народ к помойке мирового опыта.
  5. Рассчитывать на рабочий век выпускаемого специалиста, а не на первые 5 лет его трудовой деятельности.
  6. Цель обучения специалистов высшей квалификации состоит в создании системы знаний, а не в напичкивании знаниями. В систему всегда легко добавить то, что было упущено. Поэтому практические занятия, а не лекции, должны занимать основное место в обучении, а программы не должны быть перегружены частностями. Лучше основательно разобрать меньше тем, чем пробежаться по всем. Лучше иметь крупные курсы, а не разрозненные «модули» (единственное, на что можно согласиться в угоду «болонкам», чтобы в международных описаниях каждый семестр крупного курса описывать по-своему).
  7. Стандартизация и болонизация в московско-петровском исполнении вредны, поскольку нужно использовать сильные стороны нашего народа и наших конкретных университетов, а не требовать, чтобы провинция исполняла то, что диктует Москва.

Таким образом, мы говорим об обучении информатике на базе фундаментального цикла нечисленной математики (ФИТ НГУ, УдГУ, но не МГУ). На этой базе реформирование информационного цикла проходит легко и естественно, если за это дело взяться с точки зрения системного и логического подхода.

Основные принципы программы

  1. На первых курсах обучение системе фундаментальных понятий: система стилей программирования, навыки анализа задач и программ, наиболее принципиально важные инструменты.
  2. Учёт общей атмосферы российских вузов, где взаимопомощь, недисциплинированность, инициативность и критическое отношение к преподавателям и к материалу (негативное русское мышление, а не «позитивное» англосаксонское) являются основными особенностями.
  3. В середине обучения переход к технологиям (индустриальное и экстремальное программирование).
  4. В конце обучения в качестве примеров изучение нескольких актуальных и сложных программных систем.

Поэтому во многих случаях целесообразно в качестве систем для обучения брать те, которые меньше заражены конкретными особенностями реализации и (или) случайных фирменных решений (GNU C++ или Ада, но не Java или. Net, Common Lisp, но не OCAML и т. д.).

Построение обучающего цикла

1 год обучения
Введение в информатику. Традиционное программирование (структурное, автоматное, начала объектного). Нетрадиционное программирование (сентенциальное, событийное, функциональное). Курсы традиционного и нетрадиционного программирования должны идти параллельно. Это заодно позволяет решить ещё одно проблемное противоречие в преподавании: как показать шибко умным и весьма «крутым» первокурсникам, которые пришли, уже умея кодировать, что они по сути дела ещё ничего не знают, а то, что знают, знают извращённо.
2 год обучения
Индустриальные технологии программирования: параллельные курсы индустриального (т. н. объектно-ориентированного) и экстремального программирования и дизайна. Базы данных и знаний, либо графические системы, либо что-то ещё из базисных прикладных разделов информатики.
3 и 4 годы обучения
Практикум. Основные области приложений информатики: базы данных и знаний, графические системы, издательские системы, бизнес-анализ (в частности, статистика и системы поддержки принятия решений), бизнес-процессы. Из этого набора исключается тот фундаментальный курс, который был прочитан ранее.
(*)
Обязательно нужно несколько маленьких курсов (2–3), читаемых по конкретным модным системам отличными специалистами, но отвратительными преподавателями (желательно недавними выпускниками, ставшими ведущими специалистами), достаточно жёстко спрашивающими со студентов. Это вводит студентов в атмосферу будущих обучений новым системам и знаниям. Серьёзные курсы проектирования и организации работы программистских коллективов, читаемые руководителями либо ведущими специалистами фирм (чаще всего бывшими выпускниками, обязательно неплохими преподавателями).
5 курс
Завершение исполнения подпункта (*) из предыдущего цикла. Серьёзнейший дипломный проект. Фирменные курсы и сертификационные курсы по открытым системам.

Такая система подготовки даёт возможность всем успешно закончившим найти своё место (открытое либо фирменное ПО, старший программист, либо аналитик, либо бизнес-консультант, индустриал либо экстремал и т. п.).

Литература

  1. Непейвода Н. Н. Какая математика нужна информатикам?//Открытые системы, 2005, N 9.
  2. Непейвода Н. Н. Стили и методы программирования. М.: ИНТУИТ, 2005..