Три кита подготовки программистов В 90-е годы стало очевидным, что в стране отсутствует система, позволяющая в одном высшем учебном заведении готовить хотя бы несколько десятков высококвалифицированных специалистов по производству программного обеспечения, способных через два-три года после окончания вуза занять ведущие позиции в компаниях–разработчиках программных систем. В 1991 году в Ленинградском институте точной механики и оптики (ЛИТМО, ныне СПбГУ ИТМО) была открыта кафедра «Компьютерные технологии», призванная решить эту задачу. Выпускники кафедры должны быть не только программистами и специалистами в области прикладной математики, физики или информатики, но и широко образованными людьми. Чем выше уровень академической подготовки специалиста, тем лучше он адаптируется к переменам, происходящим в ИТ.

Отбор

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

Для решения данных задач было проведено множество различных мероприятий со школьниками: Всероссийская олимпиада школьников по информатике; Всероссийская командная олимпиада школьников по информатике [1]; учебно-тренировочные сборы школьников, одаренных в области информатики и программирования, с целью формирования участников команд для соревнований различных уровней, включая международные; летние и зимние компьютерные школы; Internet-олимпиады школьников по информатике. Наряду с этим была создана Российская Internet-школа информатики и программирования [2]. Кроме того, установлен контакт практически со всеми преподавателями точных наук из сильных в этой области школ Санкт-Петербурга, а для желающих поступать в СПбГУ ИТМО созданы подготовительные курсы, на которых в течение десяти месяцев проводятся занятия по теории алгоритмов, программированию, математике и физике.

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

Соревновательный подход

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

На протяжении пяти лет студенческая соревновательная деятельность развивалась в рамках командного студенческого чемпионата мира, в ходе которого проводятся четвертьфинальные, полуфинальные и финальные соревнования. В них в настоящее время ежегодно участвуют около 6 тыс. команд из более чем 1700 университетов.

В 1995 году команда ИТМО, первая из российских команд, вышла в полуфинал чемпионата мира по программированию (Association for Computing Machinery International Collegiate Programming Contest, ACM ICPC), в котором принимают участие представители более чем 80 стран мира. Во многом благодаря успехам российских команд начиная с 1997 года ACM специально выделила Северо-Восточный Европейский регион, охватывающий почти все страны бывшего СССР. В рамках региона ежегодно организуются четвертьфинальные и полуфинальные соревнования, причем последние проводятся c использованием Федеральной университетской компьютерной сети RunNET в режиме реального времени. В 2008 году в четвертьфинальных соревнованиях региона участвовало более 650 команд, а в полуфинале – более 180. Неплохие результаты команд ИТМО на чемпионатах мира за последние десять лет – два первых места (2004 и 2008 гг.), пять третьих (1999, 2001, 2003, 2005 и 2007 гг.) и одно четвертое (2000 г.) – говорят о том, что принятая система подготовки оказалась удачной [3].

Проектный подход

При работе с одаренными детьми было принято решение на первых трех курсах основное внимание уделять приобретению ими фундаментальных знаний – они изучают математику и физику в объемах классического университета.

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

Работа над проектами начинается на первом курсе при выполнении курсовой работы по дисциплине «Дискретная математика», в которой каждый студент разрабатывает проект визуализатора одного из алгоритмов дискретной математики. Обучающийся должен продемонстрировать знания в области программирования, а также реализовать законченную программу – визуализатор, который наглядно показывает, как выполняется алгоритм. Визуализатор должен формировать не только графические образы, но и текстовые комментарии. Это, в частности, позволяет приобрести навыки в области создания пользовательских интерфейсов.

С 1998 года на кафедре «Компьютерные технологии» ИТМО на третьем курсе читается курс «Автоматное программирование» [4, 5]. В течение четырех лет он преподавался в традиционной форме: лекции, курсовые работы и экзамены. При этом жизненный цикл курсовых работ также был традиционным: сдача бумажной и электронной версий работы, хранение на протяжении некоторого времени их в шкафу в надежде, что из «этого» удастся что-либо сделать, и, наконец, забвение работы ввиду невозможности доведения ее до «кондиции» кем-либо, кроме автора. Для «серийного» написания большого числа достаточно качественных курсовых работ на основе автоматного программирования было принято решение провести педагогический эксперимент, который длится уже шестой год [6]. Его суть состоит в том, что основное обучение происходит не на лекциях, которые при излагаемом подходе носят установочный характер, а при личном контакте в ходе выполнения курсовых проектов.

Для получения качественных проектов было решено работу над ними проводить со студентами по бригадной схеме. Студенты разбиваются на бригады из одного-двух человек (при большем числе кто-то из них не работает), которым предлагается тема работы. Каждая бргада записывается в очередь к преподавателю для обсуждения хода выполнения работы, причем каждая встреча продолжается около трех часов и предусматривает обсуждение не только разрабатываемой программы, но и проектной документации, создаваемой в ходе выполнения работы. После завершения встречи бригада вновь записывается в очередь, на следующую встречу через месяц. Критерий выполнения проекта прост – работа должна быть сделана так, чтобы за нее, по крайней мере, не было стыдно, когда ее результаты будут опубликованы в Internet с реальными фамилиями авторов (почти 30 выполненных работ опубликованы на дисках-приложениях к журналу «Мир ПК».). Сделать работу на таком уровне обычно меньше чем за три-четыре встречи с преподавателем не удается: на каждую работу в среднем преподаватель тратит 12–15 часов, а каждый студент – не менее ста.

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

Изложенный подход во многом совпадает с cистемой ИТ-образования, принятой в Массачусетском технологическом институте: в учебном процессе этого вуза есть лекции, но они служат лишь в качестве пояснения к постановке задачи и концепции возможных ее решений. Для выполнения работы студенты собираются в неформальные группы, участие в которых и есть основной элемент обучения. Главным инструментом служат так называемые «библии», представляющие собой своего рода базы знаний, коллекции решений аналогичных задач, накопленных за многие годы. Изучая их, студенты одновременно пополняют их своими результатами [7].

Принципиальное отличие предлагаемого в СПбГУ ИТМО подхода состоит в открытости проектов в Сети, что позволяет проводить обучение на этих «проектах» неограниченного круга студентов.

***

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

Участие студентов и аспирантов в научно-исследовательской работе стало началом возвращения вуза к «нормальной» жизни: согласно «принципу Гумбольдта», настоящего специалиста университет может вырастить лишь в том случае, если в нем «учебное и научное» неразделимы. Окончательное же возвращение к «нормальной» жизни в СПбГУ ИТМО состоялось после организации движения «Сохраним в университетах лучших!» (www.savethebest.ru), суть которого в том, что несколько коммерческих компаний взяли шефство над выдающимися молодыми специалистами, имеющими склонность к учебной, научной и олимпиадной работе, что позволило им работать только в университете.

В результате использования трех предлагаемых подходов в качестве основы для организации образовательного процесса в СПбГУ ИТМО применительно к подготовке высококвалифицированных специалистов по производству программного обеспечения позволило приблизиться к истинной цели обучения – не столько давать знания, сколько повысить обучаемость.

Литература

  1. Ежегодные сборники «Всероссийская командная олимпиада школьников по программированию» / СПбГУ ИТМО; [под ред. В. Н. Васильева и В. Г. Парфенова]. Санкт-Петербург: СПбГУ ИТМО, 2000–2008.
  2. Казаков М. А. Реализация концепции многоуровневой системы дистанционного обучения на базе Интернет-школы программирования // Вестник конференции молодых ученых СПбГУ ИТМО. Сборник научных трудов. 2005. – С. 176–183.
  3. Ежегодные сборники «Командный чемпионат мира ACM. Северо-Восточный Европейский регион» / СПбГУ ИТМО; [под ред. В. Н. Васильева и В. Г. Парфенова]. СПбГУ ИТМО. 1996–2006.
  4. Шалыто А. А. Автоматное программирование // Известия Уральского государственного университета. Компьютерные науки и информационные технологии. Вып. 1. – 2006. –
    № 43. – С.181–190.
  5. Поликарпова Н. И., Шалыто А. А. Автоматное программирование. – СПб.: Питер, 2009.
  6. Шалыто А. А. Триединая задача одного педагогического эксперимента в области ИТ-образования // Открытое образование. – 2006. – № 1. – С. 82–85.
  7. Робертс Пол. Дом, который построил Гери // Computerworld Россия. – 2004. – № 22. – С. 38–39.

Владимир Васильев (vasilev@mail.ifmo.ru) – ректор, Матвей Казаков (mkazakov@yandex.ru) – ассистент, Георгий Корнеев (kgeorgiy@rain.ifmo.ru) – доцент,
Владимир Парфенов (
parfenov@mail.ifmo.ru) – декан, Анатолий Шалыто (shalyto@mail.ifmo.ru) – заведующий кафедрой, СПбГУ ИТМО (Санкт-Петербург).


О преподавании программной инженерии

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