Проектно-ориентированный курс по программной инженерии

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

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

    Основной упор в рамках курса делался на следующем.

  • перед тем, как писать код, нужно как следует и разнообразно подумать. И, кроме того, оформить эти свои мысли в виде документа (и даже, может быть, в виде нескольких документов).
  • Также было интересно предложить ребятам самоорганизоваться и наладить командную работу. Стимулом для этого является общие оценки группы по разным составляющим работы – как студенты всей группой наработали, так и получают.
  • Немаловажной деталью курса являются временные ограничения, то есть жёстких дат, распределённых по отрезку времени, в рамках которого проходит курс – если намеченные рабочие продукты не поступают к назначенному сроку, то вся группа получала минус один бал. Для русских студентов это оказалось очень трудным требованием, так как привычка делать все в последний момент очень сильна у наших студентов, и мне кажется, она даже взращивается нашей системой образования: достаточно посидеть несколько ночей – и ты сдал экзамен. Я заметил, что многие студенты начинают ошибочно полагать, что это и есть эффективный стиль работы. В индустрии и бизнесе такая привычка приносит много неприятностей работодателям, коллегам, да и самим ребятам.
  • Наконец, все сайты, разработанные студентами, должны были быть размещены (самими студентами) на сервере кафедры системного программирования, и это также требует специальных усилий от студентов. Кроме того, это является одним из главных критериев завершённости всей работы по курсу – вот он результат, смотрите!
  • Подобные курсы целесообразно «пристёгивать» к различным инициативам, программам и т.д. для того, чтобы получить источник задач и дополнительную экспертизу. Темы курса в 2012 и 2013 годах были взяты из русско-финского исследовательского проекта Improving Social Services , в котором я принимал деятельное участие.

    2013 год

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

    Ниже представлены получившиеся сайты.

  • Планировщик туристических маршрутов в Санкт-Петербурге
  • Медицинские учреждения в Москве
  • Поездка в пассажирском транспорте СПб
  • Парковки Москвы
  • А вот презентации студенческих рабочих групп, рассказывающие о проектах. Эти презентации были выполнены, к сожалению, не в самом конце – самый конец заняли сами сайты, – а после завершения постановки задачи, написания документов и разработки первого прототипа. Постановка задачи в этот раз заняла неожиданно много времени, поскольку первичные задания, взятые со студенческой школы проекта Improving Social Services, на поверку оказались трудно реализуемыми из-за проблем с доступом к открытым данным. В связи с этим задачи пришлось переформулировать, а от некоторых и вовсе отказаться, заменив их на те, где открытые данные оказались доступными. При этом студенты были активной стороной – они предлагали альтернативы и детально прорабатывали разные варианты. В процессе этой работы им приходилось продираться через многочисленные трудности, в том числе осознать главные требование данного курса – открытые данные должны быть, задача должна быть правдоподобной и иметь перспективу практического использования, представить соображения о коммерциализации разработки надо. При этом я выступал в роли заказчика и старался действительно быть заказчиком, адресуя возникающие трудности для разрешения самим ребятам. Вот этот путь от исходной постановки задачи до реального технического задания студентам и было предложено воссоздать и осмыслить, а результат представить в виде презентации (ретроспектива произошедшего – не простая задача, особенно, если ситуация была запутанная). Многие рабочие группы далеко не с перового раза вспоминали о тех реальных проблемах, с которыми они сталкивались и которые разрешали, кое-кто так и смог вспомнить.... Мне кажется, что проделанная ребятами работа была максимально приближена к тому, как оно бывает в жизни. Презентации, представленные ниже, дают представление о том, в каком объёме студентам удалось вспомнить и осознать работу с постановкой задачи (в случае удачной ретроспективы из презентаций можно получить также представление о самой этой работе).

  • Планировщик туристических маршрутов в Санкт-Петербурге
  • Медицинские учреждения в Москве
  • Поездка в пассажирском транспорте СПб
  • Парковки Москвы
  • 2012 год

    Я предложил ребятам, чтобы сайт был не просто переведённым в html документов про предметную область. Каждый сайт должен был обладать какой-то интересной функциональностью. Кроме того, предлагалось направить творческую мысль на интеграцию с имеющимися ресурсами – картами, сервисами и пр. И чтобы это была не просто гиперссылка на чужой сайт. Ниже представлены получившиеся сайты.

  • Поступление в Финский университет
  • Рыбалка в Финляндии рыбалка
  • В Финляндию на машине
  • Пересечение границы с Финляндией
  • Защита кандидатской диссертации на мат.-мех. ф-те СПбГУ
  • Поступление в СПбГУ