Skip to content

Latest commit

 

History

History
205 lines (120 loc) · 24.5 KB

2018.md

File metadata and controls

205 lines (120 loc) · 24.5 KB

2018

Мастерская 1. Real Game

Мастер: Климов Николай

Подмастерья: Петров Никита, Федорова Марина

В прошлом году мы делали игровой движок и небольшой платформер для демонстрации его возможностей. В этом году мы, с помощью этого движка, будем делать игру посерьезнее. Все по-старому: 2D, c++, linux, но в этот раз наш фокус будет идти на внутриигровую логику. Хотя, разумеется, также будет некий багфикс и доделка движка. Если вы хотите окунуться в код ваших предшественников и что-нибудь с ним сотворить, welcome. Формат игры будет выбран после комплектации команды.

Инструментарий: (x)Ubuntu, gcc (-std=c++17), VS code, gdb, cmake, gitlab.

Требования к участникам: знание языка с си-подобным синтаксисом, понимание работы указателей, знание (и опыт реализации) базовых алгоритмов (стандартные сортировки, бин. поиск и т.п.).

Пожелание: было бы очень здорово, если хотя бы половина участников будет со своими ноутбуками и ещё круче, если кто-нибудь сможет сам поставить себе ubuntu.

Мастерская 2. SYPHack.

Мастер: Дмитрий Горбунов Подмастерье: Влад Богданов

"You get used to it, though. Your brain does the translating. I don't even see the code. All I see is blonde, brunette, redhead."

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

К счастью, за многие годы существования компьютеров программисты, не умеющие рисовать, догадались, что при достаточно интересном геймплее графика не важна и даже не нужна. Так появился жанр roguelike (в честь игры-первопроходца Rogue), ключевыми компонентами которого сейчас считаются

случайно генерируемый мир крутая кривая обучения перманентная смерть персонажей (уже опционально) - текстовая графика. За две недели в нашем распоряжении мы напишем маленький "рогалик", то есть:

напишем базовый движок реализуем генерацию карт (едва ли не самая сложная часть) дадим монстрам подобие интеллекта и в качестве вишенки на торте добавим ко всей этой радости сетевой режим. Требования: 8+ класс, знакомство с Си на уровне "уже не боюсь malloc()", отсутствие страха перед математикой.

Очень желательны: Знакомство с любой *nix осью, знание Python.

Инструментарий: GCC/Clang, GNU Make, Python3, Vim, ZeroMQ.

Источники вдохновения/рекомендации к ознакомлению:

Nethack Dungeon Crawl Stone Soup Dwarf Fortress

Мастерская 3. Создаем свой язык

Мастер: Борис Леонидович Файфель

Как вы думаете, почему человечество уже создало целое море языков программирования и продолжает создавать новые? Почему люди не выбрали какой-то один язык, и не остановились на нём? Правильно, потому, что разные языки ориентированы на разные классы задач…

Но это только часть ответа. Всегда будут находиться люди, творящие новые языки из чувства самоутверждения (а смогу ли я решить столь сложную задачу?), а у кого-то возникают действительно новые идеи, которые хочется воплотить в коде…

И мы попробуем создать свой простенький, но работающий язык.

На ЛШЮП уже были такие проекты. Но мы пойдем своим путем: в качестве базового языка возьмем Лисп. За время школы нам придется потрудиться: выучить Лисп, выучить алгоритм интерпретаци, спроектировать и реализовать язык. Отладить… А если останется время – мы замахнемся даже на компиляцию!

Лисп язык красивый, но весьма своеобразный. Освоившему Лисп открыт прямой путь в интереснейший мир функционального программирования.

Крупнейший философ 20-го века Людвиг Витгенштейн сказал однажды: “Границы моего языка – это границы моего мира”. Расширим границы нашего мира, используя Лисп!

Требования к участникам: возраст – от 7 класса и старше, желательно приличное знание математики.

Инструментарий: HomeLisp и LispWorks.

Мастерская 4. "Кибер охрана"

Мастер: Михаил Витальевич Братусь Подмастерье: вакантно

Мы попробуем написать умную охранную систему, которая никогда не выключается и должна реагировать на вторжение злоумышленников и игнорировать перемещения хозяев.

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

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

Требования к участникам: Знание любого языка программирования на уровне "я сам могу написать сортировку массива несколькими способами", "я умею рисовать и двигать по экрану картинки", "рисую спрайт 5 минут, и трачу остальное время на программирование и отладку проекта"

Очень желательны: Знакомство c системой управления версий Git.

Инструментарий: Язык Lua, фреймворк Love2D, IDE ZeroBrane Studio.

Мастерская 5. "Clean C & нейросети"

Мастер: Павел Карасюк

A long time ago in a SSYP far, far away…

Была придумана задача - два игрока по очереди ставят шахматных королей на квадратную доску размера NxN, причём очередного короля нельзя ставить на клетку, которую бьёт уже поставленный король (неважно, какого цвета). Побеждает тот игрок, который последним делает ход, т.е. после которого все поля на доске биты и очередного короля поставить нельзя. Вопрос - есть ли выигрышная стратегия для какого-нибудь из игроков? Для доски нечётного размера есть выигрышная стратегия для первого игрока (можете над ней подумать перед школой), для доски чётного размера - неизвестно. Лучшие умы сломали свои головы и пальцы, но успехом это не увенчалось. В память о великом воене задача была названа "Игрой в Дульцева", и вопрос о её решении повис в воздухе.

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

Требования к участникам: знание любого языка программирования. Знание C приветствуется, и не думайте, что вам будет скучно - мы найдём, куда применить вашу энергию.

Инструментарий: OS Windows, MSVC, FAR

Мастерская 6. "Чат: начало пути"

Мастер: Шумаков Алексей Подмастерье: Вячеслав Феофанов

Наверное, многие пользуются мессенджерами. Для большинства это простая и ежедневная необходимость. Есть те, кто задумывается: что же стоит за этой видимой простотой на другой стороне экрана. Мы с вами пройдем путь от простого чатика в локальной сети, до написание сервера, позволяющего поддерживать большое количество клиентов. Для этого изучим принцип работы TCP/IP протокола, способы доставки сообщений клиентам, и узнаем, как хранить данные на сервере. Если будем успевать, то прикрутим стикеры, групповые чаты, шифрование и каналы. В итоге должны будем получить сервер, который будет использовать другая # мастерская в своем проекте. И, конечно, в процессе всего будем изучать язык C#.

Инструментарий: C#, VS code, Visual Studio, MSSQL, git, ASP.net Core

Требования к участникам: 7 класс, желание много работать

Мастерская 7. "Большие данные"

Мастер: Александр Гурьевич Марчук Подмастерье: Бояршин Андрей

Информационные системы - это, в первую очередь, данные. Целью мастерской будет изучение классических и отдельных современных способов работы с данными. Мы начнем с изучения языка C#, освоим программирование работы с файлами, самостоятельно создадим простую систему управления базами данных (СУБД), разберемся в том, как устроена база данных ЛШЮП. Творческим проектом мастерской может быть создание приложения к базе данных ЛШЮП, которое позволит проводить по запросам пользователей некоторые виды анализа данных.

Мастерская рассчитана на школьников, имеющих хотя бы небольшой опыт программирования в языках программирования типа C, C#, Pascal, Java. Работа будет проводиться на языке C# в обстановке .NET Core в операционной системе Windows с использованием инструментальной системы Visual Studio. Никакого SQL!

Мастерская 8.1 и 8.2. "Котлин, Кафка, Кластер"

Мастера: Александр Кириллов, Евгений Коновалов

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

Тут на помощь приходят распределенные системы - множество компьютеров, работающих в одном кластере, которые выполняют те же задачи, но при этом решают выше описанные проблемы. В нашей мастерской мы будем изучать технологию создания распределенных систем при помощи Apache Kafka на языке Kotlin. В качестве проекта разработаем такую систему. Сложность и область ее пр именения будут зависеть от учеников. Все в ваших руках!

Требования: 9-10 класс, желание работать и разбираться в сложных вещах, желательно знание ООП или хотя бы C

Инструментарий: Kotlin, Apache Kafka, Gradle, Git, Idea, возможно Docker

Мастерская 9. "Решение головоломок с помощью системы верификации или "Марсоход для козы""

Мастер: Евгений Бодин

Цель мастерской-- изучить систему верификации SPIN и научиться использовать компьютер для решения головоломок от классической задачи о волке, козе и капусте (и других разновидностей задач о переправе: “японской семейной” разновидности, ревнивых мужьях, каннибалах и миссионерах, четверых на одном мосту с одним фонариком и др. ) до кубика “Square-1”.

Cистема SPIN используется в мире в том числе для проверки, что программное обеспечение марсохода “соответствует своей спецификации”, то есть делает именно то, для чего предназначено.

(Для марсохода особенно важно, чтобы не приходилось кого-нибудь поблизости просить "нажать любую кнопку".)

Требуемый уровень школьников: знание любого языка программирования. Не обязательно: 7 класс и выше, знание английского в пределах языка Паскаль или С. Инструментарий:

https://ru.wikipedia.org/wiki/SPIN_(верификатор)

http://spinroot.com/spin/Man/README.html

Операционная система: Linux или Windows

Мастерская 10. "ОЧИ - обучение через игры"

Мастер: Илья Андреевич Насибулов

Ни для кого не секрет, что лень - двигатель прогресса. Если бы вам предложили до конца школы играть в игры, вы бы согласились? Треть дала бы положительный ответ сразу, а еще половина - после недолгих раздумий. 80% пойманы на крючок - игры бывают разные. Начиная с футбола, тенниса и даже водного поло для развития вашего тела до различных химических лабораторий, квестов с решением интегрально-дифференциальных уравнений и банальной "напиши компилятор за пару ночей" для вашего разума.

Вторым типом игр мы и займемся в нашей мастерской. Может, они не будут настолько объемными, как упомянутые выше, но смогут кого-то чему-то обучить, как минимум - вас, разработчиков этих игр.

А теперь серьезно: мы будем изучать язык C, начиная с переменная-массив-функция до примерно структура-malloc-списки-деревья. Вдобавок к этому изучим основы openGL(3D не нужно, 2D - в самый раз). Как результат - напишем одну сложную или несколько простых игр.

Если хотите узнать почему вы попались на крючок, что такое первая сигнальная система, почему обучение через игры эффективно/бесполезно, почему openGL, понять смысл всех незнакомых слов в описании мастерской(можно оставить за кадром), приятно провети время в течение 2-х недель и, наконец, освоить язык C и написать небольшой проектик(проектище) на нем - ждем в нашей мастерской.

Инструментарий: Win OS, MSVS.

Мастерская 11. Квантовые вычисления на Си

Мастер: Кирилл Перевалов

Почему некоторые современные алгоритмы шифрования в скором будущем могут оказаться небезопасными? Как перебрать все варианты через один шаг вычислений? Можно ли сократить время работы программы с миллионов лет до пары часов?

Квантовые вычисления - крайне перспективное и динамично развивающееся направление в вычислительной технике, позволяющее невероятно эффективно решать задачи, которые плохо решаются на обычных компьютерах (даже на самых мощных).

Многие люди наслышаны о квантовых компьютерах и их потенциальных возможностях, но лишь единицы представляют, что это такое, и как оно устроено и работает.

Мы изучим основы языка Си, познакомимся с моделью квантовых вычислений, напишем небольшую симуляцию квантового компьютера и запрограммируем некоторые алгоритмы.

Инструментарий: Code::Blocks, gcc, gdb.

Требования: 7/8+ класс, желательно хороший уровень знания математики.

Мастерская 12. Словари для маленьких

Мастер: Алексей Зубарев

Многие из вас уже пользовались google-переводчиком? Безусловно, значительно проще набрать слово и найти его возможный перевод, не отходя от компьютера. Знаете ли вы, что такого рода программы являются результатом работы программистов, которые решили облегчить себе жизнь, а также жизнь другим людям, переписав поиск в обычных бумажных словарях в электронный сервис.

В нашей мастерской мы попробуем написать поиск в словаре нужных слов с переводом. Возможно, создадим частотный словарь или другие словари (например, словарь толковый или словарь синонимов…).

Для этого изучим основы языка программирования Си…

Требования: знание языка Лого или другого начального языка, желание заниматься программированием.

Мастерская 13. Юный криптограф

Мастер: Светлана Николаевна Коваль

Хочешь научиться хранить свои тайны, создавать зашифрованные послания и удивлять одноклассников познаниями в криптографии — науке о создании, использовании и взломе шифров? В нашей мастерской тебя ждёт знакомство с тайными знаниями и умениями, которые доступны только избранным — шпионам, секретным агентам, учёным. Вместе мы научимся кодировать сообщения, используя разные методы шифровки, разгадывать уже существующие тайные послания, делать шифровальные машины! У тебя есть уникальная возможность познакомиться с реальным миром тайных агентов и спецслужб! А вдруг ты сможешь создать свой уникальный метод шифровки?

Инструментарий: язык Python.

Требования: знание языка Лого, русского и латинского алфавита, желание заниматься программированием в любую погоду