Ссылки для упрощенного доступа

Международная олимпиада школьных проектов по информатике 2003


Александр Костинский: В этом году в Кливленде, штат Огайо (США) команда московских школьников из лицея информационных технологий 1533 заняла второе место на международной научно-технической олимпиаде проектов ISEF в номинации программирование. Ребята перед этим заняли первое место на всероссийском конкурсе. Конкурсы ISEF спонсируются компанией Intel.

Сегодня в московской студии радио "Свобода" Андрей Татаринов, Всеволод Устинов, Василий Федосеев и преподаватель Илья Дединский.

Чем отличаются конкурсы проектов от привычных олимпиад по предметам?

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

Александр Костинский: Это конкурс компании Intel?

Андрей Татаринов: Конкурс спонсируется компанией Intel, а проводится МИФИ (Московским инженерно-физическим институтом). Это не только всероссийский конкурс. Были работы из Украины. В этом году была применена новая система, когда рефераты отсылали в жюри через Интернет. И после этого конкурсная комиссия отбирала работы для финальной части в Москве, где в большом зале собрали работы всех участников. Их разделили на пять категорий. Каждый проект был представлен стендом. Для демонстрации работ по информатике были установлены компьютеры, и ученики, например, программисты или математики рассказывали жюри о своих проектах.

Александр Костинский: У всех участников были стенды, члены жюри ходили по стендам и вы рассказывали о своей работе.

Андрей Татаринов: Мы установили стенд, где была краткая информация о нашем проекте. Был текстовый комментарий, картинки, которые поясняют наш рассказ, на компьютере мы включили демонстрацию программы и доклад построили таким образом, чтобы одновременно использовать и стенд и компьютер. Нас слушали члены основного жюри (преподаватели МИФИ и сотрудники компании Intel), хотя главную роль играли ученые МИФИ. Они присуждали призовые места и те, кто их занял, зачислялись в МИФИ без экзаменов. Члены жюри также отбирали тех, кто поедет в Америку на международный конкурс.

Александр Костинский: Вы специально готовились именно к этому конкурсу?

Илья Дединский: Мы не рассчитывали, что эта работа будет представлена на каком-то конкурсе, и не ставили себе задачу победить. Просто в определенный момент мы стали это делать ради интереса, ради красоты задачи (формулировка задачи принадлежит Андрею Татаринову, он идеолог того мира, который рассматривается в этой системе). Просто так получилось, что уровень работы оказался высок.

Андрей Татаринов: Мы на уроках программирования и дома, как продолжение учебы, делали наш проект. Эта была некая попытка получить знания по программированию, суммировать их. То есть, собрать все, что мы знали до этого, все, чему нас научил Илья Рудольфович и все это объединить в одном проекте. При этом мы специально так сформулировали цель проекта, что при ее реализации необходимо использовать большинство средств, которые изучает программист.

Всеволод Устинов: Как и большинство любительских проектов, работа начиналась с попытки создания игры, потому что каждый юный программист, который решает что-нибудь сделать, начинает создавать игру. Но постепенно это наскучивает, потому что становится понятно, что профессионально сделать не получится и постепенно такие работы либо затухают, либо дорастают до нового уровня, например, до научных работ, как например наша.

Александр Костинский: Расскажите о содержании проекта.

Андрей Татаринов: У меня появилась идея написать ролевую игру, где я создаю какой-то мир, помещаю туда персонажей, делаю главного героя, которым бы управлял игрок. Этот игрок мог бы перемещаться по этому миру, общаться с персонажами.

Александр Костинский: По постановке задачи это типичная игра от первого лица.

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

Александр Костинский: В вашем мире трехмерное пространство, и вы там могли задавать законы взаимодействия тел. В играх этот модуль называют движком - двигателем. Ваш двигатель позволял менять, например, характер соударений, притяжения тел?

Илья Дединский: На самом деле, все что угодно. Поскольку частью движка является специальный язык программирования, и даже не один, который был сделан специально для этого проекта. В программе три основных модуля. Один графический, отображающий, второй - физический, отвечающий за взаимодействие тел и третий - сценарный, которым задается программа поведения, взаимодействия объектов. Именно третий модуль дает программе универсальность. Как ни странно, на третью составляющую почему-то в игровых проектах и вообще в подобных проектах не обращают внимания. Очень часто логика поведения системы встраивается в программу намертво и получается "что записано, то записано", что запрограммировано, то запрограммировано. Отсутствует открытый уровень взаимодействия с пользователем, который может настроить законы системы под себя. Это касается всего чего угодно, вплоть до пользовательских программ. Наличие языка управления системой выводит ее на новый уровень, и это позволило сам проект вывести на новый уровень. Он изменился, когда мы стали решать более общую задачу. Проект удалось вывести за рамки игры, в более общий класс, создав некоторый движок и систему взаимодействия. Дело в том, что написать полноценный игровой движок крайне сложно, что должны понимать все начинающие программисты. Эта благородная задача, но, к сожалению, невыполнимая. Потому что любой движок пишется 2-3 года командой из 5-7 квалифицированных программистов, имеющих большой опыт в этой области. Никакой, даже гениальный, программист-одиночка технически не способен конкурировать с такими командами и по временным, и по интеллектуальным причинам. Более того, таких успешных команд мало и в мире удачных движков немного. То есть, то, что сможет сделать один человек - неконкурентоспособно, если только он не нашел великолепную идею, которая стреляет прямо в цель, и когда, при любой графике, любой логике, вдруг оказывается великая играбельность, как "Тетрис" Алексея Пажитнова. Но это должен быть не столько программистский талант, сколько психологический. Дело в том, что математики и физики знают, что более общую задачу часто решить проще, чем частную. Это хорошо написано у Дьердя Пойа в книге "Как решать задачу". И когда мы перенесли акцент с игровой программы в сторону модельной среды, то выяснилось, что и игровую задачу можно решить, по крайней мере, на каком-то уровне. А дальше, если вы хотите писать игру на этой среде - пишите, но играбельность будет зависеть не от нас, разработчиков инструментов, а от тех, кто делает сценарий. То есть, на определенном уровне наш проект был созданием игры, потом уровень программирования стал таким, что стало возможным говорить о более серьезных вещах, и мы в определенный момент решили, что будем писать более общую систему. У нас было рабочее совещание, когда мы решили, что будем писать среду моделирования, а игра, если и вытечет как следствие из этой среды, то пусть, а не вытечет - и фиг с ней. И задача сразу приобрела реальные размеры, реальные возможности и реальный интерес, потому что игрушки пишут все, а хороших мало. Поэтому каждый, кто пишет игру, должен в определенный момент задуматься и от игры перейти к чему-то более серьезному, как правило это моделирование, и вот тогда начинается настоящая работа.

Андрей Татаринов: Это какой-то этап взросления. Каждый начинающий программист хочет написать игру, но когда он взрослеет, то начинает понимать, что это слишком частная задача - ее реализовывали многие и многие еще будут реализовывать, а сделать что-нибудь более общее, это следующий этап для него, который может вывести на новый уровень программирования или позволит использовать новые навыки.

Александр Костинский: Ваша заявка звучит очень сильно: "Мы сделали такую среду, в которой может быть все".

Василий Федосеев: Это обуславливается архитектурой программы, так как тут изначально было предусмотрено встраивание в систему практически любых компонентов, которые могут отвечать за многие задачи, которые мы просто не могли предусмотреть на начальном этапе работы. Это как рабочий стол ученого. Он может на этот рабочий стол положить свои инструменты. Мы предоставляем сам стол, на который их можно положить и базовый набор инструментов.

Александр Костинский: Илья, давайте сравним. Вы - преподаватель, который учит ребят программированию. Как вы могли бы оценить классические олимпиады и олимпиады, которые проводятся по проектному принципу, сейчас это называется проектная деятельность, только ваша проектная деятельность выразилась в большом, серьезном проекте. Преподаватель --

Илья Дединский:.

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

Александр Костинский: То есть это ближе к реальным задачам.

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

Александр Костинский: Итак, с вашим проектом вы выиграли всероссийскую олимпиаду проектов в разделе программирование и поехали в Америку на мировую олимпиаду. Расскажите, что там происходило, как вы выступили.

Андрей Татаринов: Финальный конкурс проходил в городе Кливленд, штат Огайо (США). Этот конкурс Intel ISEF по методике организации не сильно отличался от "юниора", только он был гораздо жестче в плане того, что судей было больше.

Александр Костинский: Это не только олимпиада по программированию?

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

Александр Костинский: Как и на всероссийском конкурсе, у вас был стенд, был компьютер и также судьи подходили к каждой команде?

Андрей Татаринов: Да, у нас был стенд, был компьютер. Стенд стал больше, мы усовершенствовали демонстрацию. К нам подходило довольно много судей. У нас было расписание, когда каждый судья должен подойти, потому что судей было много, из разных университетов и других научных заведений Америки. Каждый судья оценивал работу со своей стороны. Например, к нам подходил судья, который занимается мультиагентными системами (область нашей разработки), он оценивал идею программы, какие методы мы применяли для построения мультиагентных систем. Если к нам подходил судья, который занимается трехмерной графикой, то он интересовался построением движка.

Александр Костинский: А сколько всего судей к вам подошло?

Андрей Татаринов: Около 25-30 судей.

Всеволод Устинов: Если привести цифры мирового конкурса, то было тысяча триста участников, тысяча работ и порядка тысячи судей.

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

Александр Костинский: И какое вы заняли место?

Всеволод Устинов: Второе место, причем среди всех командных проектов, не только нашей категории, но и остальных.

Андрей Татаринов: Если индивидуальные проекты оценивались по категориям - химики соревновались с химиками, математики с математиками, программисты с программистами, то командные проекты оценивались все вместе.

Александр Костинский: Вы заняли второе место среди всех командных проектов, включая физику, химию. Вообще наша сборная неплохо выступила на этой олимпиаде.

Андрей Татаринов: Считается, что это лучшее выступление за все годы, пока наша сборная участвовала в этом международном конкурсе. У нас одно первое место, даже гран-при - это выше первого места, так как первых мест может быть несколько, а гран-при высшая награда.

Александр Костинский: Как в Каннах "Золотая пальмовая ветвь". Наши победили по химии?

Андрей Татаринов: Да, в области химии Денис Малышев занял первое место, два проекта по математике заняли вторые места и наш проект, также есть третье и четвертое места.

Илья Дединский: Когда идет такое соревнование в виде докладов, в виде стендов, огромную роль играет подача материала и рассказ о своей работе. Я могу сказать, что раз за разом у людей, которые делают проекты, обнаруживается одна и та же ошибка. Сделав, может быть, замечательную работу, они, либо в силу скромности, либо в силу того, что не понимают важности этого дела, очень смазывают или недорабатывают саму подачу материала. И это ужасно обидно, тем более, что выполнена фантастическая, работа, но способ подачи такой, что в ней дай бог кому-то разобраться.

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

Давайте теперь назовем тех преподавателей, кто участвовал в подготовке ребят.

Илья Дединский: Ребята учились в московском лицее информационных технологий №1533. Многие преподаватели этого лицея помогали кто советом, кто делом этому проекту. Огромное им спасибо. Без многих вещей эта работа не могла бы быть выполнена. Был проведен исчерпывающий поиск в Интернете и исчерпывающее исследование предметной области по мультиагентным системам, которое сделал Александр Владимирович Гиглавый, научный директор лицея, и огромное спасибо ему за это. Но я хочу подчеркнуть, что ребята работали настолько самостоятельно, насколько можно. Там нет ни одной моей строчки кода. Я немного этим горжусь, потому что иногда приходится править чужие тексты и вносить что-то свое. Здесь ни одной запятой моей или других преподавателей, ни в промежуточной, ни даже в финальной версии не было, что бывает не всегда. Если на первом этапе приходилось давать массу советов по архитектуре программы и вместе планировать стратегические вещи, которые касаются фундаментальных этапов, о которых мы говорили, то ужасно отрадно, что от этапа к этапу деятельность преподавателей, включая мою, ослабевала и переходила на уровень советов, бесед больше с подтверждением тех идей, которые возникают у самих ребят, чем с предложением идей преподавателей. Слава богу, что в их головах сформировался тот проект, который есть сейчас, а не в головах взрослых, которые сидят вокруг и наперебой советуют, что лучше сделать, или формулируют ребятам задачу, чтобы они дальше ее решали, или говорят, "вот смотри как у меня здесь сделано, давай ты сделаешь также", или вообще берут готовые куски и их компонуют. Здесь максимальный результат при максимальном проценте самостоятельности и я считаю, что это в программировании ключевой момент. Мы в начале не ставили себе целью участвовать в каких-то конкурсах. Просто мы начали работу из-за того, что мы хотели это делать. Я считаю, что, может быть, именно поэтому что-то получилось. Если в самом начале ставить себе цель попасть на конкурс и победить, то ничего может и не получиться - жизнь так строена. Просто надо работать ради интереса, и тогда может получиться хороший результат.

Александр Костинский: В передаче участвовали серебряные призеры международной олимпиады а номинации программирование. Андрей Татаринов, Всеволод Устинов, Василий Федосеев и преподаватель Илья Дединский.

Все ссылки в тексте программ ведут на страницы лиц и организаций, не связанных с радио "Свобода"; редакция не несет ответственности за содержание этих страниц.

XS
SM
MD
LG