/data-structures-course

Github-based data structures on java course (rus lang)

from_flaxo with_♥

Структуры данных на Java

В данном учебном курсе вы сможете потренироваться в написании простейших структур данных на языке Java.

Для прохождения данного курса необходимо:

  • установить систему контроля версий git и обладать базовыми навыками работы с git или внимательно читать и использовать предложенные команды;
  • установить java 8;
  • использовать удобную IDE, например, Intellij Idea.

Правила курса

Для получения максимально возможной оценки, вам необходимо написать решение, удовлетворяющее тестам и имеющее высокий уровень качества кода.

Также все решения будут проверяться на плагиат. Поэтому списывать крайне не рекомендуется, но подглядывать можно.

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

Советы

Регулярно запускайте тесты. Даже если у вас еще не дописанное решение. Это сильно ускорит процесс разработки и вы сразу заметите, если какой-то из реализованных методов перестал работать в связи с последними изменениями.

Пользуйтесь google. Большинство проблем, с которыми вы сталкиваетесь, решены за вас.

Обращайтесь за помощью. Если что-то пошло не так, а вы и google не знаете почему, то пишите на почту tsibin.andr@gmail.com или вконтакте. Если вам, вдруг, понравилось и хотите получить еще заданий, то также пишите.

Приступая к выполнению

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

  • task-1: Реализовать структуру данных Range (Ряд) для целых чисел.
  • task-2: Реализовать структуру данных IntSet для целых неотрицательных чисел.

Для каждого задания есть подробное описание, JavaDoc и тесты, которые необходимо запускать, чтобы убедиться, правильно ли работает написанное решение.

Получение репозитория

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

fork-btn

Теперь необходимо получить ваш репозиторий себе на компьютер. Команда ниже скачает ваш репозиторий локально. Не забудьте заменить {nickname} на ваш логин github.

git clone https://github.com/{nickname}/data-structures-course.git

Выполнение заданий

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

Для получения конкретного задания необходимо перейти в ветку с ним. Например, для перехода к первому задания, необходимо выполнить команду:

git checkout task-1

Теперь можно заняться написанием своего решения. Чтобы проверить проходят ли тесты, их можно запустить с помощью вашей среды разработки или выполнить одной из команд в терминале:

Linux \ OSX Windows
./gradlew test gradlew.bat test

Если тесты не проходят, то внимательно читайте описание ошибок. Тесты написаны таким образом, чтобы вы четко могли понять, почему ваш код не работает так, как должен.

После написания решения, необходимо добавить все созданные или измененные файлы в индекс git командами:

git add src/main/java/org/flaxo/structures/Range.java
...

Далее необходимо сохранить вашу работу, сделав commit с каким-нибудь сообщением:

git commit -m "Добавляет мою реализацию некой структуры данных"

После этого, можно отправить созданный commit в ваш репозиторий на github. Скорее всего, вам потребуется ввести логин и пароль от аккаунта github.

git push -u origin task-1

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

new-pull-request-btn

Указав именно ту ветку, в которую вы вносили изменения. Вид страницы может немного отличаться от того, как она выглядит на скриншоте.

pull-request-branches

Подтвердите создание pull request. На этом сдача задания считается законченной. Через некоторое время в комментариях к решению появится информация о прохождении решением тестов и об оценке качества кода.

pull-request-with-validations

Если решение не проходит проверку:

  • travis - какой-то из тестов упал
  • codacy - в вашем коде есть несколько нарушений качества кода

Информацию об ошибках, найденных travis или codacy, можно найти кликнув на соответствующую кнопку Details.

Вы можете в любой момент вносить изменения в ваше решение, делать новые commit-ы и push-ить их. Это автоматически обновит созданный pull request и запустит проверки.

Отзывы

Пожалуйста, оставьте любой feedback в одной из удобных вам форм:

  • в любом из ваших пулл реквестов в виде комментария
  • по почте tsibin.andr@gmail.com
  • вконтакте