Мастерские
- Интерактивный физический 3D-симулятор (А. Пальянов)
- C Code Coverage (CCC) (В. Соловьёв)
- Архиватор на Erlang (М. В. Братусь)
- Фрактальная графика (Н. А. Русакова)
- AI for kids (Е. Дмитриева)
- Разработка логических игр на Java (А. Подстригайло)
- Умненькая Соня (А. Г. Марчук)
- Web-сервер на Perl (А. Салмин)
- Социальная сеть нового поколения (С. Щербина, И. Дульцев)
- Scratch (С. Н. Коваль)
- Лаборатория у вас на столе (В. А. Сакерин)
- Конструктор сайтов (А. Сакерин)
- Сетевые технологии (В. И. Бауэр)
- Компиляторы (Е. Насибулов)
- Язык C + пресс-центр (А. Мирзуитова)
1. Интерактивный физический 3D-симулятор: проектируем и создаем сложные управляемые модели.
Мастер: Андрей Пальянов
Имеется готовый «самодельный» физический симулятор (главным образом Ньютоновская механика, но при необходимости функциональность может быть расширена), разрабатываемый в ИСИ СО РАН для научных и образовательных целей с 2007 года. На его основе был создан ряд демонстраций и проектов, в том числе динамическая управляемая модель робота «Johnny 5», возможно, знакомая вам по фильму «Короткое замыкание», действующая виртуальная копия реального биологического организма (нематоды C. Elegans), включающая его мышечную систему и нейронную сеть, а также созданный нашей командой на ЛШЮП 2009 несложный автосимулятор. Все описанные проекты будут показаны при ознакомлении.
Как видите, довольно много возможностей для фантазии и действия. В зависимости от интересов и уровня группы при совместном обсуждении будет принято решение о конкретном объекте, который будет интересен всем (есть готовые идеи, есть возможность развивать один из существующих проектов, а можно будет создать вообще что-нибудь новое, от модели экскаватора до модели муравья). Несмотря на кажущуюся сложность, большинство материала будет на интуитивно-понятном уровне, и как показала практика предыдущего года, все получилось удачно. В симуляторе визуализация реализована с помощью OpenGL. Код написан на С++. Реализовано базовое управление движениями моделей с клавиатуры и управление 3D-сценой с помощью мыши. Возможно создание автономных моделей, управляемых нейронными сетями, поддержка которых также встроена в симулятор.
Желательно знакомство с языком С/С++ и школьной физикой :). В ходе работы удастся познакомиться с библиотеками STL, OpenGL, основами трехмерной графики. Дополнительно, при наличии интереса, возможен экскурс в такие области, как основы искусственного интеллекта, биологические нейронные сети, моделирование живых систем.
Язык разработки: С++ (Microsoft Visual Studio) + STL + OpenGL.
2. C Code Coverage (CCC)
Мастер: Владимир Соловьёв
Важную роль в процессе разработки программ играет тестирование, т.е. исполнение написанной программы на некотором наборе тестов с ожиданием определенных результатов. Однако даже совпадение всех результатов с ожидаемыми не является гарантией корректности программы, так как набор тестов может быть слишком мал и может не охватывать все возможные пути исполнения программы. Таким образом, часть кода может просто ни разу не исполниться, и тогда нельзя ничего сказать про его корректность. Дополнительным критерием качества тестирования является определение множества инструкций, исполненных в процессе тестирования программы. Это множество называется «покрытием кода» (code coverage).
Цель мастерской: реализовать определитель code coverage для программ на языке C с помощью автоматического инструментирования исходного кода. Минимальный вариант — работа с одним «.c» файлом, результат в виде отдельного текстового лога. Далее можно прикручивать визуализацию результата, поддержку проектной системы какой-нибудь IDE (Visual Studio, например) и т.д.
Требуемый уровень школьников: знание C. Желательно знание С++ (достаточно просто знать, что такое класс), так как разработка будет вестись на нем, но не обязательно.
Инструментарий: Visual Studio, C++ Builder (если доберемся до визуализации и не будет адептов MFC).
3. Архиватор на Erlang
Мастер: Братусь Михаил Витальевич
Цель мастерской:
- Освоить Erlang (функциональный язык программирования с динамической типизацией, предназначенный для создания распределённых вычислительных систем);
- Написать проект, использующий распределённые вычисления (в т.ч. одновременно на нескольких ПК).
Мы постараемся не только создать работающий Архиватор, но и извлечь максимум пользы от "многоядерности" Эрланга. Для этого наш Архиватор будет тестироваться с разным количеством ядер на разном количестве ПК, соединенных через TCP/IP.
Требуемый уровень школьников: знание любого функционального языка. Например: C/C++, Pascal, Lua (функции, циклы, рекурсия, массивы, работа со строками, работа с графикой)
Инструментарий: Erlang и Блокнот (Windows XP Pro SP3 / Windows 7)
4. Фрактальная графика
Мастер: Нина Александровна Русакова
Если вас восхищает зрелище молнии, вы любите разглядывать узоры на морозных окнах и разнообразные формы снежинок, то фрактальная графика для вас.
За время работы в мастерской вы узнаете о том, что такое фракталы, научитесь создавать их самостоятельно.
Среда разработки — Delphi.
Для работы необходимо знание языка Pascal.
5. AI for kids
Мастер: Екатерина Дмитриева
В ходе работы этой мастерской планируется изучение элементарных принципов генетического программирования и алгоритмов cамообучения.
Цели:
- создать приложение, моделирующее поведение черепахи на открытой поверхности в различных условиях;
- освоить основы программирования на языке ActionScript.
Требование к участникам: знание понятий «условный оператор», «цикл», «массив» на уровне «я про это слышал» и выше.
6. Разработка логических игр на Java
Мастер: Алёна Подстригайло
На сегодняшний день Java, несмотря на свою «молодость», остаётся одним из наиболее популярных объектно-ориентированных языков программирования. И не случайно: надёжность, безопасность исполнения, архитектурная независимость и при этом — относительная лёгкость изучения являются весомыми аргументами в его пользу.
Цель мастерской — изучение основ и особенностей объектно-ориентированного программирования на Java. Результатом работы будет создание кроссплатформенного сапёра (по типу того, что идет в стандартной поставке Windows).
Требования к участникам: приглашаются учащиеся старших классов, знающие язык С или С++ (по крайней мере, на уровне синтаксиса).
Среда разработки: NetBeans IDE.
7. Умненькая Соня
Мастер: Александр Гурьевич Марчук
Подмастерье: Сергей Лештаев
Предлагается творческий проект ориентировать на создание диалоговой системы с элементами искусственного интеллекта. Программа будет вести диалог с пользователями, задавая вопросы по некоторой теме. Основной темой предполагается собственно ЛШЮП, состав школ, отражение на фотографиях. Программа «Соня» также сможет формулировать информационный портрет по заданному вопросу. В формулировке можно, кроме фактического материала, отобразить ещё настроение и стиль изложения.
В результате выполнения проекта школьники приобретут знания по построению интеллектуальных диалоговых систем и баз данных, основам клиент-серверного программирования, элементам лингвистического анализа, современной платформе .NET/Silverlight, программированию использования мультимедиа и программированию визуальных эффектов. Программа будет создаваться в среде Visual Studio, на языке C#, в технологии .NET. Для участников желателен опыт программирования на языках типа Паскаль или C.
8. Web-сервер на Perl
Мастер: Алексей Салмин
В ходе работы мастерской планируется создать веб-сервер, обрабатывающий подключения по протоколу HTTP. Программы данного класса принимают запросы от браузеров (таких как Firefox, Opera или IE) и в ответ передают им веб-страницы, изображения и другие данные.
Если позволит время, также будут реализованы различные депрессивные расширения, как то SSI и CGI.
Разработка будет вестись на скриптовом языке программирования Perl, изучению которого будет посвящены первые несколько дней работы. Также будут разобраны основы технологий TCP, HTTP и концепция параллельного программирования.
Требования к участникам: знание Pascal, C или другого языка этого класса.
Предполагаемый возраст участников: 8-10 класс.
Средства разработки: perl, vim, subversion.
9. Социальная сеть нового поколения
Мастера: Святослав Щербина, Игорь Дульцев
В рамках мастерской участники изучат основы языка программирования Python, языка разметки HTML5 и скриптового языка JavaScript. Всё приложение будет построено на перспективной клиент-серверной технологии с использованием веб-сокетов.
В процессе работы мастерской вместо классического веб-приложения будет написан клиент на HTML5+JavaScript+jQuery, работающий в любом хорошем браузере (Google Chrome), и сервер на Python, работающий в любой хорошей операционной системе (Linux). Эти две части будут написаны разными командами под руководством разных мастеров.
В результате работы мастерской планируется реализовать основные функции социальной сети — список друзей, конференции, спамстены, система мгновенных сообщений, ньюс-фиды.
Разработка будет вестись под Ubuntu Linux.
Средства разработки: Python, HTML5, CSS, JavaScript, jQuery, MySQL, Salmin Web Server (когда Он его напишет), Subversion.
Требования к участникам: >8 класс, знание любого алгоритмического языка программирования (желательно С или Python).
10. Scratch
Мастер: Светлана Николаевна Коваль
Приглашаем всех, кто начинает знакомство с программированием, умеет управлять Черепашкой в Лого или не умеет, но хочет освоить свой первый язык программирования.
Мы познакомимся с языком программирования Scratch, научимся создавать игры, графические и музыкальные редакторы, конструкторы. Познакомимся с основами электрической цепи и смоделируем конструктор, позволяющий собирать электроцепь.
11. Лаборатория у вас на столе
Мастер: Виктор Алексеевич Сакерин
Когда профессиональные разработчики делают игру, впечатляет не только (и не столько) подробная графика, продуманные интерьеры и «тридэшность». Больше всего поражает то, что там всё как в жизни. Вот ты бежишь, подскользнулся и... всё узнаваемо. Тебя «заносит» и «прикладывает фэйсом об уолл». Как это так получается?
А дело в том, что в этих играх не просто «как в жизни», а именно всё взято из нашей реальности — физические законы, свойства окружающих предметов и т.д.
Нет, в нашей мастерской мы не будем делать игры (ну, разве что так, по ходу дела, в качестве упражнений). Мы сделаем на экране физическую лабораторию и будем производить опыты. Будем учиться применять физические законы к компьютерным объектам. А уж для чего Вы примените эти умения в жизни — для создания игр, разработки станков или для науки — дело ваше.
Будем разрабатывать с помощью: Delphi или Pascal, в зависимости от того, кто пойдёт в мастерскую. А если Вы не знаете этих языков — научу. Кто не знает и боится физики — не бойтесь. У нас будет с собой шпаргалка. Так что не пропадём!
Желательный возраст: лучше всего от 9 класса и старше.
Желательно знание: жизни.
12. Конструктор сайтов
Мастер: Алексей Сакерин
Сегодня написать сайт уже довольно просто. Существует довольно много программ, в которых достаточно сказать, где будут кнопки, где менюшки, где новости — и сайт готов. Программистам это не так уж интересно. А вот сделать такую программу, которая позволяет написать любой сайт — вот это уже задачка для хороших программистов. Таких, как ЛШЮПовцы.
Приветствуются знания C++, PHP, HTML. Основы программирования — обязательны.
13. Сетевые технологии
Мастер: Владислав Иванович Бауэр
Целью мастерской будет создание клиент-серверного приложения на Java. Конкретный проект будет определён в процессе работы.
14. Компиляторы
Мастер: Егор Насибулов
Мастерская посвящена написанию компилятора или интерпретатора (обсуждается, во многом зависит от состава мастерской), целью мастерской являются освоение базовых принципов компиляции и написание компилятора или интерпретатора какого-либо языка программирования.
Язык реализации: C++
Требования к участникам: знание какого-либо языка программирования.
15. Язык C + пресс-центр
Мастер: Александра Мирзуитова
Если вы когда-либо слышали о линуксе и интересовались, что это такое — эта мастерская для вас. В мастерской будет две основных задачи: знакомство с операционной системой Ubuntu Linux и изучение основ языка С. Дополнительной задачей будет являться регулярный выпуск газеты ЛШЮП и разнообразных объявлений, афиш для лекций и т.д.
Результатом работы мастерской предполагается выпуск газет о жизни ЛШЮП, знакомство с Линуксом и создание толкового или языкового словаря.
Требования к участникам: 7 класс и старше, знание какого-либо языка программирования до ЛШЮП.
ОС: Ubuntu Linux 10.04
Cредства разработки: Geany, OpenOffice (для пресс-центра).
