Летняя школа юных программистов им. академика А.П. Ершова
  • Новости
  • Информация
  • Оргкомитет
  • Родителям
  • ЛШЮП-2018
  • ЛШЮП-2017
  • ЛШЮП-2016
  • ЛШЮП'15
  • Регистрация
  • Мастерские
  • Согласие на обработку (персон. данные)
  • Памятка
  • Место проведения
  • Расписание
  • Итоги
  • ЛШЮП'14
  • ЛШЮП'13
  • ЛШЮП'12
  • ЛШЮП'11
  • ЛШЮП'10
  • ЛШЮП'09
  • ЛШЮП'08
  • ЛШЮП'07
  • ЛШЮП'06
  • ЛОГО
  • Твиттер
  • Спонсоры

Мастерские2015

Мастерская №1 "Beautifully Forged Language"

Мастера: Владимир Валерьевич Соловьев, Данил Михайлович Тумайкин

Подмастерье: Сергей Хапугин

Вы.усталиОт(программирование.с(new List<Бесполезные отжимания>(строгий синтаксис, скобка, точка, точка.с(запятой))))?
Вы в курсе, что Java и C# одинаково морально устарели?
Вы.усталиОт(разговорFactory.Язык(Машина))?

Мы тоже!

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

Вы узнаете, что такое компилятор изнутри, что такое функциональные языки программирования, и почему они лучше всех прочих (и вам не придётся при этом на них писать).

Шутки в сторону. Мы сделаем:
1) Спецификацию инновационного языка программирования, максимально приближённого к естественному;
2) Компилятор этого языка;
3) Виртуальную машину для него;
4) Стандартную библиотеку с блэкджеком и списками.

И всё это мы сделаем, пользуясь современными технологиями разработки программного обеспечения. Если вы хотите узнать, каково быть настоящим мачо в мире программирования, добро пожаловать на борт!

Инструментарий: Clean C, FAR, JIRA, Stash, Bamboo, Crucible, Confluence

Мастерская № 2 "Разработка эмулятора NES"

Мастер: Андрей Валерьевич Викторов

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

А что, если мы вместо этого запрограммируем работу игровой приставки, а потом будем запускать на ней уже сделанные игры?

Вашей задачей будет реализовать:

1) Центральный процессор (2A03 CPU, восьмибиточка!)

2) Графический процессор (2C02 PPU)

3) Оперативную память (у нас будет аж целых 32 KB) и режимы адресации центрального процессора

4) Ввод-вывод (мы же хотим играть на джойстиках, верно?)

5) Звуковой процессор (2A03 APU, часть центрального процессора)

Вишенкой на торте будет язык программирования Rust, который не уступает в производительности таким старичкам, как С и С++, а его окружение не позволит скомпилироваться программе, которая может упасть. Пора забыть про падение программ по нулевому указателю!

Инструментарий: Rust, Cargo, Git.

 

Мастерская № 3 "Интерпретатор LOGO"

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

В мастерской будем изучать основы языка программирования C и базовые алгоритмы, какие именно - зависит от участников мастерской. К качестве проекта, как можно судить по названию, предлагается написать интерпретатор языка LOGO. Однако, если участники активизируются и придумают посильный проект, возможна будет его реализация.

Требования: 5-8 класс, желание работать.

Инструментарий: windows, visual studio.

 

Мастерская № 4 "Система распределённого выполнения задач"

Мастер: Игорь Николаевич Дульцев

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

Вот именно такую систему мы и напишем.

Наш проект будет включать в себя четыре части:

  1. Worker – процесс, который будет выполняться на каждом узле нашего облака, выполнять задачи, следить за их работой, и поставлять результат обратно;
  2. Balancer – процесс, который будет выполняться на специальном узле системы, и будет следить за всем облаком, выбирать наиболее свободные машины, и выполнять на них задачи. Кстати, именно к этому сервису и будут поступать задачи для выполнения
  3. Client – программа-клиент. Именно её будет вызывать пользователь, чтобы выполнить свою задачу в облаке.
  4. Monitor – программа, которая будет заниматься наблюдениями за задачами, наполнением нашего облака, и его общим состоянием.

В процессе мы научимся работать с сетью, операционной системой Linux, системой выполнения задач на ней а также системой её безопасности.

Инструментарий: bash, gcc (компилятор языка C), vim, git.

Мастерская № 5 "Программируем на ЛОГО"

Мастер: Дмитрий Евгеньевич Горбунов

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

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

За время Летней Школы будут подробно разобраны и изучены задачи олимпиад по Лого для 3-7 классов.

Инструментарий: FMSLogo и всё, что покажется нам удобным.

Мастерская № 6 "Программируем на Паскале"

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

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

В качестве бонуса для желающих будет возможность изучить Flash.

Инструментарий: компилятор Паскаля

Мастерская № 7 "Шифруем облака"

Мастер: Василий Колобов

Насколько безопасно отправлять фотографии, переписку и другие важные файлы в облако в открытом виде? Можно ли быть уверенным, что никто кроме вас не получит к ним доступ?
Мы постараемся избавить себя от подобных вопросов, реализовав несколько качественных алгоритмов шифрования, а также приложение для управления зашифрованными файлами в облаках.
В первую очередь ориентируемся на OneDrive, при желании и наличии времени добавим поддержку Dropbox и других облаков.

Инструментарий: C#, Visual Studio

Мастерская  № 8 "Useful Algorithms Organizer и архиватор Хаффмана"

Мастер: Рина Качар

В рамках мастерской будут изучены стандартные  алгоритмы, необходимые всем начинающим программистам. Чтобы чувствовать себя уверенно и не пугаться при упоминании слов и словосочетаний “рекурсия”, “обход графа”, “сложность алгоритма” и “указатель”, мы познакомимся с базовыми алгоритмами, разными видами сортировок и алгоритмами поиска. Также научимся работать с различными структурами данных.  В качестве проекта в мастерской будет реализован органайзер (в каком виде - решим вместе), чтобы не растерять все написанное и пользоваться в дальнейшем.

В качестве проекта будет написан простейший архиватор, в основе которого лежит метод Хаффмана.

Инструментарий: С, Visual Studio.

Мастерская № 9 "Сетевые технологии и Erlang"

Мастер: Сергей Кузькоков

Описание: В этой мастерской мы будем изучать язык Erlang — функциональный язык программирования с динамической типизацией, предназначенный для создания распределенных вычислительных систем. Целью мастерской будет написать свой собственный чат с реализацией какой-нибудь особенности, например, передачей файлов.

План работы будет исходить из уровня учеников, но желательно знание функциональных языков программирования, хотя бы на уровне понимания. Также поощряется умение пользоваться vim.

Инструментарий: Erlang OTP, vim (xUbuntu)

//Для детей со своими ноутбуками можно держать и дистрибутивы Erlang и vim как для Windows, так и для МакОС.

Мастерская № 10 "Project Tracker"

Мастер: Михаил Юрьевич Колодин

При разработке (программного, дизайнерского или иного) проекта всем его участникам (заказчик и разработчик, м.б. и иные роли) нужно:

  • - знать, какие есть требования (техзадание, ТЗ) и править их,
  • - знать, каковы сейчас есть вопросы, хотелки, ошибки, их статус и процесс внедрения, исправления, пр.,
  • - общее состояние дел, карта проекта, м.б. с обсчётом и получением красивой диаграммы ("температуры проекта"),
  • - взаимодействовать между собой,
  • - и оперативно управлять всем этим,
  • - с учётом версий, подпроектов, доступов.

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

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

Работа делится на несколько этапов, но в любом случае освоим самые правильные методы ведения проектов и самый перспективный инструментарий. Сама работа и сервер -- на линуксе. Клиенты -- только браузеры, и всё по сети.

Инструментарий. Linux, Python++, Javascript++, DBMS+MQ?, HTML5, vim, md+, cron, git, м.б. docker+ansible...

Участники. Около 4 человек, умеющих программировать (желательны Python и Javascript), понимающих основы сети и не боящихся экспериментов с новыми инструментами, способных работать самостоятельно и в команде.

Полный текст -- http://www.myke.spb.ru/syp/2015/ssyp-2015-mk-temoutw.md

 

Мастерская № 11 "Node.js ИНН" (Игроки не нужны!)

Мастер: Михаил Витальевич Братусь

Подмастерье: Сергей Корнев

Будем изучать JavaScript, средство создания веб-сервисов и особенности Node.js. В процессе изучения мы будем решать задачи, напишем чатик и перейдем к главному проекту мастерской:

ИНН (Zero Player Game) - это идеальная игра, которая не отвлекает вас от домашней работы и подготовки к тестам. Игровой сервер живёт своей жизнью без вашего вмешательства. Ваш герой (его все-таки нужно будет 1 раз создать и назвать) будет жить, работать и учиться. Вы сможете наблюдать за его достижениями в текстовом виде, в любимом браузере. Однажды созданные герои будут взаимодействовать друг с другом.

Еще раз повторяю: Мастерская не имеет отношения к любителям поиграть в компьютерные игры.

Требование к участникам: Желание учиться. Знание любого языка из списка Java, С, C#, Pascal. Сложность в мастерской - средняя.

Инструментарий: Google Chrome, IDE с поддержкой JavaScript / Node.js

Мастерская № 12 "Processing time"

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

Processing - это основанный на Java язык, главное предназначение которого - упростить работу программиста с графикой, анимацией и интерактивом, при этом оставив в нем всю мощь языка Java. В ходе работы мы узнаем, что это за зверь такой, поделаем всякие красивые графические скетчи, поизучаем основные алгоритмы (куда же без этого?) и напишем какие-нибудь игрушки (2D). При наличии времени и желания можно поделать что-нибудь ещё интересное. Например, позаниматься обработкой данных и их визуализацией или поработать с аудио, написать визуализатор музыки (да, с процессингом все в итоге приходит к графике ^_^). 
В качестве итогового проекта у нас будет какая-нибудь игра, а какая именно мы решим с вами по ходу дела.

Инструментарий: processing, sublime text, возможно eclipse.

Мастерская № 13 "Ассемблер на Лиспе"

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

Ассемблер традиционно считается "уделом избранных", хотя на самом деле язык ассемблера очень прост. Говорят, что лучший способ изучить язык - это реализовать компилятор этого языка. Вот этой задачей мы и займемся. А в качестве языка-основы будем использовать Лисп. Таким образом, перед участниками мастерской стоит тройная задача: освоить ассемблер, освоить Лисп и реализовать простенький ассемблер на Лиспе. Задача непростая, но дорогу осилит идущий!

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

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

Инструментарий: HomeLisp (и, возможно, LispWorks)

Мастерская № 14 "Поисковая машина"

Мастер: Александр Гурьевич Марчук

Подмастерье:

В мастерской будут изучаться: основы программирования на языке C#, элементы клиент-серверных технологий, некоторые подходы к созданию поисковых сервисов. Будет детально изучена схема построения базы данных и словарей, позволяющие реализовывать полнотекстовый поиск. Практическая цель мастерской - создание поисковой машины, позволяющей из большого числа документов по набору ключевых слов или заданным возможным предложениям, получать документы, наиболее соответствующие запросу. Будут использованы: язык программирования C#, Microsoft Visual Studio, словарь русского языка, подборка документов из книги "Хроника Сибирского отделения", база данных ЛШЮП за 15 лет.

Для участия в работе мастерской желательно умение программировать на алгоритмическом языке уровня Паскаль, C.

Мастерская № 15 "Процедурная генерация музыки"

Мастер: Тарасов Антон

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

Всё это будем делать с нуля на С++. Идеально, если вы будете знать определения синуса и косинуса и иметь немного опыта программирования на С или Pascal.Не будет скучной школьной геометрии, только наглядность и классная музыка!

Добро пожаловать!

 

Copyright © 2025
Летняя школа юных программистов