Проектный подход при обучении разработке программ

Встречаются два фермера. Один другого спрашивает: как тебе удается получать от такой плохенькой коровы столько молока? А я ее каждое утро спрашиваю: «Что будешь давать, мясо или молоко?» Анекдот от Алисы Фрейндлих

1. Я с 1970 г. работаю в «НПО «Аврора», которое занимается созданием систем управления судовыми техническими средствами. Разработка системы управления – это сначала создание проекта (проектной документации), а затем его реализация «в металле». Поэтому можно утверждать, что я «с молоком матери» осознал, что в инженерной практике проектов без проектной документации не бывает. Однако, это относилось к системам, реализованным аппаратно.

2. С внедрением в контур управления ЭВМ появилась вторая компонента систем управления – программная. При этом я обратил внимание, что программы, в отличие от аппаратуры, не проектировались, а писались, что весьма странно, особенно для ответственных систем.

3. Это, видимо, было связано с тем, что программы проще модифицировать, причем внесение изменений в них не требует привлечения специалистов других специальностей или организаций. Поэтому проектная документация на программы если и выпускалась, то в значительно меньшем объеме, чем на аппаратуру, и называлась такая документация не проектной, а программной. Это нашло свое отражение в том, что номенклатура документов, выпускаемых на основе «Единой Системы Программной Документации», значительно меньше номенклатуры документов, разрабатываемых на основе «Единой Системы Конструкторской Документации».

4. В первое время в состав программной документации включались блок-схемы алгоритмов, которые в дальнейшем стали называться схемами алгоритмов. Однако принципы их построения таковы, что даже для относительно простых алгоритмов они получались громоздкими. Поэтому, если такие схемы и строили на начальных этапах создания программ, то в дальнейшем их никто не корректировал. При этом происходила «рассинхронизация» схем алгоритмов с текстами программ, написанных «по мотивам» указанных схем

5. Схемы алгоритмов в подавляющем большинстве случаев носили иллюстративный характер и не были исполняемыми – код по ним не генерировался. В тех редких случаях, когда указанные схемы были исполняемыми, они были неудобны для понимания человеком, так как из-за принципов построения на одном экране компьютера размещалось слишком мало их компонентов. Поэтому можно утверждать, что схемы алгоритмов не являются гештальтными, так как человек в основном понимает лишь ту информацию, которую воспринимает, как единое целое. По моему мнению, негештальтна любая диаграмма, для просмотра которой необходимо использовать скролинг.

6. Со временем и схемы алгоритмов из документации практически исчезли, за исключением телекоммуникаций, в которых для описания алгоритмов уже несколько десятилетий применяются SDL-диаграммы (Specification and Description Language), которые наряду с рядом достоинств, обладают теми же недостатками, что и схемы алгоритмов. Это, видимо, является основной причиной того, что в других областях SDL-диаграммы не нашли применения.

7. Таким образом, к концу 80-х годов прошлого века сложилась ситуация, при которой в состав программной документации входили тексты программ и не включались диаграммы. Это привело к тому, что от программной документации оказались отрезанными специалисты разных уровней, которые не являются программистами, но обычно (особенно в технике) обладают большим опытом и глубокими знаниями предметной области. При этом вместо знакомства с документацией им приходиться следить за функционированием программ в составе системы, когда «цена устранения ошибок» значительно выше по сравнению с этапом спецификации задачи. По моему мнению, чем раньше и лучше указанные специалисты смогут понять, что собираются делать программисты, тем выше будет качество программного обеспечения (ПО). Я считаю, что это основной путь повышения качества ПО.

8. В это время мне пришлось начать заниматься системами управления с ЭВМ и даже, не являясь программистом, стало понятно, что тут что-то не так, и что необходимо решать, как проектировать программы.

9. При этом из учебников по вычислительной технике было известно, что при разработке схем широко применяются конечные автоматы. Однако при создании программ автоматы использовались крайне редко. Они в основном применялись при написании компиляторов и описании сетевых протоколов. Кроме того, автоматы, которые используются в компиляторах, существенно отличаются от автоматов, применяемых в схемотехнике, так как они относятся к разным классам (абстрактные и структурные автоматы).

10. Я также обратил внимание и на то, что при обучении программированию автоматы обычно не использовались, за исключением спецкурсов по компиляторам. Книги по компиляторам писались математиками, и для инженеров были весьма сложны. Это, видимо, и приводило к отторжению применения автоматов в практическом программировании.

11. Меня крайне удивила эта ситуация, и я стал разрабатывать технологию проектирования программ на основе применения структурных автоматов, задаваемых в виде графов переходов, так как я чувствовал, что «каждая компьютерная проблема решается еще одним уровнем абстракции» (Дэвид Уиллер).

12. К 1991 г. (год первой моей публикации по этой теме) я разработал на основе автоматного подхода технологию разработки ПО одного класса систем управления – систем логического управления судовыми техническими средствами, которую назвал SWITCH-технология. Она охватывала такие этапы жизненного цикла программ этого класса как спецификация, проектирование, реализация, протоколирование и документирование.

13. При этом отметим, что в то время ни о каком унифицированном языке моделирования (Unified Modeling Language, UML) и поддерживающем его процессе (Unified Rational Process, URP) не было и речи. Правда, в мире c 1990 г. уже развивался подход, близкий к предлагаемому, который был назван его авторами Statemate (https://ieeexplore.ieee.org/document/54292), однако он, и по сей день не является общепринятым при создании ПО управляющих систем. Например, программы для программируемых логических котроллеров обычно создаются на основе других принципов. Кроме того отметим, что награда «нашла героев» лишь в 2007 г. – создатели Statemate (среди них один лауреат премии Тьюринга) были удостоены премии ACM Software Systems Award.

14. Апробацию технология автоматного программирования прошла в середине 90-х годов в НПО «Аврора» при создании ПО для ряда систем управления судовыми техническими средствами, разрабатываемых, в том числе, и совместно с иностранными фирмами, для которых она была принципиально новой.

15. В 1995 г. я подал заявку на грант Российского фонда фундаментальных исследований для издания книги по этой тематике, который выиграл в 1996 г. На следующий год – в 1997 г. – во время моей беседы с Дмитрием Александровичем Поспеловым – известным специалистом по логическому управлению и искусственному интеллекту, родился термин «автоматное программирование», который в настоящее время становится общепринятым. В начале 1998 г. в издательстве «Наука» вышла моя книга «SWITCH-технология. Алгоритмизация и программирование задач логического управления» объемом 628 страниц, в начале которой этот термин и был введен. Там же было предложено широко применять термин «автоматное управление», который до этого использовался только однажды – в названии книги В.И. Варшавского и его учеников. Отметим также, что в 2004 г. мной был предложен соответствующий англоязычный термин – Automata-Based Programming.

16. С выходом этой книги в свет связано два события: знакомство с Никитой Туккелем, с которым мы стали в НПО «Аврора» развивать предложенную технологию для задач управления, отличных от логических, и знакомство с Алексеем Васильевым – студентом кафедры «Компьютерные технологии» СПбГУ ИТМО, известной своими успехами в области олимпиадного программирования, о существовании которой я в то время не знал. Алексей проходил преддипломную практику в НПО «Аврора». Мы случайно познакомились, и он написал под моим руководством магистерскую диссертацию на основе автоматного подхода и познакомил меня в конце августа 1998 г. с Владимиром Глебовичем Парфеновым, который предложил мне почитать лекции по разработанной технологии для своих «мальчиков», продвинутых в области математики, физики и информатики. При этом он сказал, что в дальнесрочной перспективе я кафедру как кандидат наук не интересую… Через год я защитил докторскую диссертацию, что со временем мне очень пригодилось…

17. Я стал читать лекции по автоматному программированию и уговаривать этих сильных студентов направить свои усилия на совершенствование излагаемой технологии. Однако никакие убеждения не действовали. Они учились на пятом курсе, и практически все работали. Занятия проходили вечером, и ребята, естественно, уставали. Посещаемость была нормальной, но никакой их активности в направлении развития указанной технологии не наблюдалось. Проверка знаний по курсу осуществлялась в форме экзамена. Проку мне от всего этого практически не было: ни технология не совершенствовалась, ни научные результаты не получались, да и деньги были почти никакие. Какой прок был студентам от моих лекций, я тоже не знал, хотя очень старался. Это, видимо, определило то, что мне и на следующий год Парфенов предложил продолжить преподавать (по совместительству) на указанной кафедре. Это было весьма почетно, особенно для человека, который не являлся программистом.

18. Через пару лет, кроме экзамена, в отчетность по курсу мной было добавлено выполнение простейших курсовых работ. В силу того, что студенты были продвинутыми, то задачи на применение автоматного программирования они формулировали сами. Результаты этих работ сдавались на бумаге и на дискетах. При этом я наивно предполагал, что эти толковые ребята сделают что-то «человеческое», а со временем у меня появится какой-нибудь сильный аспирант, с которым мы будем приводить (с производительностью одна работа за встречу) указанные работы к такому виду, чтобы их можно было публиковать.

19. В 2002 г. такой аспирант появился – Никита Шамгунов – математик и призер чемпионата мира по программированию (ныне известный в мире ИТ-предприниматель). Однако наше знакомство с первыми двумя студенческими работами показало, что какими бы талантливыми не были студенты, они остаются студентами, и просто отбывают номер, если преподаватель позволяет им делать это. Потратив на доводку первой работы около 100 часов, а второй около семидесяти (эту работу мы исправляли уже втроем – вместе с ещё одним Никитой – Туккелем), я понял, что до «победы» работу должен доводить никто иной, как сам автор, естественно, при моем участии, так как его кто-то должен учить, как это делать. При этом было ясно, что никакие правила, написанные на бумаге и даже прототипы, проблему написания «человеческих» текстов не решат, поскольку программисты привыкли, что их ошибки обнаруживаются компилятором автоматически, роль которого в данном случае я уготовил себе. Стало понятно, что без изменения подхода к выполнению и приемке работ, их жизненный цикл мог быть только следующим: «работа на бумаге и в электронной форме, шкаф и помойка».

20. В 2000 г. мы с Никитой Туккелем создали модификацию предложенной технологии для построения событийных программных систем, реализуемых на процедурных языках программирования. Апробация этой модификации была проведена чуть позже на примере проектирования ПО системы управления дизель-генератором (http://is.ifmo.ru/projects/dg/). При этом был создан прототип программы и выпущена проектная программная документация объемом более 350 страниц, содержащая около ста диаграмм.

21. В 2001 г. нами была создана модификация предлагаемой технологии для построения управляющих систем, реализуемых на объектно-ориентированных языках программирования. Апробация этой модификации была проведена на примере проектирования ПО системы управления танком для известной компьютерной игры Robocode (http://is.ifmo.ru/projects/tanks/). Проектная программная документация была выпущена и в этом случае, что отличало эту реализацию (http://is.ifmo.ru/download/tanks_new.pdf) от других реализаций (http://is.ifmo.ru/download/tanks_new.pdf) этой весьма модной в то время в мире игры.

22. Имея под научным руководством двух сильных Никит, я хотел быстро совершенствовать технологию, но это не получалось, так как, во-первых, они работали, а, во-вторых, хотели «жить». Меня эта ситуация не устраивала, и я искал выход из сложившейся ситуации, который позволил бы проводить исследования и разработки значительно интенсивнее.

23. Такой выход я нашел в обучении десятков студентов проектированию программ в ходе выполнения ими курсовых проектов, используя разработанные нами автоматный подход и его модификации. Выбор объекта управления (моделирования) осуществлялся самими студентами для того, чтобы им было, по крайней мере, интересно делать проект.

24. Анализ результатов простейших курсовых работ, выполненных ранее, позволил понять причину почему я не получал желаемой отдачи от студентов: они имели знания в основном в области алгоритмов дискретной математики, а предлагаемый мной подход разрабатывался для проектирования ПО управляющих систем со сложным поведением, а еще я был недостаточно требователен к студентам и тратил на них слишком мало времени, на что они отвечали взаимностью. Пока я тратил на прием курсовой работы минуты, студенты тратили на ее выполнение не на много больше времени. Ни о каком качестве, а тем более развитии технологии и получении научных результатов, в такой ситуации говорить не приходилось.

25. Поэтому, начиная с 2003 г., я изменил методику преподавания и стал проводить обучение на основе разрабатываемого мной проектного подхода, который состоял из следующих этапов: 1. Стал проводить обучение проектированию ПО, начиная со студентов третьего курса. 2. Они разбивались на команды, состоящие из одного или двух человек (при увеличении числа студентов до трех или четырех, последние отбывали номер и не делали ничего). 3. Число команд, сформированных из двух учебных групп, достигало 25. 4. Команды записывались в очередь таким образом, чтобы наши встречи происходили один раз в месяц или в полтора месяца. Тем самым формировался «образовательный конвейер». 5. Каждая встреча продолжалась около трех часов. 6. Не было ни одной работы, которую удавалось довести до «товарного вида» меньше, чем за три четыре встречи. 7. Если я тратил на общение с одной командой 9-12 часов, то у команды на выполнение работы уходило как минимум в 10 раз (!) больше времени. 8. Проект, включая вычитанную проектную программную документацию, в обязательном порядке публиковался в сети Интернет на сайте http://is.ifmo.ru/.

26. При этом в качестве основного критерия использовался такой: ни студентам, ни мне не должно быть стыдно за сделанное. Документация должна быть написана так, чтобы по ней заинтересовавшийся человек, который не является программистом, мог в деталях понять, что сделано.

27. В настоящее время на сайте опубликовано более 150 проектов. Работы имели настолько «товарный вид», что около 25 из них было опубликовано на дисках журнала «Мир ПК», тираж которого в то время был 50 000 экз., что не характерно для публикации студенческих работ. По результатам курсовых работ, в которых получены новые научные результаты, пишутся статьи и материалы на российские и международные конференции. Во многих случаях курсовые работы «перетекают» в бакалаврские работы, а в дальнейшем – и в магистерские диссертации. В отдельных случаях сотрудничество со студентами «перерастает» в написание кандидатских диссертаций, но я думаю, что некоторые из них напишут и докторские диссертации.

28. При традиционной форме организации учебного процесса отдельные преподаватели информатики также «выкладывают» в Интернет результаты студенческих работ. Однако в силу того, что у преподавателей в большинстве случаев нет времени или желания доводить работы до «нормального» вида, они пишут на сайтах, что «работы как сделаны, так и выложены» (as is). В тех случаях, когда такая запись отсутствует во многих случаях «качество» работы видно «не вооруженным взглядом». По моему мнению, при традиционном подходе к преподаванию получить что-либо толковое от студентов, которые практически все работают, можно только случайно.

29. Именно для «отлова», в том числе и случайных работ, необходим «конвейер», который позволяет «просмотреть» всех студентов указанных групп для того, чтобы отделить найденные ими «зерна», если они имеются, «от плевел». Например, в этом году среди студентов был спортсмен, часто отсутствующий на занятиях из-за сборов, от которого меньше всего можно было ожидать чего-то неординарного. Так, вот именно он и выполнил такую работу, которую практически сразу можно публиковать.

30. Изложенный подход во многом совпадает с «системой ИТ-образования», принятой в одном из ведущих в этой области университетов мира Массачусетском технологическом институте (МТИ), которую называют «академической базой тренировки морских пехотинцев». В учебном процессе этого института есть лекции, но они служат лишь в качестве пояснения к постановке задачи и концепций ее решений. Для непосредственного решения задачи студенты объединяются в группы, и работа в них и является основным элементом обучения. При этом главным инструментом являются так называемые «библии», которые служат своего рода базами знаний коллекциями решений аналогичных задач, накопленных за годы. Изучая «библии», студенты пополняют их своими результатами. Принципиальное отличие этого подхода от предлагаемого нами состоит в доступности проектов в сети Интернет. Поэтому наш подход позволяет проводить обучение «на проектах» не только наших студентов, но и неограниченного круга лиц, интересующихся этой тематикой.

31. При написании статей, бакалаврских работ, магистерских и кандидатских диссертаций вновь работает «образовательный конвейер», описанный выше. При этом каждая работа оформляется и вычитывается нами до такой степени, чтобы, в конечном счете (после публикации на «бумаге»), ее не стыдно было опубликовать и на указанном выше сайте. В настоящее время номенклатура «выкладываемых» на сайте работ расширена – публикуются также результаты лабораторных работ по генерации автоматов на основе генетического программирования.

32. В результате изложенной организации учебного процесса студенты знакомятся с проектированием программ и технологией автоматного программирования и учатся писать «по-русски», что является уникальным явлением для технических вузов страны. Они также учатся мыслить логично, что позволяет им, в частности, в одном и том же документе не называть один и тот же предмет по-разному. Они обучаются созданию проектной документации на ПО, что обычно не вызывает большой радости у двадцатилетних молодых людей. Многие из них совершенствуют технологию автоматного программирования и получают научные результаты в области программной инженерии, что также не очень характерно для российских вузов.

33. В результате выполнения работ студенты на практике понимают, что был прав Гельвеций, который утверждал, «что для того, чтобы передавать свои мысли, надо гораздо больше ума, чем для того, чтобы их иметь».

34. Студенты, успешно выполнившие проект, начинают понимать, что мнение, бытующее среди программистов, о том, что программный код заменяет документацию, не всегда правильное: заменяет, если код написан тобой, и не заменяет, если он написан другими людьми. Я был свидетелем, как один программист призывал двух очень сильных программистов разобраться в программе, которая, по его мнению, была хорошо написана, но для которой не было документации. При этом он удивлялся тому, что у его коллег не возникало желания, «засучив рукава», срочно взяться за работу. Это было связано, видимо, с тем, что они знали, что «до сих пор, несмотря на обилие свободного кода, нормальных программ мало, и неизвестно, существуют ли какие-нибудь программы, тексты которых не вызывают отвращения?»

35. Опыт показывает, что те студенты, которые прошли через мой «конвейер», по крайней мере, научились писать по-русски, а те из них, кто случайно избежал этой участи, с указанным пробелом останутся на всю жизнь. Это, в частности, не позволило одному из студентов защитить магистерскую диссертацию, так как рецензент не смог понять, что в ней написано. Вот что о качестве выполняемых работ писал выдающийся математик Л.С. Понтрягин: «Только хорошо выполненная работа дает радость! Выполненная небрежно, она вызывает отвращение и постепенно вырабатывает в человеке аморальное отношение к труду».

36. Проектный подход при обучении разработке программ с обязательным выпуском проектной документации в настоящее время становится все более актуальным, так как, по словам ректора МГУ академика В.А. Садовничего, «отказ в ряде школ от написания сочинения на выпускном экзамене под предлогом, что больше нет такого вступительного экзамена, может привести к неспособности не только правильно выражать мысли, но и вообще мыслить», и это в условиях, когда «клиповое» мышления и так становится преобладающим.

37. Я встречаюсь со студентами каждый день, за исключением воскресений, праздников, непредвиденных обстоятельств и двадцати дней отпуска в августе. Мой опыт показал, что получаемые результаты прямо пропорциональны затрачиваемым усилиям. При этом подтверждается мысль бывшего генерального директора корпорации Нewlett-Рackard Карли Фиорины: «Чем меньше требуешь от человека, тем меньшего он и достигает».

38. Подтверждается также и другая мысль К. Фиорины: «Уверенность руководителя в силах подчиненных является одним из сильнейших мотивирующих факторов», а также мысль всемирно известного бизнесмена Ли Яккоки: «Все управление, в конечном счете, сводится к стимулированию активности других людей». С возрастом мне стало ясно, что сегодня следует биться не за свою возможность заниматься наукой, а за то, чтобы эту возможность имели твои лучшие ученики, в особенности те, кто находятся рядом.

39. Если раньше без использования «конвейера», я едва «справлялся» с двумя аспирантами, то при его использовании мне удается успешно работать одновременно с десятками студентов и аспирантов, причем они могут «жить», так как наши встречи происходят далеко не каждый день.

40. В результате весьма длительного общения в ходе выполнения указанных выше работ мне удается достаточно хорошо узнавать молодых людей. После этого становится ясно, кто хочет и может заниматься научной работой, кто ориентирован только на работу в бизнесе и промышленности, кто является разгильдяем, а с кем мы не сошлись характерами!

41. Эта информация становится очень важной, когда представители фирм интересуются кадрами. Кстати, образование всемирно известной компании Google во многом связано с тем, что Сергея Брина и Ларри Пейджа инвесторам Кремниевой долины рекомендовали профессора Стэнфордского университета: Р. Мотвани – один из авторов книги «Введение в теорию автоматов (!), языков и вычислений», и Т. Виноград – известный специалист по искусственному интеллекту.

42. Нам, также, как и этим профессорам, удалось помочь в формировании коллектива разработчиков ПО в компании «Скартел» (торговая марка Yota), которые в кратчайшие сроки разработали «математику» для первого в мире коммуникатора четвертого поколения HTC MAX 4G. Этот коммуникатор был продемонстрирован нашими выпускниками Президенту РФ на Инновационном конвенте, проходившем в конце 2008 г. в Москве.

43. Обучение не является единственным результатом образования. В Законе РФ «Об образовании» 1996 г. сказано, что «образование – это целенаправленный процесс воспитания и обучения». При этом несмотря на то, что после этого было принято более 25 поправок в этот закон, порядок выделенных слов не изменился.

44. По этому поводу Генеральный конструктор подводных ракетоносцев академик С.Н. Ковалев писал: «Подрастающее поколение мы еще чему-то учим, но, к большому сожалению, никак не воспитываем». По словам академика В.А. Садовничего, «нынешнюю молодежь нужно заразить лучшими идеалами по сравнению с теми, что распространены в обществе».

46. Проводимый мной эксперимент подтверждает слова профессора Владимира Ивановича Тимофеева (https://www.computer-museum.ru/articles/histsoft/3405/), у которого я учился в ЛЭТИ, о том, что «учить можно только при личном общении, а не на лекциях». В подтверждение этого он приводил свой пример и утверждал, что основное влияние на его жизнь оказал один из создателей плана ГОЭЛРО академик Г.О. Графтио во время бесед, проходивших между ними, пока они шли 40 минут от ЛЭТИ до дома академика.

47. При длительном общении со студентами появляется возможность их воспитания (в том числе, и на личном примере). При этом делается попытка сформировать в молодых людях некоторые человеческие качества, важные для работы в коллективе (например, обязательность).

48. На воспитании и обучении работа в университете не должна заканчиваться, так как «отделить учебное от научного нельзя, но научное без учебного все-таки светит и греет, а учебное без научного только блестит» (хирург Н.И. Пирогов).

49. При этом во время учебы в университете кто-то должен объяснить молодым людям, что: «Существует лишь один вид наслаждения, который превосходит то, что человеку могут дать другие радости жизни: наслаждение от сознания, что научная идея хорошо реализована» (академик В.А. Глухих) и что «Очарование, сопровождающее науку, может победить свойственное людям отвращение к напряжению ума» (геометр Г. Монж);

50. Изложенный подход в научном плане позволил: 1. Сформулировать новую парадигму программирования, названную «автоматное программирование». 2. Опубликовать первую в мире монографию по этой тематике. 3. Издать первый в мире тематический сборник статей студентов и аспирантов по этой тематике 28 статей в «Научно-технический вестнике СПбГУ ИТМО» № 53 за 2008 г. (https://ntv.ifmo.ru/file/journal/61.pdf). 4. Провести семинар «Автоматное программирование» в рамках международной конференции «International Computer Symposium in Russia (CSR 2006)» (ПОМИ им. В.А. Стеклова, 2006 г.), в котором было заслушано 20 докладов (https://logic.pdmi.ras.ru/~csr2006/workshops.html). 5. Сделать в 2008 г. семь докладов по автоматному программированию на второй молодежной Всероссийской конференции по программной инженерии, программе которой было всего 23 доклада. 6. Провести в 2009 г. секцию по автоматному программированию (более 20 докладов) на конференции молодых ученых и специалистов СПбГУ ИТМО. 7. Выиграть в 2005-2008 гг. три государственных контракта по приоритетным направлениям науки и техники страны. 8. Выиграть несколько грантов РФФИ и Минобрнауки РФ (в том числе и на 2009 г.). 9. Защитить шесть кандидатских диссертаций, что не характерно для программистов, у которых нет материальной заинтересованности в этом нелегком процессе.

51. Инновации в области автоматного программирования состоят, например, в разработке инструментальных средств для его поддержки; разработке виртуальных лабораторий для обучения этой парадигме программирования (https://is.ifmo.ru/download/2008-02-25_virtual_laboratory.pdf); внедрении этой парадигмы программирования в практику создания ПО для ответственных объектов управления.

52. В настоящее время область исследования по автоматному программированию расширяется. При этом в нашем коллективе они проводятся в таких областях как, например, искусственный интеллект, мобильные роботы, документооборот, бизнес-процессы, а самое главное – по верификации программ, что крайне важно при создании ПО для ответственных объектов (самолеты, вертолеты, ядерные реакторы и т. д.).

53. В результате проводимого эксперимента в настоящее время удалось сформировать иерархическую научно-образовательную структуру из аспирантов, прошедших подготовку на изложенного подхода. Они сами формулируют темы по совершенствованию автоматного программирования и руководят студентами кафедры «Компьютерные технологии».

54. Кроме указанных выше целей, мы ставим и еще одну: развить у студентов нашей кафедры качества лидеров. Для этого в следующем учебном году предполагается провести эксперимент по массовому обучению проектированию программ на основе автоматного подхода. При этом студенты пятого и шестого курсов, которые обучались на «образовательном конвейере», сами должны будут организовать такой «конвейер» с пропускной способностью в несколько сотен студентов других специальностей факультета «Информационные технологии и программирование» СПбГУ ИТМО.

55. Занятия по автоматному проектированию программ начинают проводиться и в других университетах, например, в СПбГЭТУ (ЛЭТИ).

56. В настоящее время нами также ведется работа по внедрению описанного подхода в школы. При этом мы предполагаем, что если язык Паскаль был предложен для обучения программированию, то автоматное программирование было разработано для обучения проектированию программ. С помощью преподавателя программирования Ильи Дединского во второй половине 2008 года начаты работы в этом направлении в лицее «Вторая школа» (Москва), и уже получены удивительные результаты. Так, например, восьмиклассник Леонид Столяров создал еще одно инструментальное средство для поддержки автоматного программирования и использует его при решении прикладных задач. Уровень выполненной работы позволил ему участвовать не только в Пятом Балтийском научно-инженерном конкурсе (BalticSEF), но и во «взрослых» научных конференциях. В новом учебном году мы предполагаем также внедрить указанный подход, по крайней мере, в одной из школ Санкт-Петербурга.

57. Предложенная организация учебного процесса позволяет также выявить лучших, которых целесообразно пригласить на постоянную работу на кафедре. При этом они должны хотеть работать в университете и понимать, какие преимущества дает работа в университете, если она хорошо организована. Именно лучшие молодые люди требуются для того, чтобы следующие поколения студентов хотели и могли эффективно учиться на кафедре. Для этого указанные молодые люди должны быть уникальными, по крайней мере, в двух из трех видов деятельности: преподавание в регулярном учебном процессе; преподавание олимпиадного программирования для школьников и студентов и проведение олимпиад различных уровней, включая создание задач, тестов, системы тестирования и т. д.; проведение научных исследований в области технологий программирования и смежных с ней областях.

58. Вот что ответил Олег Табаков на вопрос, как ему удается формировать такой сильный состав артистов в своих театрах: «Когда моя бабушка солила помидоры на продажу, то она лучшие оставляла себе. Так поступаю и я с выпускниками Школы студии МХАТ».

59. Я придерживаюсь того же мнения, что и Олег Табаков и его бабушка, и поэтому предложил инициативу для ИТ-отрасли России «Сохраним в университетах лучших!» При этом «содержание» лучших в университете должны (пока «не проснется» государство) брать на себя фирмы из бизнеса, одни из желания получить квалифицированных выпускников, воспитанных «лучшими», а другие из благотворительных целей.

60. При сохранении в университете лучших появляется надежда, что когда-нибудь и про наши университеты будут писать аналогичное: «МТИ буквально кишит учеными. Стоит сделать шаг, и тут же столкнешься с Нобелевским лауреатом, или с гением, который собирается стать лауреатом, или, на худой конец, профессором, окруженным необыкновенно умными и продвинутыми студентами. Это создает совершенно особую атмосферу. МТИ университет, где дисциплина и тяжелый труд обязательны» (К. Фиорина).

61. У нас в университете, слава Богу, тоже есть, то, что в МТИ называют «на худой конец» :-): профессор, окруженный необыкновенно умными и продвинутыми студентами. Однако Нобелевские лауреаты из них почему-то не получаются, и они даже к этому не стремятся, как и не стремятся к премии Тьюринга и т. п. Большинство из них после окончания университета куда-то исчезает их не слышно и не видно, видимо, они улетают в космос! Хотя на самом деле всё не так плохо, так как на командных студенческих чемпионатах мира по программированию команды нашего университета неоднократно побеждали команды МТИ, да и Стэнфорда тоже, в котором «также много умных людей».

62. Итак, в результате изложенной организации учебного процесса удается решать следующие важнейшие задачи, которые стоят перед исследовательским университетом: воспитание, обучение, научные исследования (генерация знаний), инновации, а также сохранение на постоянной работе в университете уникальных молодых преподавателей и ученых.

63. Изложенное явилось составной частью нашей работы, которая была удостоена премии Правительства РФ в области образования за 2008 г. (https://rg.ru/2009/01/16/premii-obrazovanie-dok.html).

24.03.2009. http://is.ifmo.ru/award/_doklad_uch_sovet.pdf. Доклад на Ученом совете Санкт-Петербургского государственного университета информационных технологий, механики и оптики. Статья Шалыто А.А. Проектный подход при обучении разработке программ // Компьютерные инструменты в образовании. 2009. № 4, с. 30-38. http://ipo.spb.ru/journal/index.php?article/1074/

36 views·1 share