Проектная работа 2 курс (2016)

Материал из Wiki - Факультет компьютерных наук
Версия от 05:06, 22 июня 2016; Ivsavin (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Новости

12.05.2016

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

13.02.2016

Готов небольшой сайт, на котором можно следить за ближайшей контрольной точкой: hack.supply. Также на сайте есть обновляемый список ссылок, которые могут пригодиться для удобной работы над проектами, и форма для подписки на рассылку по разработке онлайн-магазинов. Посмотреть архив рассылки и подписаться также можно тут.

01.02.2016

Готово предварительное распределение по проектным семинарам. Всех пожеланий учесть не удалось, но предпочтения времени проектных семинаров вроде все удовлетворены. Если вы оказались в совсем не подходящей вам части списка, дайте знать, отправив письмо на projects-cs@googlegroups.com.

Если вас нет в списке, то скорее всего вы заполнили форму значительно позже начала 31 января. Теперь в вашу задачу входит поиск себе подходящего ментора и времени занятий. Для этого рассматривайте группы из файла, в которых менее 15 человек. Если у вас не получилось найти подходящее время, пишите на рассылку projects-cs@googlegroups.com.

30.01.2016

Самое главное: заполните форму до 31го января. Все заявки на проекты сохранены и даже если вам не приходило писем или ответов от менторов, всё в порядке. Создайте репозиторий для проекта. Попробуйте самостоятельно написать функцониальные требования к своему проекту, если он не типовой. Распределение по менторам будет готово к началу 4-й недели.

Проекты

Выбор проектов: http://goo.gl/forms/kB5iD7egsY

Поддержка и любые вопросы связанные с проектами: projects-cs@googlegroups.com

Заполните форму, чтобы закрепить за собой тему и ментора. Сделать это нужно до 31 января 2016 года.

Порядок действий для выбора темы и прохождения первой контрольной точки:

  1. Заполните форму. При этом будет отправлено письмо в рассылку менторов.
  2. Семинарист, курирующий выбранную тему, обсуждает с вами детали проекта через почту. После этого он утверждает вашу тему.
  3. Вы создаете репозиторий под ваш проект и отправляете ответом на то же письмо ссылку. В репозитории должен быть README.md с описанием проекта.

Типовые проекты

Требования к типовым проектам описаны примерно и могут меняться в зависимости от ваших текущих навыков, успеваемости и прочих факторов.

Проект: Коллективный блог (Д.Бурмистров)

Сервис коллективных блогов (аналоги: habrahabr.ru, dirty.ru, reddit.com, digg.com). В сервисе есть несколько блогов, в которые пишут пользователи. На главной странице находится лента всех записей всех блогов. Можно просматривать записи одного блога или посты конкретного пользователя. Записи можно комментировать. Обычно комментарии расположены лесенкой (можно видеть, что комментарий является ответом на другой комментарий), комментарии также могут быть и в виде обычной ленты. Пользователи и посты имеют систему рейтингов: пользователь может голосовать за пост или пользователя положительно или отрицательно. Если рейтинг поста ниже определенного уровня - пост не показывается, если рейтинг пользователя ниже определенного уровня, пользователю запрещено писать посты.

Требования

Минимальная функциональность:

  • Можно регистрироваться, делать посты в блоги, комментировать записи
  • Комментарии отображаются в виде ленты
  • Приложение защищено от инъекций к базе

На хорошо

  • Есть система рейтингов, с которой можно взаимодействовать без перезагрузки страницы.
  • Форматирование постов с использованием WYSIWYG-редактора
  • Приложение защищено от XSS-атак
  • Защита от регистрации ботов (CAPTCHA)

На отлично

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


Проект: Онлайн-магазин (И.Савин)

Сервис состоит из: витрины/каталога товаров, разбитых по категориям; корзины, в которую пользователь может добавлять покупки; для электронных товаров реализована возможность скачать (или получить по почте) и оплата с помощью PayPal (наиболее простой для интеграции, для проекта достаточно показать работу с разработческим апи PayPal) или другими системами оплаты. Для неэлектронных товаров должна быть возможность указать их наличие, при покупке количество изменяется. В магазине могут быть промоакции: скидка при оформлении заказа по промокоду, скидка при заказе на определенную сумму, временная скидка на конкретную категорию товаров.

Требования

Минимальная функциональность:

  • Витрина магазина с категориями
  • Корзина пользователя, в которую можно добавлять или удалять товары.
  • После оформления заказа, письмо с данными о заказе и пользователе отправляется на почту владельца магазина
  • Приложение защищено от инъекций к базе

На хорошо

  • Приложение работает с неэлектронными товарами, меняется количество доступного товара.
  • Приложение защищено от XSS-атак.

На отлично

  • В приложении есть возможность оплатить с помощью сервисов онлайн-платежей.
  • Сервис готов к запуску (по чеклисту выполнено все или почти все)


Проект: Имиджборд (Ф.Строк)

Система анонимных форумов с возможностью прикреплять к сообщениям изображения (аналоги: iichan.hk). Сервис состоит из набора разделов (досок), в которых пользователи могут начать обсуждение (тред) и писать комментарии в существующих тредах. Экран доски отображает список тредов и последние N комментариев, треды отсортированы по дате обновления. Пользователь идентифицируется по IP и cookie, но для неадминистратора не должно быть возможности ассоциировать сообщения с одним пользователем. Администратор должен иметь возможность создавать/удалять доски, редактировать и удалять сообщениях, также должна быть возможность удалить разом все сообщения определенного пользователя и запретить ему писать новые.

Требования

Минимальная функциональность:

  • В приложении можно создавать треды и комментарии.
  • Можно прикреплять к сообщениям изображения.
  • Приложение защищено от инъекций к базе, XSS-атак.

На хорошо

  • Находясь на странице треда, можно подгрузить новые ответы, если они есть без перезагрузки страницы.

На отлично

  • Реализованы все функции, доступные администратору (см. описание)
  • В реальном времени отображается количество просматривающих доску или тред
  • Сервис готов к запуску (по чеклисту выполнено все или почти все)

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

Сервер и клиент для мгновенного обмена сообщениями (аналоги: whatsapp, telegram, viber). Сообщения должны быть зашифрованы перед передачей на сервер, сервер не должен иметь возможности расшифровать их. Также должна быть возможность передать изображение. Логично делать мобильный клиент, но можно ограничиться и веб-приложением.

Требования

Минимальная функциональность:

  • Регистрация в сервисе, добавление пользователей в контакт-лист
  • Обмен сообщениями между двумя пользователями, которые добавили друг друга в контакт-листы
  • Трафик сервиса зашифрован (см. описание)

На хорошо

  • Групповые чаты
  • Добавление изображений к сообщениям

На отлично

  • Сервис выдерживает значительные нагрузки (комнаты по 200 пользователей)


Проект: Трекер задач в реальном времени (А.Красавина)

Система для управления задачами, которая отображает изменения в реальном времени для всех, кто в данный момент открыл сайт (аналог: trello). Основной экран представляет из себя набор областей, между которыми можно перетаскивать карточки задач. При этом, когда карточка меняет область или порядок в области, это изменение отображается у всех, кто в данный момент открыл основной экран. Аналогично изменение атрибутов карточки (заголовок, комментарии, исполнитель и тд) отображается в реальном времени.

Требования

Минимальная функциональность:

  • Создание проектов и задач.
  • Комментирование задач.
  • Назначение исполнителя и срока сдачи.
  • Изменения отображаются в реальном времени для всех пользователей, просматривающих проект.

На хорошо

  • Реализована возможность перетаскивания задач.
  • Фильтрация задач по имеющимся параметрам и диапазонам дат (создания, дедлайна).

На отлично

  • Сервис выдерживает значительные нагрузки (по 200 пользователей)


Проект: Карточная онлайн-игра (Ф.Короткий)

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

Требования

Минимальная функциональность:

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

На хорошо

  • В реальном времени видно, какие карточки просматривает и перекладывает оппонент
  • В режиме поединка можно отправить сообщение оппоненту в любое время
  • Приложение защищено от инъекций, XSS-атак и нарушений правил игры.

На отлично

  • Сервис может выдержать 100 проходящих одновременно боев.

Специальные проекты

Проект: Сетевой шпион (С.Абрамов)

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

Требования На удовлетворительно Минимальная функциональность: Хранение информации о пакетах, внешних и внутренних ip. Минимальный веб-интерфейс с какой-то статистикой.

На хорошо Хранение информации о клиентах (браузеры, мессенджеры и тд), доменах, ip и тд и их связи между собой. Динамически обновляемая статистика.

На отлично Развернутый веб-интерфейс с красивой, динамически обновляемой статистикой, реализацией запросов через интерфейс (галочки-ползуночки). Продвинутые возможности сниффинга.

Проект: Сервис стриминга видео (М.Чичварин)

Нужен аналог Твича (или Перископа). Сервис состоит из клиентов, которые осуществляют стриминг и клиентов, которые стримы получают, а также серверной части, на которой хранится пользовательская база.

Требования

Минимальная функциональность:

- Регистрация пользователей, возможность создания и просмотра стримов.
- Использование для разработки существующих веб-фреймворков.
- Сервис предоставляет изображение без синхронного звука.

На хорошо

- Использован самописный веб-сервер и шаблонизатор (если нужно).
- Есть синхронный стриминг звука.

На отлично

- Сервис может выдержать 10 трансляций одновременно, которые смотрят до 100 клиентов.
- Релизована “плавная деградация” при увеличении нагрузки на сервер или наличия сетевых проблем на стороне клиента - уменьшение битрейта, частоты обновления картинки.

Проект: Модуль личных календарей сотрудников ВШЭ (С.Кутылев)

Проект: Модуль парсинга страниц с грантами различных организаций (С.Кутылев)

Подробности у Кутылева Сергея Александровича (skutylev@hse.ru)


Свои проекты (как выбрать тему?)

Обязательными требованиями к проекту являются:

  • Взаимодействие с сетью (клиент-серверная архитектура)
  • Использование реляционных СУБД

Ссылки для поиска интересных тем проектов и направлений:

Контрольные точки

Оценка: За каждый модуль можно получить максимум по 10 баллов, итоговая оценка - сумма всех баллов пополам. В скобках указан максимальный балл, но в зависимости от проекта могут быть незначительные отличия в пределах 1 балла в разные контрольные точки без изменения итоговой суммы. За вовремя успешно пройденную контрольную точку дается 100% баллов.

За каждый просроченный день снимается 10% баллов за контрольную точку до 40%, далее не баллы не снимаются и начисляются в любое время в случае успешно пройденной контрольной точки.

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

Расчет итоговой оценки:

Округления всегда в большую сторону.

Промежуточная оценка за 3-й модуль:

M3 = 0.1 * КТ1 + 0.2 * КТ2 + 0.2 * КТ3 + 0.3 * КТ4 + 0.2 * КТ5

Промежуточная оценка за 4-й модуль:

M4 = 0.2 * КТ6 + 0.3 * КТ7 + 0.4 * КТ8 + 0.1 * КТ9

Итоговая оценка:

И = (M3 + M4) / 2


В модуле будет несколько контрольных точек:

Третий модуль:

3-ая неделя (КТ1):

  • Тема проекта выбрана и согласована с ментором.
  • Создан репозиторий с README-файлом с описанием проекта, полным описанием функциональности, предполагаемыми техническими средствами, планом работ.

5-ая неделя (КТ2):

  • Есть примерные диаграммы деятельности и последовательности основных функций программы.
  • Разработан прототип интерфейса.

7-ая неделя (КТ3):

  • Реализована ключевая функциональность взаимодействия с сетью через интерфейс приложения.
  • Разработана заглушка сервера.

9-ая неделя (КТ4):

  • Есть полнофункциональный прототип работающий с сетью, взаимодействующий с сервером.

11-ая неделя (КТ5):

  • Подготовлен промежуточный отчет о проделанной работе.
  • Текущий проект удовлетворяет всем пунктам чек-листа (фронтенд, работа с сетью; чеклист будет позже)

Четвертый модуль:

2-ая неделя (КТ6):

  • Составлена концептуальная схема БД.

4-ая неделя (КТ7):

  • БД нормализована (приведена к 3НФ).
  • БД реализована средствами ORM.
  • Начата реализация логики работы бекенда.

7-ая неделя (КТ8):

  • Реализована логика работы бекенда.
  • Бекенд взаимодействует с фронтендом.
  • В приложении реализовано кеширование затратных процессов, если это предусмотрено заданием.

10-ая неделя (КТ9):

  • Подготовлен отчет о проделанной над проектом работе
  • Текущий проект удовлетворяет всем пунктам чек-листа.