МЕТОДИКА
проведения Научно-исследовательского семинара
«Компонентно-ориентированное программирование»
для студентов 1-го курса бакалавриата
отделения Программной инженерии
Введение
Программа развития Государственного университета - Высшей школы экономики, в отношении которого установлена категория "национальный исследовательский университет", утверждена приказом Минобрнауки России от 26 ноября 2009 года № 677. В рамках Программы развития предусматривается вовлечение студентов всех факультетов и отделений университета в научно-исследовательскую деятельность, начиная с первых дней обучения. Такой подход начал реализовываться с начала 2010-2011 учебного года на отделении программной инженерии и нашел отражение в учебной программе первого курса бакалавриата.
Научно-исследовательские семинары для 1-го курса студентов бакалавриата проводились впервые в 2010-2011 учебном году. Данная методика описывает подход к проведению научно-исследовательского семинара со студентами 1-го курса бакалавриата на отделении Программной инженерии факультета Бизнес-информатики по одному из трех тематических направлений, предлагавшихся в 2010-2011 учебном году студентам 1-го курса бакалавриата отделения Программной инженерии, начиная с первых дней обучения. Студентам были предложены три научно-исследовательских семинара, тематика которых указана ниже:
верификация моделей программ;
ресурсно-эффективные комбинированные алгоритмы;
компонентно-ориентированное программирование.
Выбор этих направлений (тем) для семинаров продиктован следующими соображениями:
тематика научного семинара первого курса не должна дублировать и/или опережать изучение предметов и тем, преподаваемых в рамках учебной программы;
тематика семинаров должна способствовать более глубокому пониманию изучаемых по программе предметов, отражая современные подходы к использованию научных результатов в данной области;
тематика семинаров должна стимулировать развитие интереса к самостоятельным исследованиям и разработкам студентов;
тематика должна соответствовать научным интересам руководителей семинаров, способных заинтересовать участников семинаров и привлечь их к исследованиям на современном уровне;
спектр предлагаемых направлений должен быть достаточно широк для возможностей адаптации к различным уровням подготовки участников, еще не прошедших фундаментального курса подготовки;
спектр предлагаемых направлений должен давать студентам возможность выбора направлений исследований с учетом их пристрастий и интересов в рамках общего направления – программной инжененрии (Computer Science vs. Software Engineering), которое, как следует из названия, является разновидностью инженерной деятельности, предусматривающей создание, в конечном счете, работающих программных продуктов.
Предполагалось, что участие каждого студента в одном из семинаров является обязательным. В целях ориентации студентов на начальном этапе приветствовалось посещение ими более одного семинара с тем, чтобы позволить им сделать осознанный выбор направления работы. С этой же целью первый семинар содержал краткие презентации направлений исследований по всем предложенным темам.
Последующая практика показала, что многим студентам 1-го курса бакалавриата сложно сделать самостоятельный выбор направления исследований – либо по причине резкой смены обстановки в целом по сравнению со школьными навыками (для менее подготовленной к исследовательской деятельности части слушателей), либо по причине наличия интереса к более чем одной теме из числа предложенных (для более продвинутых слушателей). Тем не менее, один из семинаров должен был быть выбран каждым студентом в качестве основного, участие в котором обязательно в соответствии с учебным планом. Решение было найдено путем сочетания участия студентов в научно-исследовательских семинарах с их деятельностью по курсовым работам: обязательным для участия студента был принят научно-исследовательский семинар, тематика которого в большей степени соответствует выбранной (в это же время) и утвержденной теме курсовой работы. Такое разделение студентов по предложенным направениям семинаров не является, однако, препятствием для участия студентов в работе других семинаров, но способствует, как представляется, более качественному выполнению курсовых работ, обязательная защита которых проводится в конце каждого учебного года. Далее в данной Методике рассматриваются вопросы, относящиеся к проведению научно-исследовательского семинара по тематике «Компонентно-ориентированное программирование» в 2010-2011 учебном году.
Основные задачи научно-исследовательского семинара «Компонентно-ориентированное программирование» для студентов бакалавриата отделения программной инженерии
Цель научно-исследовательского семинара – выработать у студентов компетенции и навыки исследовательской работы в направлении избранной специальности. Применительно к программной инженерии – как будущей специальности участников семинара - это означает прежде всего развитие навыков исследовательской работы, связанной с разработкой программ.
Инженерия программного обеспечения (англ. Software Engineering, SE) — приложение систематического, дисциплинного, измеримого подхода к развитию, оперированию и обслуживанию программного обеспечения, а также исследованию этих подходов; то есть, приложение дисциплины инженерии к программному обеспечению. Программная инженерия — это интегрирование принципов математики, информатики и компьютерных наук с инженерными подходами, разработанными для производства осязаемых материальных артефактов – программного обеспечения.
Термин «инженерия программного обеспечения» появился впервые в 1968 году на Конференции НАТО «Инженерия программного обеспечения» и имел целью развитие исследований для преодоления проявившегося в то время «кризиса программного обеспечения», выражавшегося в том, что проблемы создания и эксплуатации программного обеспечения уже в те годы стали заметно превосходить проблемы создания аппаратных средств. С тех пор, эти исследования привели к появлению профессии со своей областью компетенций и совокупностью методологий, связанных с созданием программного обеспечения, которое имеет более высокое качество, более доступно, поддерживаемо, и быстрее строится.
Уже на той же конференции, положившей начало данной профессии, было предложено понятие «програмной инженерии с использованием компонент» (Component-Based Software Engineering, CBSE). Программная инженерия с использованием коспонент исходит из того, что (программные) системы собираются из отдельных существующих (программных) компонент. В соответствии с этой методологией, имеются два независимых процесса разработки: процесс разработки компонент и процесс разработки систем, построенных из компонент. Вся история инженерии показывает, как компонентная методология способствовала индустриальному развитию производства – от производства ружей (где компонентная методология была впервые использована в 1800 г.), до широкого рынка электронных компонент, обеспечивающего развитие всех современных технологий.
В принципе, компонентно-ориентированное программирование соответствует естественному научному подходу к решению сложных проблем путем их декомпозиции и использованию различных уровней абстрации. Изучение и исследование программ и процесса их создания с таких принципиальных позиций весьма полезно для становления специалиста в области программной инженерии, так как это позволяет рассматривать проблемы на разных уровнях детализации, учитывая разные их аспекты и используя разные инструментальные средства их решения, в том числе - в зависимости от уровня подготовки и участников семинара. Такие навыки являются необходимыми для любого исследователя, и находят непосредственное практическое применение в исследованиях проблем и методов разработки программного обеспечения.
Применительно к возможностям целевой аудитории – студентам 1-го курса бакалавриата программной инженерии – методология компонентного программирования позволяет осуществить постепенный подход к рассмотрению современных научно-исследовательских проблем в данной области – как в историческом, так и в практическом аспектах.
Одна из основных целей научно-исследовательского семинара на 1-м курсе бакалавриата – привить осознанный интерес как к самостоятельной, так и к коллективной научно-исследовательской деятельности в области программной инженерии. Такой интерес появляется при достижении видимых исследовательских результатов – работающих программ, которые являются воплощением приложенных усилий.
Наиболее видимые, наглядные («осязаемые») результаты исследований в области разработки программного обеспечения достигаются при начальном ознакомлении с проблематикой на примере исследования проблем компьютерной графики – области, где сама суть проблем связана с визуализацией.
Известно, что у подавляющего большинства студентов, интересующихся программированием и компьютерными науками, начальный стимул к интересу в этой области (как к своей будущей профессии) связан с компьютерными играми (с последующим интересом к самостоятельному их созданию). Современная индустрия компьютерных игр непосредственно связана с применениями методов и средств компонентно-ориентированного программирования к задачам компьютерной графики. Поэтому, с точки зрения развития осознанного интереса к научным исследованиям, начальное знакомство с проблематикой в области программной инженерии полезно связать с рассмотрением доступных для 1-го курса бакалавриата вопросов из области компьютерной графики и изучения принципов компонентного программирования применительно к ней.
Плюсом такого подхода является живой интерес студентов, который вызывают обсуждения соответствующих проблем, методов их решения, а также наглядность и качество результатов исследований. Минусом начальной ориентации на проблемы компьютерной графики является сложность ее проблематики для студентов, еще не имеющих систематической подготовки в области программирования. Этот минус и позволяет сократить использование компонентно-ориентированного программирования, давая возможность дифференцировать слушателей по их возможностям и по уронвням абстракции тех программных средств, которыми они могут пользоваться в своих исследованиях.
Научно-исследовательский семинар в области программной инженерии не может не быть практически направленным: конечным результатом исследований в этой области являются работающие программы. При организации исследований необходимо учитывать средства программирования, которыми могут пользоваться студенты 1-го курса. В соответствии с учебным планом, студенты 1-го курса бакалавриата отделения программной инженерии нчинают обучение программированию с освоения среды программирования .Net, языка программирования C# и средств разработки MS Developer Studio. Задачей научно-исследовательского семинара при этом является углубление знаний и навыков, прививаемых студентам 1-го курса в процессе изучения основной программы по программированию – без ее дублирования и/или опережения. Это достигается постановкой более объемных, законченных по функциональности, задач – в сравнении с учебными примерами, которые используются на семинарских занятиях по основному курсу, - и необходимостью самостоятельных исследований при их решении.
Эти исследования подразумевают изучение дополнительной специальной литературы, приобретение навыков работы с Интернетом, инструментами поиска современных публикаций и программных средств в сети – навыков, необходимых современному исследователю. Особенно ярко это проявляется на примере изучения средств современной компьютерной графики, которые практически не отражены в русско-язычном Интернете и требуют обращения к самым современным публикациям по соответствующим программным технологиям. Привитие и развитие навыков поиска источников для исследований в Интернет и современной научно-технической литературе (прежде всего англоязычной) – важная задача исследовательского семинара 1-го курса.
В конце 1-го курса бакалавриата происходит защита курсовых работ студентов, которые выполняются ими в течение трех последних модулей учебного года (начиная с выбора и утверждения темы во втором модуле). Как указывалось во Введении, близость темы курсовой работы к тематике научно-исследовательского семинара являлась основным критерием при распределении студентов 1-го курса по предложенным им тематикам научно-исследовательских семинаров с начала учебного года. Задачей научно-исследовательского семинара при этом является повышение качества выполняемых курсовых работ. Применительно к рассматриваемому семинару, это означает непременную практическую реализацию результатов исследований в виде функционирующих программ, выполненных в соответствии с темами курсовых работ. При этом студенты демонстрируют не только уровень владения материалом, изученным за год обучения по основной учебной программе, но и результаты свой научно-исследовательской деятельности, выходящие за рамки обязательной учебной программы.
Порядок организации семинара
Научно-исследовательский семинар «Компонентно-ориентированное программирование» проводится кафедрой управления разработкой программного обеспечения отделения программной инженерии факультета бизнес-информатики НИУ-ВШЭ.
В 2010-2011 учебном году научно-исследовательский семинар «Компонентно-ориентированное программирование» проводился с первого по третий модуль со студентами 1-го курса отделения программной инженерии. Четвертый модуль рассматривался как время для доработок курсовых работ, темы которых – как правило – соответствовали вопросам, обсуждавшимся на семинарах в течение первых трех модулей.
На протяжении первых трех модулей научно-исследовательский семинар включен в план аудиторных занятий по утвержденному расписанию и подразумевает также самостоятельную работу студентов. Часы научно-исследовательского семинара учитываются в учебной нагрузке преподавателя – руководителя семинара, проводящего занятия в соответствии с порядком, установленным в НИУ-ВШЭ.
В конце третьего модуля проводился зачет по научно-исследовательскому семинару. Зачет проходил в форме собеседования с каждым участником семинара. На собеседовании определялась степень освоения рассмотренного материала, учитывалось количество выступлений слушателей на семинарских занятиях, а также – степень проработанности (готовности) курсовых работ, для завершения которых выделен четвертый модуль учебного года.
В собеседовании (зачете) участвовали те слушатели, для которых данный семинар является основным (обязательным). Если студент посещал более одного семинара в течение года (такие случаи иимели место), он получал зачет по семинару, являвшемуся для него основным.
Формы работы на семинаре
В течение 2010-2011 учебного года на семинаре «Компонентно-ориентированное программирование» в соответствии с целями семинара использовались следующие формы работы:
профориентационные лекции с демонстрацией наглядных пособий, иллюстрирующих проблематику семинара, включая показ фильма об истории крупных отечественных программных проектов (из имеющихся в Интернет материалов); цель – показать слушателям примеры отечественных достижений, наряду с зарубежными разработками, и наличие у слушателей потенциальных возможностей для поиска своего места в направлении иссдедований по проблематике семинара;
демонстрации современных программных инструментов для компонентной разработки программных систем 3-х мерной компьютерной графики (включая оригинальные разработки руководителя семинара);
доклады студентов – участников семинара по предварительно выбранным и согласованным с руководителем семинара темам;
обсуждение тем и методов реализации программных проектов курсовых работ слушателей семинара;
способы поиска материалов по обсуждемым вопросам в Интернет;
сравнительный анализ компонентных моделей и способов их реализации в среде MS .Net применительно к задачам компьютерной графики;
обзор литературы, рекомендованной для изучения при работе над курсовыми проектами;
обсуждение рассматриваемых программных технологий в историческом аспекте и их применения в современных программных продуктах – с учетом их недостатков и возможных направлений дальнейших исследований для их совершенствования.
План работы по модулям
При планировании работы научно-исследовательского семинара учитывалось, что семинар «Компонентно-ориентированное программирование», который начался впервые в 2010-2011 учебном году со студентами 1-го курса бакалавриата, будет продолжен в следующие годы, и студенты – слушатели семинара будут иметь возможность заниматься исследованиями в этом направлении в течение всего времени обучения – по мере овладения знаниями по основной учебной программе.
В первом модуле первое занятие научно-исследовательского семинара было организовано совместно тремя руководителями семинаров по разным (трем) предложенным направлениям исследований. Оно заключалось в презентациях этих направлений руководителями, позволяло слушателям познакомиться с предлагаемыми направлениями исследований и руководителями семинаров, и дало возможность студентам составить первое впечатление о предложенных им возможностях. Студенты были ознакомлены с правилами участия в научно-исследовательских семинарах отделения програмной инженерии, с расписаниями занятий на семинарах и возможностях выбора основных направлений.
Как показали результаты первого семинара, большинство студентов 1-го курса проявило интерес к вопросам, связанным с компьютерной графикой, что согласуется с предположением о влиянии компьютерных игр на профориентацию в области программной инженерии. Эта тенденция наблюдалась и на других занятиях в первом модуле – до принятия решения об установлении соответствия между выбором основного (обязательного) семинара и темами курсовых работ, которые утверждались в течение первого модуля. После принятия такого решения состав студентов – слушателей семинаров стал более детерминированным (от занятия к занятию), хотя имели место и посещения семинара студентами, для которых семинар не являлся основным.
Второй – профориентационный – семинар был посвящен обсуждению профессиональных целей программной инженерии и сопровождался упомянутой выше демонстрацией 45-минутного фильма о разработке самой большой отечествнной программно-аппаратной системы оборонного назначения (сходной с той, которая послужила в свое время основой создания Интернет за рубежом). Этот подход к профориентационному семинару объясняется участием руководителя семинара в разработке этой системы.
Последующие семинары постепенно вводили слушателей в проблематику компонентно-ориентированного программирования с деманстрациями примеров программных продуктов из области трехмерной компьютерной графики. В частности, несколько занятий было посвящено рассмотрению языка моделирования виртуальной реальности – VRML (стандарт ISO). Этот язык и соответствующие программные инструменты является хорошим примером использования компонентного подхода к программированию трехмерной графики и – что существенно для начинающих ее изучение студентов 1-го курса – позволяет осуществить «быстрое погружение» в технологии, не требуя профессиональных программистских навыков на начальном этапе. Руководитель семинара является одним из разработчиков наиболее известных в мире программных продуктов, связанных с реализацией языка VRML, и имеет публикации по этим вопросам, что позволило, как представляется, сделать их обсуждение достаточно интересным.
Во втором модуле, далее, вопросы компонентного программирования для компьютерной графики обсуждались в свете соответствующих технологий Microsoft, так как – как было указано выше – на 1-м курсе бакалавриата платформа Microsoft .Net является основой изучения программирования в основном учебном курсе. Вместе с тем, для обсуждения на семинарах были выбраны те аспекты, которые не освещаются в основном курсе программирования, но являются более современными программеыми технологиями по сравнению с обязательными, а именно - Silverlight, WPF и их связь с программированием на языке C# (который является основой основного курса программирования на первом году обучения в бакалавриате). Таким образом, эти занятия расширяют профессиональный кругозор относительно основной программы, позволяют студентам по-новому взглянуть на основной учебный курс программирования и дают им новые современные средства для самостоятельной работы.
Указанные технологии Microsoft имеют много общих черт с рассмотренным на занятиях языком VRML (как с принципиальной, идеологической точки зрения, так и с точки зрения применений к задачам компьютерной графики). Поэтому, учитывая параллельное освоение студентами основ программирования на языке C# по основной программе, идеи использования компонент при программировании компьютерной графики постепенно становятся реализуемы студентами самостоятельно.
Для такой самостоятельной работы была подобрана соответствующая учебная литература, обзор которой проводился на семинарах (по современным англоязычным источникам) для ориентации студентов в море разноплановых публикаций по соответствующим темам. Многие самостоятельные работы в этом направлении нашли отражение в подготовленных курсовых работах.
В третьем модуле стало возможным более самостоятельное участие самих студентов в работе семинара, что позволило проводить занятия в форме докладов студентов по выбранным и согласованным темам. В частности, студенты М.Дубов и А.Ахметова сделали доклады, сопровождавшиеся демонстрациями их самостоятельной работы по выбранным в рамках общего направления темам, причем не связанным непосредственно с темами их курсовых работ.
Последние занятия третьего модуля были посвящены выступлениям студентов, на которых они докадывали промежуточные результаты выполнения своих курсовых работ (выбор тем курсовых работ завершился в первом модуле). Студенты имели возможность сравнить свои успехи и продвижения по курсовым работам и сопоставить их друг с другом. Как указывалось выше, последнее занятие являлось собеседованием (зачетом) с выставлением оценок. Ниже приведены примеры тем курсовых работ, выполняемых студентами 1-го курса бакалавриата под научным руководством руководителя данного научно-исследовательскогоь семинара. Защита всех курсовых работ состоится в соответствии в утвержденным порядком и расписанием в конце учебного года.
№ пп
| Фамилия, Имя, Отчество
| Тема курсовой работы
|
| Ахметгареев Тимур Рамилевич
| Программа организации взаимодействия компьютеров по протоколу IEEE 802.15.4 на языке C#
|
| Ахметова Аделя Альфировна
| Компьютерная игра для освоения детьми алфавита
|
| Гундобин Никита Александрович
| Программа поиска объекта на двумерном поле на основе нейронных сетей
|
| Дормидонтов Сергей Игоревич
| Графический 3D редактор с использованием C# в OpenGL
|
| Дубов Михаил Сергеевич
| Программа визуализации операций над кватернионами на платформе Windows Phone 7
|
| Ериков Михаил Михайлович
| Программа моделирования разрушений 3D объектов средствами C# и OpenGL
|
| Захаров Егор Александрович
| Программа отображения VRML - объектов средствами WPF/Silverlight
|
| Косенко Дмитрий Владимирович
| Программа графического ключа для запуска приложений
|
| Лапидус Егор Владимирович
| Программа демонстрации возможности 3D - графики в Windows - mobile 6.5
|
| Мороз Ян Радиславович
| Программа отображения нормалей к поверхностям 3D - куба на основе технологий WPF/Silverlight
|
| Ольков Артем Вадимович
| Программа моделирования физического взаимодействия объектов в 3D с использованием C# в OpenGL
|
| Пахомов Иван Романович
| Программа реализации нейронной сети для распознавания элементов иероглифов
|
| Рогов Павел Владимирович
| Web - приложение: калькулятор с распознаванием символов
|
| Степанов Антон Сергеевич
| Анимация движения 3-D -человека средствами C# WPF
|
| Тихомирова Дарья Евгеньевна
| Анимация вращения трёхмерного объекта средствами C# и WPF
|
| Туманов Роман Игоревич
| Программа 3D - визуализации куба для игры в кости
|
Схема организации семинара (по годам обучения)
Научно-исследовательский семинар для студентов 1-го курса бакалавриата отделения программной инженерии проводился в 2010-2011 году врервые, однако его проведение вызвало интерес у студентов более старших курсов, которые не имели возможности участия в таких семинарах на регулярной основе (хотя ранее имелись отдельные дополнительные к основным занятиям семинары студентов). Имели место посещения некоторых занятий семинара студентами старших курсов (по их инициативе), однако их присутствие не фиксировалось и никак не учитывалось.
Семинар планируется продолжать в следующих учеьбных годах с учетом использования новых знаний, приобретаетмых студентами. В частности, студенты 2-го курса в течение учебного года приобретают знания в области Java-программирования, которые более часто востребованы в научно-исследовательских программных проектах и которые в большей степени предусмотрены для использования в исследовательских целях руководителем данного семинара (в сравнении с технологиями Microsoft, которыми приходится ограничиваться при проведении занятий на 1-м курсе).
В развитие исследований по тематике семинара для студентов 2-го и старших курсов запланирован командный проект, связанный с компонентной реализацией средств трехмерной графики для Java-машин. Проект может стать достаточно серьезным с научной точки зрения и может (при успешной реализации) быть представлен на международном уровне как альтернатива имеющимся в настоящее время средствам трехмерного программирования на Java. Пилотная реализации основных идей проекта имеется, ряд курсовых работ студентов старших курсов под научным руководством руководителя данного семинара показывают, что при наличии заинтересованности студентов в теме исследований успешная реализация такого исследовательского проекта силами участникову семинара вполне осуществима. Кроме того, планируется привлечение к проекту интересующихся данной областью исследований старшекурсников и аспиранта отделения программной инженерии, уже работающего по смежной теме. Таким образом, первокурсники будущего учебного года смогут постепенно, по мере овладения необходимым знаниями, подключаться к реальному серьезному исследованию в соответствующей области. (Аналогом такого «долгоиграющего» исследовательского студенческого проекта может быть проект Ptolemy Калифорнийского университета в Беркли, на котором учатся поколения студентов уже более 10 лет).
Такой командный проект с большой научно-исследовательской составляющей и значительным практическим результатом может служить отличным средством приобретения различных составных частей квалификации исследователя в области программной инженерии.
Заключение По опыту первого учебного года с проведением данного научно-исследовательского семинара можно отметить первые промежуточные итоги (данный документ написан до начала защит курсовых работ, результаты которых могут быть связаны с работой семинара).
На проходившей в апреле 2011 года студенческой научной конференции факультета Бизнес-информатики по секции Программной инженерии были вручены премии за лучшие доклады студентов по темам их курсовых работ (вне зависимости от курса и включая студентов магистратуры). Присуждалась одна первая премия, две вторых и три третьих.
Три студента 1-го курса бакалавриата - участники данного семинара:
Дормидонтов Сергей Игоревич,
Дубов Михаил Сергеевич,
Ахметгареев Тимур Рамилевич,
- получили, соответственно, 1-ю, 2-ю и 3-ю премии. Руководитель семинара – доцент кафедры управления разработкой программного обеспечения отделения программной инженерии факультета бизнес-информатики, к.т.н. Гринкруг Е.М.
«____» _____________2011 г. __________________ (Е.М.Гринкруг)
|