Данный проект содержит руководство по выполнению заданий, а также тестовое задание для опробования каждого из этапов.
Для выполнения задач необходимо установить следующий набор инструментов:
- jdk 8 - виртуальная машина Java (JVM) с набором инструментов для разработчика.
- git - система контроля версий
- IntelliJ Idea - IDE для разработки на Java
Для каждого из разделов курса создан репозиторий в GitHub. Для сдачи заданий потребуется зарегистрироваться на этом сервисе, а также базовые знания работы с инструментом контроля версий git.
Каждое задание сдается через Pull Request, т.е. через запрос на принятие изменений в репозиторий. В реальности преподаватель не будет принимать эти изменения (т.е. изменять базовый репозиторий), такой способ нужен для отслеживания прогресса студента и базовой задания на соответствия тестам (если они написаны для задачи)
За каждый раздел, сдав все задачи, максимально можно получить 20 баллов. Также после всех разделов будут приведены дополнительные задачи, которые в среднем оцениваются большим баллом, чем задачи в разделах, но требуют гораздо больше времени на их выполнение. Каждая из таких задач будет оцениваться каким-то количеством баллов (около 10).
Для получения зачета студенту необходимо набрать 200 баллов, минимум 20 из которых должны быть набраны за решение дополнительных задач. Таким образом, студент должен выполнить минимум две задачи из дополнительного раздела.
Все задачи будут выбираться самим студентом, причем нельзя выбирать задачи, которые уже были выбраны другим студентом. Студенты, набравшие большее число баллов за основную программу курса имеют больший приоритет в очереди за заданиями. При совпадении количества баллов, приоритет имеет тот, кто раньше сдал последнюю задачу.
В информации по курсу будут приведены ссылки на группу в GitHub'е, в которой созданы все репозитории с заданиями. Для подготовки сдачи задания необходимо сделать fork нужного репозитория. Fork - это копия репозитория, сделанная с целью внесения в проект изменений.
Каждый репозиторий содержит набор задач для самостоятельного выполнения студентом.
Проект можно напрямую добавить в IntelliJ Idea (File -> New -> Project from Version Control -> Git), указав ссылку на репозиторий в GitHub. Добавив таким образом проект, в окне проекта можно будет увидеть все задачи данного раздела (task01, task02, ...)
Каждая задача должна сдаваться в отдельном Pull Request'е. Например, если в разделе 5 задач, то студент должен создать 5 Pull Request - по одному на каждую задачу.
Решение каждой задачи условно разобъем на следующие этапы:
- Создание новой ветки
- Решение задачи
- Тестирование решения (если предусмотрено)
- Создание коммита и отправка его в репозиторий
- Создание Pull Request.
Перед созданием новой ветки необходимо убедиться, что текущая ветка - master. В IntelliJ Idea текущая ветка по-умолчанию отображается в правом нижнем углу напротив Git:
Если вы пользуетесь консолью при работе с Git, то наберите:
git branch
Эта команда отобразит текущую ветку
Для создания новой ветки в IntelliJ Idea достаточно кликнуть на Git: master -> New Branch и затем ввести имя новой ветки (для удобства веткам лучше давать имена, созвучные с задачей, например, task01)
В консоли:
git checkout -b task01
В каждой задаче присутствует Readme файл с детальным описанием задачи. Иногда задачи могут содержать уже какой-то код, а иногда все придётся выполнить "с нуля".
Не забывайте форматировать ваш код. Можно воспользоваться правилами, описанными в IntelliJ Idea по-умолчанию либо воспользоваться какой-либо из существующих конвенций. IntelliJ Idea содержит инструмент по автоматическому форматированию кода. Воспользоваться им можно, нажав Code -> Reformat Code, либо сочетанием клавиш Ctrl+Alt+L.
Код с отсутствием форматирования может не приниматься преподавателем.
В некоторых задачах предусмотрены тесты, которые проверяют различные аспекты решения задачи. Эти тесты нужно запустить локально для первоначальной проверки решения. Эти же тесты запускаются при создании Pull Request.
Все тесты, если предусмотрены для задачи, описаны в классе Tests. Для запуска тестов нужно щелкнуть правой кнопкой мыши на классе и нажать Run 'Tests'
!!! Pull Request, в котором не проходят тесты, не будет рассматриваться преподавателем.
Коммит - это фиксирование изменений в локальном репозитории для последующего обновления удаленного репозитория (в GitHub).
Для фиксирования изменения и подготовке созданию Pull Request в IntelliJ Idea щёлкните правой кнопкой мыши на директорию с заданием и нажмите Git -> Commit Directory.... Откроется диалог создание коммита. Проверьте, что отмечены только те файлы, которые относятся к выполняемой задаче (Система автоматизированной проверки тестов запрещает изменение в нескольких задачах одновременно. После отправки тесты не пройдут и задача не будет принята преподавателем). Дополнительно необходимо заполнить комментарий (можно указать номер задачи и фамилию студента).
Для отправки подготовленного коммита в GitHub репозиторий нажмите правой кнопкой мыши на проект и далее Git -> Repository -> Push... или воспользуйтесь сочетанием клавиш Ctrl+Shift+K и нажмите кнопку Push.
При переходе на страницу репозитория нужно нажать кнопку New Pull Request, вы увидите страницу создания Pull Request. Вы должны выбрать "от куда" и "куда" вы хотите внести изменения. Слева должен быть репозиторий, из которого вы делали fork (ветка master), а справа должен быть ваш репозиторий (ветка, в которой вы выполнили задачу). При первом нажатии на кнопку Create Pull Request откроется окно, в котором нужно ввести название и при желании оставить комментарий. Название должно быть "Фамилия Имя. Задание 01", где нужно указать свои имя и фамилию и корректный номер задания.
Через какое-то время после создания Pull Request автоматически должны запуститься тесты. Если тесты прошли и появилась зеленая иконка, символизирующая это, то можно приступить к выполнению следующих задач. Преподаватель получит уведомление, о попытке сдачи задания и проверит её, как только у него появится время.