# Проектная практика

## Задание на проектную практику

### Введение

Задание на проектную (учебную) практику разработано для студентов первого курса, обучающихся по направлениям подготовки, связанным с информационными технологиями и информационной безопасностью. Трудоёмкость практики составляет 72 академических часа. Задание может выполняться **индивидуально** или **в составе группы до 3 человек**. Для управления версиями будет использоваться Git, для написания документации — Markdown, а для создания статического веб-сайта — языки разметки HTML и CSS, но опционально допускается использовать генераторы статических сайтов, такие, как Hugo. В качестве платформы для размещения репозиториев допустимо использовать как [GitHub](https://github.com/), так и [GitVerse](https://gitverse.ru/), что обеспечивает гибкость в выборе инструментов. Также предусмотрено взаимодействие с организациями-партнёрами, включая стажировки, которые будут приниматься к зачёту при оценке.

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

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

---

### 1. Базовая часть задания

1. **Настройка Git и репозитория:**
   - Создайте личный или групповой репозиторий на [GitHub](https://github.com/) или [GitVerse](https://gitverse.ru/) на основе предоставленного [шаблона](https://github.com/mospol/practice-2025-1).
   - Освойте базовые команды Git: клонирование, коммит, пуш и создание веток.
   - Регулярно фиксируйте изменения с осмысленными сообщениями к коммитам.
   - **Ожидаемое время:** 5 часов.

2. **Написание документов в Markdown:**
   - Все материалы проекта (описание, журнал прогресса и др.) должны быть оформлены в формате Markdown.
   - Изучите синтаксис Markdown и подготовьте необходимые документы.
   - **Ожидаемое время:** 5 часов.

3. **Создание статического веб-сайта:**
   - Вы можете использовать **только HTML и CSS** для создания сайта, если освоение более сложных инструментов представляется трудным. Это делает задание доступным для студентов с базовым уровнем подготовки.
   - **Желательно** применять генераторы статических сайтов, такие как Hugo (рекомендуется), для упрощения процесса и получения дополнительных навыков. В случае выбора Hugo можно воспользоваться инструкциями из [Hugo Quick Start Guide](https://gohugo.io/getting-started/quick-start/).
   - Создайте новый сайт об основном проекте по дисциплине «Проектная деятельность», выберите тему и добавьте контент. Оформление и наполнение сайта должны быть уникальными (не совпадать с работами других студентов) более, чем на 50%.
   - Сайт должен включать:
     - **Домашнюю страницу** с аннотацией проекта.
     - **Страницу «О проекте»** с описанием проекта.
     - **Страницу или раздел «Участники»** с описанием личного вклада каждого участника группы в проект по «Проектной деятельности».
     - **Страницу или раздел «Журнал»** с минимум тремя постами (новостями, блоками) о прогрессе работы.
     - **Страницу «Ресурсы»** со ссылками на полезные материалы (ссылки на организацию-партнёра, сайты и статьи, позволяющие лучше понять суть проекта).
   - Оформите страницы сайта графическими материалами (фотографиями, схемами, диаграммами, иллюстрациями) и другой медиа информацией (видео).
   - **Ожидаемое время:** изучение и настройка — 10–14 часов, дизайн и наполнение — 4–8 часов.

4. **Взаимодействие с организацией-партнёром:**
   - Организуйте взаимодействие с партнёрской организацией (визит, онлайн-встреча или стажировка).
   - Участвуйте в профильных мероприятиях по тематике проекта и профилю организации-партнёра (конференции, выставки, митапы, семинары, хакатоны и др.).
   - **Уточнение:** Взаимодействие осуществляется через куратора проекта по проектной деятельности, закреплённого за вашим проектом, и ответственного по проектной практике, закреплённого за учебной группой.
   - Напишите отчёт в формате Markdown с описанием опыта, полученных знаний и связи с проектом. Отчёт добавьте в репозиторий и на сайт.
   - **Важно:** Стажировки и экскурсии в организации-партнёры будут приниматься к зачёту и учитываться при оценке, что мотивирует к активному участию.
   - **Ожидаемое время:** взаимодействие — 4 часа, написание отчёта — 4 часа.

5. **Отчёт по практике**
   - Составьте отчёт по проектной (учебной) практике на основании шаблона (структуры), размещённого в папке reports. Шаблон (структура) приведён в файле [practice_report_template.docx](reports/practice_report_template.docx).
   - Разместите отчёт в репозитории в папке reports с именем «Отчёт.docx» или «report.docx».
   - Сформируйте PDF-версию отчёта и также разместите её в папке reports в репозитории.
   - Загрузите оба файла отчёта (DOCX и PDF) в СДО (LMS) в курсе, который будет указан ответственным за проектную (учебную) практику.

---

### 2. Вариативная часть задания

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

#### 1. Кафедральное индивидуальное отдельное задание

- Выполните все задачи базовой части.
- Выполните кафедральное индивидуальное отдельное задание.
- Интегрируйте результаты индивидуального задания и отчёт по нему в репозиторий и сайт, созданные в базовой части.
- **Ожидаемое время:** 32–40 часов.

---

#### 2. Практическая реализация технологии

- Выполните все задачи базовой части.
- Для достижения объёма в 72 часа выберите один из следующих проектов:

1. Выберите любую технологию (тематику) из списка, представленного в репозитории [codecrafters-io/build-your-own-x](https://github.com/codecrafters-io/build-your-own-x). По согласованию с ответственными за практику можно использовать другой источник проектов.
2. Согласуйте внутри команды выбранную тему. Выберите стек технологий (подсказки также есть в репозитории).
3. Проведите исследование: изучите, как создать выбранную технологию с нуля, воспроизведите практическую часть.
4. Создайте подробное описание в формате Markdown, включающее:
   - Последовательность действий по исследованию предметной области и созданию технологии.
   - Напишите техническое руководство по созданию этой технологии, ориентированное на начинающих.
   - Включите в руководство:
     - Пошаговые инструкции.
     - Примеры кода.
   - Иллюстрации (картинки, диаграммы, схемы) в количестве от 3 до 10 штук, вставленные в текст для наглядности.
   - Поместите результаты исследования и руководства в общий Git-репозиторий.
5. Создайте техническое руководство или туториал по созданию проекта на выбранную тему. Для визуализации архитектуры, процессов и прочего используйте разные типы диаграмм UML, схемы, графики, таблицы.
6. Сделайте модификацию проекта согласно полученным знаниям и навыкам в течение года (творческий пункт, самостоятельно выбираете в какой части модифицировать). Описать в технической документации модификации.
7. Сделайте видео презентацию выполненной работы (цель, задачи, как решали, демонстрация работоспособного результата).
8. Задокументируйте проект в репозитории в формате Markdown и представьте его на сайте в формате HTML.
9. Подготовить финальный отчет (в хронологической последовательности опишите этапы работы, отдельно должны быть представлены индивидуальные планы каждого участника).

- **Пример 1:**
  - Для технологии «собственный интерпретатор» опишите этапы изучения синтаксиса, парсинга и выполнения кода, добавив схему работы интерпретатора и примеры кода.

- **Пример 2:**
  - Для технологии «собственный HTTP-сервер» создайте руководство с шагами по настройке сокетов, обработке запросов и отправке ответов, дополнив текст схемой взаимодействия клиент-сервер.

- **Ожидаемое время:** 32–40 часов.

#### 3. Вклад в открытый проект на GitHub или GitVerse

- Выполните все задачи базовой части.
- Найдите открытый проект на GitHub или GitVerse, имеющий не менее 50 звёзд (Stars), изучите его код и внесите вклад (например, исправьте баг или добавьте новую функцию).
- Документируйте свой вклад в Markdown и добавьте описание в репозиторий.
- **Ожидаемое время:** 32–40 часов.

---

### Структура git-репозитория

В рамках практики следует придерживаться заданной структуры git-репозитория, приведённой в файле [git_structure.md](git_structure.md).

---

### Контрольные сроки

Сроки контрольных мероприятий приведены в файле [terms.md](terms.md).

---

### Литература и интернет-ресурсы

1. Введение в CSS верстку:
   https://developer.mozilla.org/ru/docs/Learn_web_development/Core/CSS_layout/Introduction
2. DevTools для «чайников»:
   https://habr.com/ru/articles/548898/
3. Элементы HTML:
   https://developer.mozilla.org/ru/docs/Web/HTML/Element
4. Основы HTML:
   https://developer.mozilla.org/ru/docs/Learn_web_development/Getting_started/Your_first_website/Creating_the_content
5. Основы CSS:
   https://developer.mozilla.org/ru/docs/Web/CSS
6. https://doka.guide/
7. Официальная документация Git:
   https://git-scm.com/book/ru/v2
8. https://skillbox.ru/media/code/chto_takoe_git_obyasnyaem_na_skhemakh/
9. Бесплатный курс на Hexlet по Git:
   https://ru.hexlet.io/courses/intro_to_git
10. Уроки по Markdown:
    https://ru.hexlet.io/lesson_filters/markdown

---

### Информация для сведения

- Общие задачи занимают 32–40 часов, дополнительные проекты добавляют 32–40 часов, что в сумме соответствует 72 часам.
- Выбор между индивидуальной и групповой работой (до 3 человек) позволяет адаптировать задание под ваши предпочтения.
- Возможность использовать как GitHub, так и GitVerse обеспечивает гибкость и доступ к современным инструментам.
- Исследовательские проекты и технические руководства, основанные на технологиях из [codecrafters-io/build-your-own-x](https://github.com/codecrafters-io/build-your-own-x), помогут развить навыки анализа, программирования и документирования.
