Мастерские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 "Система распределённого выполнения задач"
Мастер: Игорь Николаевич Дульцев
Вы хотели написать сетевой проект, но не хотите писать чатик на Дельфи? Правильно, я тоже не хочу.
В современном мире в больших компаниях бывает так, что нужно выполнить очень много различных задач. Часто эти задачи довольно сложные, и выполнить их на своём компьютере нельзя – нужен высокопроизводительный сервер. Так как среднестатистический работник в такой компании – человек очень занятой, то он не хочет думать, на каком конкретно сервере ему выполнить его задачу, а просто хочет, чтобы она где-то выполнилась, а результаты выполнения оказались у него через некоторое время.
Вот именно такую систему мы и напишем.
Наш проект будет включать в себя четыре части:
- Worker – процесс, который будет выполняться на каждом узле нашего облака, выполнять задачи, следить за их работой, и поставлять результат обратно;
- Balancer – процесс, который будет выполняться на специальном узле системы, и будет следить за всем облаком, выбирать наиболее свободные машины, и выполнять на них задачи. Кстати, именно к этому сервису и будут поступать задачи для выполнения
- Client – программа-клиент. Именно её будет вызывать пользователь, чтобы выполнить свою задачу в облаке.
- 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.Не будет скучной школьной геометрии, только наглядность и классная музыка!
Добро пожаловать!
