====== Список проектов ====== ==== 1. Инструмент для составления словарей на английском языке ==== Требуется реализовать инструменты, которые бы позволяли: * составлять документы с правильной транскрипцией и переводом выбранных преподавателем слов с помощью плагина для Google Chrome * составлять набор слов в lingvaleo из docx с помощью консольного приложения * обновлять существующие наборы (имя набора, состав набора) с помощью консольного приложения Технологии: Python3, Flask, Mongodb, Docker, js **deliverables**: Плагин для Google Chrome, который позволяет по клику добавлять слово в документ, ищет при этом транскрипцию слова и его перевод (или позволяет внести эти данные самостоятельно) Консольное приложение для Linux, которое позволяет из документа docx определенного формата составить набор слов в Lingua Leo, а также обновить этот набор. ==== 2. Онлайн-курс на Stepik по работе в Google Docs и Google Tables ==== Требуется создать онлайн-курс на платформе Stepik.org для работы с Google Docs и Google Tables. В качестве теории можно загружать текстовую/видео информацию. В качестве задач необходимо создать автоматически проверяемые задания, при выполнении которых пользователь должен работать в Google Docs и Google Tables, а на Stepik система проверки должна проверять правильность его работы. Технологии: Python3, Flask, Mongodb, Docker, js **deliverables**: Набор автоматически проверяемых заданий в онлайн-курсе по работе в Google Docs и Google Tables, набор теоретических степов. ==== 3. Telegram bot для для студентов 1го курса ==== Требуется создать telegram bot'a для студентов 1го курса. Вопросы, которые должны быть освещены ботом (информация касается предметов Информатика и Программирование): * "Я не защитил л.р./не сдал курсовую в срок - что мне делать?" * "Попал на допсессию - что делать?" * "Хочу улучшить оценку после сессии - что делать?" (вопрос касается дня качества) * Расчет баллов по рейтинговой системе для студента/отображение информации о том, что нужно сделать на конкретную оценку * Сроки защит * и др. Технологии: Python3, Flask, Mongodb, Docker, js **deliverables**: Набор скриптов для сборки docker образа и запуска docker контейнера с Telegram bot'ом. ==== 4. Автоматическая проверка содержимого пуллреквеста у студента ==== На данный момент есть инструмент, который позволяет после создания пуллреквеста проверить пуллреквест на соответствие определенным правилам. Требуется дополнить этот инструмент проверками содержимого пуллреквестов: * Проверять содержимое пуллреквеста на степике: автоматически подставлять код студента в соответствующую задачу на степике и проверять, была ли эта задача успешно решена * Закрывать пуллреквест студента с соответствующей формулировкой, если пуллреквест не прошел. Также есть инструмент, который позволяет посмотреть статистику студента 1го курса на Stepik. Требуется дополнить этот инструмент отображением статистики: * Показывать дату создания каждого пуллреквеста по ЛР, дату мержа пуллреквеста преподавателем * Показывать историю пуллреквеста после нажатия соответствующей кнопки (Например, "Показать больше") Технологии: Python3, Flask, Mongodb, Docker, js **deliverables**: Дополнения уже готовых веб-приложений, позволяющие следить за статистикой в Гитхаб и проверять содержимое пуллреквестов. ==== 5. Инструмент выдачи заданий ==== Для защиты ЛР студент должен получить задание от преподавателя по соответствующей ЛР. Необходимо создать веб-приложение, которое позволяет: * Авторизоваться через Github аккаунт как студент, или как преподаватель * Отобразить для студента его прогресс: количество Л.Р., которые были защищены студентом, количество попыток защиты данной Л.Р. * Получить задание к соответствующей л.р. (задание должно быть не тем же, что студент получал ранее) * Прикрепить фотографию решенного задания/ссылку на исходный код в репозитории/исходный код * Послать статус задания: Решено (можно проверять), Не решено * Преподаватель должен видеть таблицу студентов: ФИО, статус каждого студента: Получил Задачу (отображать номер л.р.), Не получил, Решил, Не Решил. При этом должна быть возможность получить доп информацию о студенте при нажатии кнопки "Подробнее": информация о всех попытках. * Должна быть возможность отслеживать изменение фокуса приложения. * Преподаватель может изменить статус задачи на Зачтено и Не Зачтено * В начале пары приложение должно автоматически становиться доступным для просмотра заданий студентом, в конце пары - недоступным. Преподаватель должен иметь возможность управлять этим. Технологии: Python3, Flask, Mongodb, Docker, js **deliverables**: Веб-приложение, позволяющее студенту получить задание и узнать свой статус и позволяющее преподавателю следить за прогрессом студентов. ==== 6. Инструмент для сбора метеорологических данных ==== Необходимо разработать консольное приложение, которое позволит собирать данные о погоде (температуру, сила и направление ветра, влажность, облачность) в указанном городе. Приложение должно: - собирать информацию за определенный промежуток времени; - получать информацию с заданным шагом (почасовая, дневная, за месяц, и т.д.); - сохранять данные в виде таблицы; - при отсутствии каких-либо данных проводить интерполяцию данных; - создавать статистику данных (среднее за выбранный интервал, минимум и максимум, моду); - рисовать график погоды за выбранный период времени. Технологии: Python3 **deliverables**: Консольное приложение, на вход которому поступает город, в котором необходимо собирать данные, начальная и конечная дата, и частота сбора данных. Далее приложение обращается к погодному сервису (на выбор выполняющего), который может предоставить необходимые данные, и формирует таблицу с данными и файл со статистикой по данным. ==== 7. Визуальный редактор карт для симулятора Duckietown ==== Необходимо разработать веб- / кроссплатформенное GUI-приложение для создания и редактирования карт для симулятора среды Duckietown в формате yaml. Требуемая функциональность: - открытие, отображение и сохранение карт, - палитра возможных блоков, - отмена изменений, - масштабирование карты, - копирование фрагментов карты - экспорт карты в png, - вычисление характеристик карты (протяженность дорог, количество перекрестков, наличие тупиков ...), - *вычисление количества необходимых материалов для того, чтобы карту воспроизвести в виде полигона (сколько нужно какой изоленты, блоков, знаков и т.д.). Технологии: YAML, Python, Docker(в небольших количествах), Duckietown. **deliverables**: приложение, позволяющее создавать / редактировать существующие карты в комфортном режиме + эмулятор нормально функционирует с такими картами. ==== 8. Генератор карт для симулятора Duckietown ==== Необходимо создать сценарий командной строки, позволяющий генерировать случайные карты для симулятора Duckietown исходя из набора параметров: - размер поля, - количество перекрестков, - ограничение на тип перекрестков, - количество петель, - количество пешеходов на прямой участок дороги, - количество знаков, - максимальная длина дороги между перекрестками, - *разные схемы компоновки дорог При этом, генерируемые карты должны быть не просто набором случайных блоков, а максимально корректными с точки зрения дорожного движения. Также необходимо иметь возможность статической валидации (проверки корректности соответствия формату) для сгенерированных карт. Технологии: YAML, Python, Docker(в небольших количествах), Duckietown. **deliverables**: приложение командной строки, позволяющее сгенерировать корректную карту ( == от которой не ломается симулятор Duckietown) по набору параметров. ==== 9. Визуализация экспериментов для симулятора Duckietown ==== Необходимо разработать приложение ( или расширить возможности симулятора Duckietown), которое позволит фиксировать видеозаписи проводимых экспериментов. Требования: - формат видео mp4, - эксперимент фиксируется в конфигурации вид сверху, - все боты нумеруются, - для каждого бота отображается траектория, - справа от поля (карты) на однотонном фоне отображаются - счетчик времени модели, - по каждмоу боту: - текущие координаты (x y + углы ориентации) , - пройденное расстояние, - количество времени за пределами разметки ( == выезд за пределы проезжей части), - количество времени простоя ( == скорость бота == 0), - *экспорт всех данных симуляции из формате rosbag + прикладывать само видео в rosbag. Технологии: Python, Docker, Duckietown, ROS. **deliverables**: патч, либо отдельное приложение, позволяющее фиксировать результаты моделирования в симуляторе Duckietown на видео. ==== 10. Составитель оглавлений / указателей терминов по курсу в Stepik ==== Задача: создать приложение, которое будет автоматически составлять оглавление / алфавитный указатель для курса по Stepik. Функциональность: * авторизация с помощью OAuth; * получение данных онлайн-курса из Stepik; * парсинг, стемминг и фильтрация шумовых слов для текстовых степов; * выделение заголовков для текстовых степов; * составление оглавления (модули, уроки, заголовки степов); * составление алфавитного указателя терминов (список терминов - каждый термин являетяя ссылкой на степ, где он был упомянут); * выделение звуковой дорожки видео; * распознавание текста звуковой дорожки; * расширение алфавитного указателя распознанным текстом; * формирование html-страницы с оглавлением и указателем. Технологии: Python, Stepik API. **deliverables**: приложение командной строки, формирующее html оглавления и указателя. ==== 11. Задачи на iverilog ==== Опираясь на книгу [[http://easyelectronics.ru/files/Book/digital-design-and-computer-architecture-russian-translation.pdf |"Цифровая схемотехника и архитектура компьютера"]] необходимо разработать ряд задач на программирование электронных устройств в IVerilog. * создание самих задач (код эталонных решений, код неверных решений, код test_bench - проверочная программа на IVerilog); * скрипты для сборки студенческих решений, * скрипт для запуска студенческих решений и проверки их через test_bench, * скрипт для прогона интеграционных тестов ( == протестить работу каждой задачи на ее эталонных и неверных решениях), * (hard) рандомизация условий задач и проверок; Задачи для реализации: * N-входовые вентили (И, ИЛИ, XOR, NOR, NAND), * светофор, * двойной светофор на Х-образном перекрестке, * двойной светофор на Т-образном перекрестке, * N-входовой мультиплексор, * N-входовой демультиплексор, * .... [[http://easyelectronics.ru/files/Book/digital-design-and-computer-architecture-russian-translation.pdf#page=460|Описание самого Verilog]]. Технологии: IVerilog, Docker, Python, Bash. **deliverables**: набор задач (формулировка, решения, проверочный код (test bench), а также скрипты для проверки решений и прогона эталонных решений. ==== 12. Расширение Chrome для улучшения UI github ==== Реализуйте расширение (расширения) для браузера Chrome, позволяющее улучшить удобство для Github. Задачи: * создание репозиториев для групп МОЭВМ (необходимо указать год и количество групп для каждого направления) с защищенной веткой master (т.е. веткой, в которую нельзя коммитить), * отображение кнопки "Добавить задачу " на странице проекта (agile-доски), * кнопка для копирования задачи (на странице просмотра задачи), * отображение комментариев к задачам при их просмотре на странице проекта, * отображение дат последних коммитов всех пользователей при просмотре главной страницы репо, * отображение наличия конфликта на иконке пулл-реквеста при просмотре в списке PR, * пометка карточек без связанных PR на странице проекта, * пометка карточек с конфликтом в связанном PR на странице проекта, Технологии: github api, javascript, html, css. **deliverables**: готовое к публикации расширение. ==== 13. Инструмент для проверки человека на присутствие в БД ==== Необходимо разработать консольное приложение обработки видеопотока, определения лиц в кадре, и проверки лица на присутствие в БД изображений. Задачи: * реализовать обработку потокового видео * реализовать алгоритмы обнаружения лиц на изображении * реализовать алгоритм сопоставления обнаруженных лиц и лиц из БД * генерация отчета по работе Технологии: Python3, OpenCV, Keras, TensorFlow **deliverables**: Консольное приложение, которое при запуске должно получать снятое видео или потоковое видео с камеры. Во время работы определяет наличие людей из БД в кадре. В конце формирование отчета, который должен включать список лиц, которые были обнаружены и время их первого и последнего появления в кадре, количество неопознанных лиц. ==== 14. Обфускатор кода написанного на языке C ==== Необходимо разработать консольное приложение для обфускации написанного кода. Информация по обфускации: http://citforum.ru/security/articles/obfus/ Приложение должно получать уже написанный код на языке С и проводить обфускацию. Должна быть настройка степени обфускации и выбор того, какие типы обфускации используются. Технологии: Python3 **deliverables**: Консольное приложение? получающее файл с расширением .c и параметры обфускации. Параметрами обфускации могут быть: переименование переменных, изменение представление чисел, добавление лишних ничего не делающих строчек кода, замена константных выражений вызовом функций, а также степень обфускации (например, сколько лишних строчек добавляется, размер новых имен переменных, и.т.д.). По завершении программы программа создает новый файл с запутанным кодом. ==== 15. Сервис по проверке документов на соответствие шаблону ==== Необходимо разработать web-сервис, позволяющий проверить соответствие документа и документа шаблона. разработать разметку для документа шаблона (примером такого шаблона могут быть шаблоны оформления отчетов с сайта etu.ru) * разработать алгоритмы анализа текста и метаданных файла * сравнение документа с шаблоном (размер шрифтов, цвет текста, отступы, нумерация страниц, и.т.д.) * реализовать формирование отчета по итогам сравнения Технологии: Python3, Flask, js **deliverables**: Сервис должен получать 2 документа (форматов docx, doc, odt, rtf. будет плюсом если будет реализовано и для pdf) один из которых является документом-шаблоном. Далее сервис проводит сравнение первого документа на соответствие шаблону представленному во втором документе. При несоответствии должна выводиться информация о том, что именно и где не соответствует.