По материалам сайтов Президента России В. В. Путина kremlin.ru, ОРТ rutv.ru и Россия 24 vesti.ru:
В День знаний Владимир Путин посетил образовательный центр «Сириус». Президент встретился с воспитанниками образовательного центра для одарённых детей, созданного по инициативе главы государства на базе олимпийской инфраструктуры в Сочи.
Затем глава государства осмотрел территорию центра и ознакомился с творческими проектами ребят – участников образовательных смен.
Цель работы центра – раннее выявление, развитие и дальнейшая профессиональная подготовка талантливых школьников, проявивших выдающиеся способности в области естественнонаучных дисциплин, искусства и спорта, а также добившихся успеха в техническом творчестве.
Репортаж телеканала ОРТ: Давид Давитадзе с проектом "Трехмерное
моделирование вязкой жидкости" - см. со времени 07:07
|
Репортаж телеканала "Россия 24": Работа L2S Sirius Project - см. со времени 02:57
|
Сайт Образовательного центра "Сириус": http://sochisirius.ru, http://talantiuspeh.ru
Президенту России В. В. Путину были представлены проектные работы по программированию учеников 7, 8 и 10 классов.
Руководитель и преподаватель секции "Программирование" - И. Р. Дединский.
Отчет о работе секции: IlyaDedinsky.pdf
Трехмерное моделирование вязкой жидкости
Разработчик: Давид Давитадзе, 8 класс.
Научные руководители: И. Р. Дединский (МФТИ), Г. З. Арабули.
Целью работы было реалистичное моделирование расхождения волн на поверхности жидкости.
Задачами являлись разработка модели для расчета поведения волн с использованием векторной библиотеки, а также работа над демонстрационной программой.
Для моделирования подобных явлений в физике обычно используется уравнение Навье-Стокса.
Для данной задачи это уравнение было избыточным, поэтому было использовано более простое волновое уравнение, которое связывает ускорение частицы жидкости с ускорением соседних частиц.
В программе оно используется для подсчета высоты точки на поверхности жидкости. Для учета затухания волн используется поправка на вязкость из уравнения Навье-Стокса.
Архитектура программы устроена согласно концепции MVC. В ней есть отдельный модуль, визуализирующий данные. Модель передает визуализатору данные о точках жидкости, их можно представить в виде сетки. Дальше к этой поверхности применяется освещение посредством функций OpenGL. Затем на поверхность натягивается текстура и добавляется прозрачность. После всех этих действий мы видим на экране жидкость, которая на самом деле была нарисована компьютером на основе расчетов программы.
Объем кода составил около 2500 строк на языке С++.
Работа была представлена лично Президенту России В. В. Путину как один из главных результатов научной смены детского образовательного лагеря, и он высоко оценил это достижение: kremlin.ru/events/president/news/50208.
Видеоролик: https://vimeo.com/138076907
Презентация: DavidDavitadze.pdf
Текст краткого сообщения: DavidDavitadze.docx
Материалы по проекту: DavidDavitadze.rar
Фото: kremlin.ru, 1tv.ru, sochisirius.ru. Видео: Образовательный центр "Сириус".
Моделирование идеального газа
Разработчики: Смирнов Олег, Александр Столповский, 7 класс (два проекта).
Научный руководитель: И. Р. Дединский (МФТИ).
Целью работы является разработка модели газа, основанная на системе частиц.
Наиболее важные задачи – это реализация взаимодействия частиц и снятие показаний с датчиков.
В системе молекулы представляют из себя шарики с фиксированной массой и объемом, которые взаимодействуют друг с другом. При их ударе друг о друга или о стенки сосуда происходит абсолютно упругий удар, при котором они изменяют направление движения, но суммарные энергия и импульс системы остаются неизменными.
Программа позволяет снимать некоторые показания с виртуальных датчиков и выводить их на экран. В данной версии высчитываются только температура газа и его давление на перегородку, но относительно гибкая структура программы дает возможность легко изменять комплекс датчиков.
В ходе работы была разработана физически правильная математическая модель поведения молекул идеального газа.
Объем кода составил около 1000 строк на языке С++.
Работа была представлена лично Президенту России В. В. Путину как один из главных результатов научной смены детского образовательного лагеря, и он высоко оценил это достижение: kremlin.ru/events/president/news/50208.
Видеоролик: https://vimeo.com/138076909
Презентация: OlegSmirnov.pdf
Текст краткого сообщения: OlegSmirnov.docx
Материалы по проекту: OlegSmirnov.rar
Фото: kremlin.ru, visualrian.ru, sochisirius.ru. Видео: Образовательный центр "Сириус".
Реализации модели теплопереноса
Разработчик: Владислав Алейник, 8 класс.
Научные руководители: И. Р. Дединский (МФТИ), Г. З. Арабули.
Задача моделирования тепловых явлений достаточно востребована в современном мире и является значимой часть производственного процесса. Зачастую необходимо исследовать процесс теплоотвода с поверхности микропроцессоров или процесс нагревания посадочного аппарата при входе в атмосферу планеты.
Автор поставил своей целью создание реалистично выглядящей модели распространения тепла.
Требованиями к программному продукту являлись:
• Реалистичное поведение тепловых потоков
• Удобность задания начальных условий
• Быстродействие программы
• Реалистичная визуализация
Реалистичное поведение тепла в программе моделируется с помощью уравнения теплопроводности, а точнее, его разностной схемы. Начальные условия, в частности, карта теплопроводностей, задаются изображениями или текстовыми файлами, вследствие чего программа приобретает большую гибкость.
Программа реализована на языке программирования C++ за смену в Сириусе и занимает примерно 2000 строк.
Видеоролик: https://vimeo.com/138076911
Презентация: VladAleinik.pdf
Текст краткого сообщения: VladAleinik.docx
Материалы по проекту: VladAleinik.rar
Видео: Образовательный центр "Сириус".
Апериодические колебания пружинного маятника
Разработчик: Вылегжанин Федор, 8 класс.
Научный руководитель: И. Р. Дединский (МФТИ).
Целью работы было исследование колебаний сложного пружинного маятника при помощи специально разработанной математической модели. для этого было необходимо написать тестовую программу, которая бы проверила модель на корректность, а затем и демонстрационную, позволяющую отслеживать её поведение с помощью графиков.
На тело, свободно подвешенное на пружине, действуют две силы. Сила тяжести, пропорциональная массе, действует строго вниз, а сила гука, направленная так, чтобы противодействовать деформации пружины, пропорциональна удлинению маятника. в итоге ускорение тела высчитывается согласно данной формуле и изменяет скорость тела, а в зависимости от скорости меняется его положение.
Такой маятник можно рассмотреть и как композицию двух более простых систем. Если пружина будет расположена вертикально, это будет пружинный маятник, и груз будет совершать колебания вверх-вниз с данным периодом, зависящим от массы и жёсткости пружины. если же заменить пружину на нерастяжимую нить, то получим математический маятник, колеблющийся с другим периодом, зависящим от ускорения свободного падения и длины маятника. так как отношение этих периодов не всегда рационально, то колебания сложного пружинного маятника в общем случае апериодичны.
При выполнении работы были достигнуты следующие цели: разработана корректная математическая модель сложного пружинного маятника, а также написана демонстрационная программа с возможностью параметризации.
Объем кода составил около 350 строк на языке С++.
Видеоролик: https://vimeo.com/138076908
Презентация: FedorVylegzhanin.pdf
Текст краткого сообщения: FedorVylegzhanin.docx
Материалы по проекту: FedorVylegzhanin.rar
Видео: Образовательный центр "Сириус".
Экспертная система "TxSiri"
Разработчик: Артем Переведенцев, 7 класс.
Научный руководитель: И. Р. Дединский (МФТИ).
Целью проекта являлась написание тестирующей системы, способной обучаться и запоминать информацию.
Программа может использоваться абсолютно во всех сферах жизни: от школьного обучения, до постановки диагноза без посещения врача.
Главная "фишка" проекта это его структурированность.
Почему же у txSiri такая хорошая память?
Да все просто: она все объекты и их свойства хранит в бинарном дереве и записывает его в файл, предварительно его прочитав.
Бинарное дереве - это мозг txSiri. У нее в голове все всегда разложено по полочкам.
Еще одна ее фишка - это непосредственность.
С Siri очень легко общаться.
Благодаря звуковому интерфейсу txSiri буквально сама предлагает поговорить с ней.
Она никогда не обижается и всегда хочет узнать что-то новое.
txSiri будет вам благодарна за каждое новое слово, которому вы ее научили.
И разумеется она очень любит пошутить.
В итоге играть с txSiri - это весело.
Программа была написана для операционной системы Windows на языке C++ в среде CodeBlocks.
До написания программы были самостоятельно реализованы две структуры данных: список и бинарное дерево.
Объем кода составил около 1000 строк на языке С++.
P.S не исключено, что скоро txSiri узнает все и тогда уже люди будут работать на нее, но это только гипотеза :)
Объем кода составил около 1000 строк на языке С++.
Видеоролик: https://vimeo.com/138076906
Презентация: ArtemPerevedencev.pdf
Материалы по проекту: ArtemPerevedencev.rar
Видео: Образовательный центр "Сириус".
Обработка данных физического эксперимента с помощью фиттинга функций методом Монте-Карло
Разработчик: Юровский Владимир, 7 класс.
Научный руководитель: И. Р. Дединский (МФТИ)
Консультанты: Г. З. Арабули, Ю. Н. Дементьев.
Основной целью являлась разработка программы для обсчета данных физического эксперимента с помощью фиттинга функции методом Монте-Карло. В задачи входила разработка и отладка метода на тестовых данных, сгенерированных специально, а также проведение реального эксперимента по анализу траектории полета мяча.
Подходы, реализованные в работе, могут использоваться везде, где нужна обработка больших данных и поиск параметров функций, например, в баллистике, в задачах космического полета, при исследовании движения в вязкой среде и так далее.
Объем кода составил около 1000 строк на языке С++.
Видеоролик: https://vimeo.com/138075970
Презентация: VladimirYurovskiy.pdf
Текст краткого сообщения: VladimirYurovskiy.docx
Материалы по проекту: VladimirYurovskiy.rar
Видео: Образовательный центр "Сириус".
Моделирование оптических явлений в неоднородных средах
Разработчик: Раффаэлле Делла Пиетра, 10 класс.
Научный руководитель: И. Р. Дединский (МФТИ).
Консультант: С. Н. Колякина.
Цель работы состояла в моделировании прохождения светового луча через толщу неравномерно нагретой воды для изучения того, как ведут себя лучи в морях и океанах. Программа рисует миллион частиц с разными свойствами, имитирующих частицы воды, и показывает, как через них проходит световой луч и как он отражается.
Программа реализована на языках C++ и Microsoft DirectX HLSL, занимает около 3500 строк.
Видеоролик: https://vimeo.com/138075969
Видео: Образовательный центр "Сириус".
Из отчета о проведении секции "Программирование" детского образовательного лагеря на базе ОЦ "Сириус"
Руководитель секции и преподаватель: И. Р. Дединский
Пояснительная записка
В течение смены проводилась работа по проведению занятий по программированию с физико-математическим уклоном в соответствии с концепциями об универсальности и профилизации обучения. Основная направленность занятий заключалась не в рассмотрении информатики как простого продолжения математических дисциплин и/или отработке чисто компьютерных программистских или пользовательских навыков, а в обучении универсальным и эффективным методам работы с информацией в различных областях знания и технологии физико-математической направленности. Основной тематикой работ было моделирование различных физических и математических объектов и процессов.
Специфика информатики как синтетической науки, включающей элементы математики, философии, стилистики, психологии и инженерии, состоит именно в том, что преобладающий способ реализации ее собственных знаний — это работа со знаниями более «конкретных» дисциплин (предметных областей).
Сочетание обучения методам, а не фактам, работы на примерах из смежных школьных дисциплин, универсальности большинства изучаемых приемов превращает, таким образом, информатику в дисциплину, максимально интегрирующую предметы школьного курса. Такая концепция приводит к повышению эффективности процесса обучения в целом.
Необходимо подчеркнуть, что в ряде курсов наиболее существенным приобретением ученика становятся не сколько знания, умения и навыки, а метаумения и метанавыки, определяющие правильное формирование подхода к проблеме, способа ее рассмотрения, поиска решения и реализации, а в конечном счете и организацию знания, получаемого ребенком. Это является следствием системного подхода, применяемого как непосредственно в процессе обучения, так и при планировании занятий. В конечном счете, речь идет о выработке у ученика элементов системной методологии мышления. При полном отсутствии этих компонент получается стандартное выучивание и воспроизведение, при полном наличии — в идеале становится ненужным традиционный учебный процесс (ребенок способен получать и организовывать материал самостоятельно). В ходе обучения достигается компромисс между этими формами, он определяется индивидуально для каждого ребенка, в зависимости от его мотиваций, склонностей и работоспособности.
Актуальность и новизна программы
В настоящее время проектная составляющая в школьном обучении программированию сильно уменьшилась за последние 10-15 лет, превратившись в построение графиков в Excel и знанию меню PowerPoint, и, к сожалению, уступив в массовости олимпиадам, подразумевающим небольшой объем каждой задачи и крайне малое время жизни кода.
Работа над проектными задачами, подразумевающими не только логику и расчеты, но и визуализацию, потребовала от учащихся гораздо больших навыков и даже совсем другого стиля мышления, чем сейчас дается школьникам как в общеобразовательном курсе программирования, так и в курсах олимпиадной направленности, читающихся в огромном количестве на разных курсах дополнительного образования.
Здесь можно присоединиться ко многим вузовским преподавателям, физикам, биологам, лингвистам и другим профессиональным представителям предметных областей, да и самим программистам, утверждающим, что сейчас даже среди школьников физико-математической направленности стали редки те, кто может взять задачу за пределами олимпиад по программированию и грамотно решить ее, не переписывая по сто раз и не теряя понимание собственного кода программы. Такая тенденция удручает.
Актуальность подхода заключалась в длительном характере работы над проектом (в течение смены) и сравнительно большой для школьников объем кода проекта (более 500 строк, сильные проекты - более 1000 строк). Это объяснялось тем, что в работах присутствовала как расчетная, так и интерфейсная часть, которая почти всегда составляла большую часть кода проекта, что вообще характерно для задач визуализации. Такое положение дел неизбежно приводит к необходимости строгой архитектуры проекта, что зачастую игнорируется в школьных курсах программирования. «Традиционный» подход, где эти части смешиваются, принципиально неприменим для задач, решение которых требует больше 3-4 учебных часов и значительный объем кода, а это имен тот тип задач, который характерен для вузов и для профессиональной деятельности, и к которому надо готовить школьника, чтобы в дальнейшем не пришлось его переучивать.
Новизна подхода заключается в большом упоре на технологическую грамотность проекта и его проработанность с точки зрения современных технологий программирования. Зачастую проектные работы, выполненные школьниками, смотрятся неплохо с точки зрения интерфейса, но их внутренняя архитектура, надежность, технологическая грамотность на всех уровнях оставляют желать много и много лучшего, что обычно объясняется тем, что в этих проектах «важнее всего физика, а не программирование». На практике же это обычно означает, что школьник (а далее и студент) не может написать и отладить программу большего объема даже на аналогичную тему, путается в коде и в отладке, и в конце концов бросает проект, а плохое качество кода не дает его последователям в полной мере использовать разработанные методики моделирования. Чтобы научиться работать с проектами не школьного уровня, ему необходимо серьезно переучиваться и менять стиль мышления при программировании, что удается не каждому. Остальные вместо самостоятельной работы над задачей «нанимают программистов» и вынуждены тратить время и силы на постановку им технических заданий и верификацию данных, и финансы на собственно разработку, Таким образом, такой исследователь, скажем, ученый-физик, становится несамостоятельным, что ограничивает эффективность его работы. Используемый подход, основанный на принципе «разрабатывать небольшие учебные проекты так, как это делается в больших», призван устранить эту часто встречающуюся проблему.
Общая характеристика курса
Курс рассчитан на учащихся физико-математических школ, изучавших основы программирования в том или ином объеме. Основной контингент учащихся составляли ученики московского физико-математического лицея «Вторая школа».
Программой предполагается проведение проектных работ, рассчитанных на всю смену и направленных не только на отработку отдельных технологических приемов, но и созданию целостной работы, суммирующей в себе знания ученика как по программированию, так и по ряду предметных областей, связанных с темой работы. Содержание теоретической и практической компонент курса находится в соотношении приблизительно 1:2 – 1:4. Для облегчения реализации работа разбивается на части. Формы контроля — устный опрос, беседа, поэтапная сдача проекта.
Курс излагается с опорой на развитие самостоятельного мышления учащихся, элементы самообразования. Для выполнения учащимися выбираются задания, допускающие решения в эстетически привлекательной форме, имеющие игровой компонент.
Цели и задачи обучения
Общей целью курса в контексте основного общего образования с учетом специфики учебного предмета является формирование универсального стиля научного и практического мышления, основанного на системном подходе, направленного на самостоятельное творческое познание и исследование окружающего мира. Это конкретизируется в виде изучении общих закономерностей функционирования, создания и применения автоматизированных информационных систем ¬ программ, разрабатываемых учащимися.
Ценностные ориентиры содержания учебного предмета
- Важнейшей частью курса является формирование системы учебных ценностей (предпочтений) ученика. В конечном счете, это формирование и есть основная инвариантная методологическая задача курса, так как все остальное — технология и будет неотвратимо изменяться с течением времени.
- Во главу угла ставится задача, ее решение и, главное, путь от задачи к решению, а не программирование (кодирование) как таковое.
- Для записи алгоритма на языке программирования выбирается минимальное подмножество средств языка, чтобы не акцентировать внимания на кодировании и для более легкого перехода на другие языки программирования.
- Самостоятельность решения является ключевым условием, которое необходимо доказать при сдаче работы.
- Понимание учащимся тех средств, с помощью которых он решил задачу, ставится выше уровня самих средств решения.
- Аккуратность и надежность решения ставятся выше «программистских трюков», иногда позволяющих в отдельных случаях добиться несколько лучших результатов.
- Главным методологическим принципом является системный подход.
Принципы технологии преподавания
- Принцип самостоятельного исследования объектов и явлений с точки зрения системного подхода. Методы подачи материала:
- Обучение навыкам самостоятельной работы с информацией:
- Техника и технология информационного поиска («где что?»).
- Определение структуры системы понятий («что к чему относится?»).
- Поиск базовой системы понятий («что главное?»).
- Связь с другими предметными областями («где еще?»).
- Исследование «черных ящиков» (приборов, программ, учебных тем).
- Использование знаний об аналогах и более общих объектах.
- Выявление общих принципов устройства, работы.
- Выявление характерных свойств объектов и иерархия этих свойств.
- Принцип творчества, для:
- Закрепления полученных теоретических навыков.
- Эмоционального подкрепления в ходе творческой работы.
- Организации и планирования проектов, обучения планированию.
- Взаимодействия учеников в коллективных проектах.
- Принцип эмоционального подкрепления, для:
- Увеличения эффективности усвоения.
- Развития уверенности в своих силах.
- Развития эстетики.
- Принцип технологичности:
- Постоянное стремления повышать КПД своей работы.
- Умение работать над конкретной задачей в контексте ее возможного развития.
- Развитие технология решения задачи вместе с ее собственно решением.
- Обучение технологии на сравнении «плохих» и «хороших» примеров (от первых — ко вторым).
- Формирование технологически корректной системы ценностей ученика на уровне «люблю работать высокоэффективно» и «не люблю рутинные и ненадежные действия, ищу, как сделать это лучше».
- Принцип смежных дисциплин:
- Разбор материала из смежных предметов, работа на примерах из смежных областей.
- Взаимное усиление информатики и смежных дисциплин.
- Интеграция смежных дисциплин.
- Принцип открытой педагогической технологии:
- Открытая и ясная система ценностей, установок.
- Подчеркнутая расстановка акцентов в подаче материала.
- Понимание «критических мест» в ходе изучения и способов их преодоления.
- Понимание связи материала и методики его подачи.
- Активное использование взаимодействия учеников и взаимного обучения.
Структура и объем занятий
Работа велась с учащимися, закончившими 7 и 8 класс физико-математической школы. Учащиеся были разделены на четыре группы: три группы седьмых классов и одна группа восьмого, также индивидуальная работа велась с учащимися десятых классов.
Работа учащихся была разделена по направлениям, соответствующим тематике проектных работ:
- Математическое моделирование процессов в идеальном газе,
- Математическое моделирование динамики поступательного и вращательного движения, систем связанных объектов,
- Численное моделирование процессов теплопереноса и динамики водной среды,
- Визуализация трехмерных геометрических объектов и моделирование распространения световых лучей в неоднородной оптической среде,
- Проведение экспериментального сравнения эффективности алгоритмов сортировки,
- Моделирование системы взаимодействующих частиц на примере сетевой игры,
- Моделирование представления знаний и реализация экспертных систем,
- Обработка данных физического эксперимента (фиттинг функций),
- Начальное обучение программированию.
Теоретическая часть занятий включала в себя общетехнологические и общеметодические сведения, так или иначе касающиеся любого направления работ. Темы и содержание этих занятий даны в части 2 настоящего отчета. Также теоретическая часть включала семинары, общего характера, посвященные рассмотрению разделов, специфичных для каждого данного направления. Эти семинары проводились для всех учащихся, но адаптировались к общему уровню группы и специфике ее интересов. Дальнейшее обсуждение углубление этой специфической тематики проводилось в рамках индивидуально-групповой работы с учащимися в рамках реализации конкретных задач, но так, чтобы сама реализация проектов учащимися оставалась самостоятельной.
Объем обязательных занятий составлял в среднем 22.5 ак, часов для группы в 8-10 чел. (всего проведено 90 ак. часов таких занятий). Факультативные занятия для желающих проводились в объеме 4-5 ак. часов ежедневно, что составило еще 70 ак. часов суммарного учебного времени. Наполняемость групп факультативных занятий составляла 8-15 человек. Все занятия смены были проведены одним преподавателем - И. Р. Дединским.
Подготовка полной версии настоящего отчета (см. ссылку ниже) заняла около 30 астрономических часов.
Общая характеристика тематики проектных работ
Математическое моделирование процессов в идеальном газе
Основной задачей являлось моделирование различных физических (термодинамических) процессов, происходящих в идеальном газе, и вычисление его интегральных характеристик. Учащиеся реализовывали математическую модель поведения идеального газа, состоящего из большого количества частиц, помещенную в емкость со впускными и выпускными клапанами для газа, поршнем и датчиками давления и температуры. Частицы могли иметь разную массу и взаимодействовать путем соударения, что приводило к задачам определения соударений (collision detection) и реакции на соударение (collision response), что вело к известным в физике задачам центрального и нецентрального удара шаров. Изображение емкости с частицами выводилось на экран, показания датчиков отображалось на графиках и гистограммах, динамически изменяющихся во время работы программы. Модель реализовывалась на языке С++ и визуализировалась средствами двумерной компьютерной графики в среде Windows.
Конкретными задачами этой тематики было проведение модельных экспериментов по зависимости давления, температуры и объема в газах (частичные газовые законы и уравнение Клапейрона-Менделеева), установление равновесия в газовой среде после возникновения возмущения (изменение температуры, давления и объема), установление равновесия по скоростям в результате соударений молекул, теплоперенос в газах, явления конденсации, распространение волн в газовой среде.
Математическое моделирование динамики поступательного и вращательного движения, систем связанных объектов
Основной задачей являлось моделирование механического движения системы материальных точек, связанной жесткими связями. Так как необходимый для этого теоретический материал не проходится в школьном курсе физики, тем более в 7 классе, встала необходимость его адаптивного изложения группе учащихся. В ходе работы реализовывалось представление векторов в программе и разрабатывалась библиотека операций для них, включая повороты координатных систем. Модель реализовывалась на языке С++ и визуализировалась средствами двумерной компьютерной графики в среде Windows.
Конкретными задачами этой тематики были реализация динамики материальной точки, рассмотрение природы вращательного движения и программная реализация необходимого математического аппарата, реализация динамики связанных пар материальных точек, реализация композиций из большего числа точек с жесткими связями.
Численное моделирование процессов теплопереноса и динамики водной среды
Темами этой группы проектов выступали классические вычислительные задачи: численное интегрирование уравнений теплопереноса Фурье и уравнений динамики жидкости Навье-Стокса (в упрощенной форме). Для этих проектов необходимая теоретическая база отсутствовала в школьном курсе как по физике, так и по математике – интегральному и дифференциальному исчислениям, численным методам сеточного моделирования. В данной части проводились занятия по основам этих разделов в адаптивном изложении, без выводов и строгих доказательств, но с объяснением механизмов процессов и физической природы рассматриваемых явлений. В силу этих причин педагогические подходы были экспериментальными и. разумеется, не подходящими для массового изложения восьми- и девятиклассникам. Однако в индивидуальном порядке, на пропедевтическом (относительно вузовского) уровне, успехи были достигнуты, что позволило учащимся самостоятельно написать и отладить моделирующие программы.
Модели реализовывались на языке С++ и визуализировались средствами двумерной и трехмерной компьютерной графики в среде Windows с помощью библиотеки OpenGL.
Конкретными задачами этой группы были моделирование кинетики нагревания металлических двумерных предметов произвольной формы и моделирование динамики водной поверхности при различных возмущениях (падении капель, неравновесных начальных условиях и др.).
В проектах, теоретический материал для которых не входил в школьный углубленный курс физики (моделирование динамики систем связанных объектов, явлений теплопереноса и динамики водной среды) принимал активное участие выпускник МФТИ, преподаватель физики лицея Г. З. Арабули, за что хотелось бы ему выразить искреннюю благодарность.
Визуализация трехмерных геометрических объектов и моделирование распространения световых лучей в неоднородной оптической среде
Тематика этой группы работ – трехмерные визуализации математических и физических объектов и явлений. Здесь необходимо было ознакомиться с основными понятиями векторной и линейной алгебры, аффинными преобразованиями, матрицами и операциями над ними, а также с алгоритмами закраски поверхностей и сокрытия невидимых поверхностей. В ходе работы реализовывался собственная графическая трехмерная библиотека с архитектурой, схожей с библиотекой OpenGL, что в последующем облегчит переход учащихся на OpenGL и понимание механизмов функционирования современных графических библиотек. В задаче о распространении луча необходимо было изучить другую трехмерную библиотеку – Microsoft DirectX 11, активно использующую шейдеры, и реализовать на базе ее физически верную и эстетически привлекательную математическую модель с визуализацией.
Модели реализовывались на языке С++ и визуализировались средствами двумерной и трехмерной компьютерной графики в среде Windows.
Одной конкретной задачей была самостоятельная трехмерная визуализация геометрических объектов, построенных из треугольников (куба, тетраэдра, различных поверхностей), с закраской поверхностей и моделированием пересечений, реализованная на базе двумерной графической библиотеки, основанной на Windows GDI. Другой конкретной задачей была реалистическая визуализация распространения светового луча в неоднородной оптической среде, реализованная с помощью трехмерной библиотеки Microsoft DirectX 11.
Необходимо отметить сложность визуализации этого рода моделей, а также моделей водной среды, особенно в случае трехмерного отображения. Здесь был значительны не только трудности в программировании и необходимости изучения ряда методов линейной алгебры, но и в подборе параметров визуализации, чтобы результирующая демонстрация выглядела убедительной и эстетичной. Уровень этих работ, с учетом возраста их авторов, получил высокую оценку специалистов отдела разработки программного обеспечения и технологий NVidia, одного из ведущих производителей систем компьютерной графики.
Проведение экспериментального сравнения эффективности алгоритмов сортировки
Задачи этой группы наиболее близко стоят к классическим внутренним задачам программирования, что позволяет начать их реализацию с задач, близких по тематике и способам подачи к школьным. Однако, в отличие от распространенного сейчас школьно-олимпиадного подхода, эти задачи не «выбрасываются» после реализации, а используются для вычислительного эксперимента по сравнению эффективности сортировок массивов. Программа сортирует массивы различной длины различными алгоритмами, подсчитывает количество операций сравнения элементов массивов и их обменов, и строит графики зависимости этих величин от длины массивов. Такой подход позволяет легко визуализировать понятие эффективности алгоритмов, детально сравнить алгоритмы в случае сортировки объектов разной природы (с быстрым или медленным сравнением, с быстрым и медленным обменом) и построить практическое руководство по выбору подходящего алгоритма сортировки для различных объектов и различных состояний исходного массива. Для слабых учащихся, которым был труден системный подход к программированию со следованием четкой архитектуре, была возможность в качестве промежуточного этапа выводить данные по эффективности в файл и далее строить графики в Excel, что позволяло выровнять сложность этого проекта для гетерогенной и несильной группы.
Конкретными задачами этой группы были сравнение эффективности различных обменных сортировок (пузырьковой, шейкерной, выбором, простыми и двоичными вставками, быстрой, слиянием, подсчитывающей и др.) по количеству сравнений и обменов и ее визуализацией в виде графиков.
Модель реализовывалась на языке С++ и визуализировалась средствами двумерной компьютерной графики в среде Windows.
Моделирование системы взаимодействующих частиц на примере сетевой игры
Разработка приложений клиент-серверной архитектуры давно стала стандартом в промышленном программировании, но такой подход требует особо дисциплинированного архитектурного мышления и умения думать на сторонах клиента и сервера, что совершенно не развивается в школьном курсе программирования. В то же время, реализация сетевых приложений является для школьников желанным делом и это хороший способ повысить их профессиональную грамотность. Проект разрабатывается в команде, хорошо имитирует взаимоотношения в профессиональной среде разработчиков, ставит школьников в довольно «взрослые» условия, но при этом остается очень педагогически адаптивным и удобным для проведения. Наибольшую сложность в изучении представляет концепция сокетов, но разработка отдельного модуля (библиотеки) для ее реализации позволяет более слабым участникам команды воспользоваться ей, как готовым продуктом, но при этом полностью осознавая базовые понятия сетевых технологий (протокол, адрес, пакет и т.п.).
Конкретными задачами этой тематики были реализация программной библиотеки для передачи данных по сети на базе Windows Sockets, реализация однопользовательской и парной игры «Агар», моделирующей поведение микроорганизмов, разработка стандарта протокола обмена данными по сети и реализация этого протокола, разработка сервера игры и клиентских приложений.
Модель реализовывалась на языке С++ и визуализировалась средствами двумерной компьютерной графики и Windows Sockets в среде Windows.
Моделирование представления знаний и реализация экспертных систем
Эти задачи когда-то считались задачами «искусственного интеллекта» (например, известная система MYCIN), хотя их реализация в самом простейшем виде несложна для тех учащихся, которые знакомы с основными структурами данных и алгоритмами над ними. Сейчас такие программы широко используются в автоматической технической и медицинской диагностике, составлении определителей. За основу берется хранение базы данных в виде двоичного дерева, в листьях которого хранятся объекты, а в узлах – вопросы, классифицирующие объекты. Пользователь задумывает объект, находящийся или не находящийся в базе, и далее отвечает на вопросы, расположенные вдоль пути от корня к листу, содержащему объект. Если объект в базе присутствует, он таким образом будет найден, если нет – он добавляется в базу с указанием уточняющего вопроса, отличающего его от соседнего объекта. Путем сравнения путей от корня к объектам находятся сходства и различия объектов, а сами пути являются определениями.
Конкретной задачей было моделирование экспертной системы в виде двоичного справочника, реализующей диалог с пользователем, добавление объектов в базу данных и их классификация, автоматическое построение определений и сравнение объектов.
Модель реализовывалась на языке С++ и визуализировалась средствами двумерной компьютерной графики в среде Windows.
Обработка данных физического эксперимента (фиттинг функций)
Обработка данных физического эксперимента часто сводится к линеаризации полученных экспериментальных данных с целью облегчения проведения прямой по линеаризованным данным и дальнейшем нахождении коэффициентов этой прямой, из которой выводятся результаты измерений. Данный метод по сути прост, но требует отдельного вывода преобразований линеаризации для каждой конкретной зависимости, и, следовательно, неэлементарен для автоматизации в общем случае. Кроме того, линеаризация не является аффинным преобразованием, поэтому, отображая экспериментальную точку в соответствующую точку на линеаризованном графике, она искажает величины погрешностей измерений при каждой точке. Минимизация (фиттинг) функций лишена этого недостатка и ее гораздо проще реализовать независимо от формы исследуемой зависимости, но может быть выполнена только машинно, так как связана с большим объемом вычислений. Это удачно ложится на разработку компьютерной программы.
Конкретными задачами были фиттинг функций, описывающих различные физические закономерности, с целью минимизации погрешностей в экспериментальных данных. Одной из задач было измерение начальной скорости полета футбольного мяча после удара футболистом и ускорения свободного падения вблизи поверхности Земли.
Модель реализовывалась на языке С++ и визуализировалась средствами двумерной компьютерной графики в среде Windows. Данные траектории футбольного мяча получались обработкой видеозаписи удара по мячу при скорости съемки 90 кадров в секунду.
Начальное обучение программированию
Высокая гетерогенность учащихся смены (по направлению «программирование» отбор участников смены не проводился) обусловила необходимость проведения начального обучения программированию среди ряда школьников. Среди них были те, кто ранее совсем не изучал программирование, но большую часть этой группы составляли школьники, 1-2 года занимавшихся так называемым «олимпиадным программированием», состоящим в решении большого количества очень маленьких с проектной точки зрения задач, имеющих чисто логический характер и почти никак не связанных с предметными областями. После 15-60 минут решения такой задачи ребенок переключается на другую задачу, что дает очень малое время жизни кода и он быстро теряет свою актуальность, так как по условиям олимпиад нельзя использовать свои наработки от предыдущих задач (так в олимпиадах ведется борьба со списыванием). Педагогически это приводит к крайне небрежному отношению к коду и особенно к архитектуре программы, что почти неизбежно ведет к неспособности ребенка решать задачи больше минимальных и особенно внешних с точки зрения программирования как такового, то есть они фактически неспособны написать никакую полезную для себя и других программу, кроме самых простых. Автор и его коллеги неоднократно замечали это при работе со школьниками и студентами МФТИ и МГУ. Это проявилось и среди детей текущей смены, как по оценке автора, так и по мнению самих детей, когда они невольно сравнивали свои умения и результаты с результатами тех, кто занимался с использованием проектного подхода, который, при этом, не исключает, а развивает логический, придавая ему актуальность.
Поэтому для таких детей были организованы занятия по начальному обучению программированию. Небольшая их часть попыталась использовать свои олимпиадные навыки для того, чтобы обучаться не совсем с нуля, но тут сказались воспитанная у них привычка работать над задачей недолго и неумение делить задачу на части, что породило необходимость выполнять очень мелкое деление на подзадачи и задало невысокий темп обучения. Проектный подход детям очень понравился, определенные результаты были достигнуты, но им, безусловно, хотелось бы большего. Большая же часть "олимпиадных" детей захотела изучать программирование вообще с нуля, мотивировав это тем, что в предшествующем обучении в школе им было далеко не все понятно и часто их решения были не вполне самостоятельными. В течение смены они успешно и с большим удовольствием прошли часть курса по начальному обучению программированию с применением проектного подхода.
Занятия начальному обучению прошли позитивно и результативно, особенно у тех, кто ходил не только на уроки, но и на факультативы, Однако очень жаль, что заинтересованные и часто перспективные дети часто становятся заложниками однобоких олимпиадных подходов, которые, безусловно, удобны для ряда преподавателей, так как это сильно упрощает им работу.
Характеристика общей части проектных работ
Как говорилось выше, основной особенностью проводимых проектных работ были длительный характер работы и сравнительно большой для школьников объем кода проекта (более 500 строк, а в сильных проектах - 1000 и более строк). Это объяснялось тем, что в работах присутствовала как расчетная, так и интерфейсная часть, которая почти всегда составляла большую часть кода проекта, что вообще характерно для визуализации. Такое положение дел неизбежно приводит к необходимости строгой архитектуры проекта, что зачастую игнорируется в школьных курсах программирования. В качестве основного архитектурного паттерна была выбрана концепция MVC (Model-View-Controller), применяемая при решении многих задач с визуализацией и интерактивным взаимодействием с пользователем. Это позволило учащимся упорядочить составные части своего проекта и отделить расчеты от визуализации. «Традиционный» подход, где эти части смешиваются, принципиально неприменим для задач, решение которых требует больше 3-4 учебных часов и значительный объем кода.
Эти же особенности, на более низком уровне архитектуры, приводили к повышенным требованиям к структуре программы, ее декомпозиции на классы, функции и библиотеки, к форматированию кода, к именам идентификаторов, к простоте и ясности изложения алгоритмов на языке программирования. В условиях большого объема кода эти требования были для учащихся совершенно естественными, так как иначе они просто начинали путаться в своих проектах.
Синтетический характер задач в сочетании с, опять же, значительным объемом кода, приводил к повышенным требованиям к надежности программ и их самодиагностике, что часто игнорируется в проектах школьников. Здесь же сделанные вовремя проверки и развернутые диагностические сообщения воспринимались учащимися как благо, облегчающее отладку программ и в целом работу над ними.
Необходимость длительной работы обусловила хранение кода в репозиториях и применение системы контроля версий (git). Это обеспечивало сохранность кода в условиях работы компьютерного класса, а также делало удобным отслеживание изменений в проектах и откат к предыдущим версиям, если это было необходимо.
Для работы использовались языки программирования C++ и язык программирования шейдеров HLSL DirectX, среды программирования Microsoft Visual Studio и CodeBlocks (компилятор g++ 4.8.1 в среде MinGW).
Результаты работ представлены в приложении к настоящему отчету.
Материально-техническое обеспечение
Для преподавания использовался прекрасный компьютерный класс Образовательного центра "Сириус", оснащенный десятью современными персональными компьютерами IBM PC под OS Windows 8.1 с возможностью высокоскоростного доступа в Интернет из расчета одно компьютерное рабочее место на одного ученика, а также аналогичным компьютерным рабочим местом учителя с плазменным дисплеем большого размера и цветным принтером.
В качестве программного инструментария для работы с языком C++ использовались среды Code::Blocks (компилятор g++ 4.8.1 в среде MinGW) и Microsoft Visual Studio 2013. В качестве библиотеки программной поддержки для отображения двумерной графики использовались бесплатная библиотека TX Library, разработанная автором курса. Для отображения трехмерной графики использовались библиотеки OpenGL и DirectX 11.
Благодарности
Автор сердечно благодарит за содействие и организацию работы заведующего научным сектором образовательного центра М. И. Случа, завуча смены В. В. Ларина, преподавателей физики лицея Г. З. Арабули, А. В. Кондратьева, М. М. Голодняка, Ю. Н. Дементьева и зав. кафедрой физики С. Н. Колякину.
По ряду тематик детьми были подготовлены тезисы работ и краткие доклады с демонстрацией работы программ, по которым были сняты видеоролики. Это, учитывая очень сжатые сроки, было весьма непросто, и автор благодарит великолепных специалистов видеогруппы образовательного центра А. Макеева и В. Новикова.
Множество технических проблем остались бы нерешенными без высокопрофессиональной и крайне оперативной работы, доброжелательного коллегиального отношения сотрудников ИТ-отдела "Сириуса" под руководством П. Айдаровой.
Вся проделанная работа была бы невозможна без прекрасных условий обучения и отдыха, уважительной и творческой атмосферы, искренней поддержки детей и преподавателей в образовательном центре "Сириус" под руководством Елены Владимировны Шмелевой.
Полный текст отчета
Полный текст отчета приведен здесь: IlyaDedinsky.pdf.
|