В своей преподавательской практике использую GitHub... (Пример 1, Пример 2, Пример 3) Но для начала давайте представлюсь. Зовут меня Старинин Андрей. И я преподаю программирование, хотя по первому образованию я биолог. А ещё один из основателей и ведущих подкаста "IT за Edu".  Мой стек дисциплин:  C++ основы программирования основы ООП GUI-приложения (Qt) C# ООП сетевое программирование GUI-приложения (WPF) взаимодействие приложений и БД (ADO.Net) Базы данных проектирование БД SQLite MySQL Управление проектами Кажется, что всего много. Но успеваем несильно погрузиться в отдельные технологии. После какого-то времени (точно не помню уже какого) понял, что студентов можно и даже нужно "приучать" к системам управления версиями почти сразу с начала обучения. Для обучения выбрал GitHub. Хотя Bitbucket тоже нравится. Да, я не учу студентов сразу по харду, они не сразу изучают git  в CLI. Я их знакомлю сначала с web-интерфейсом GitHub'а. Потом рассказываю про GUI-клиенты. Из них мне нравится GitKraken. Но не заставляю их пользоваться тем, что нравится мне - они вольны выбирать сами чем пользоваться. Постепенно - это примерно так:  Просто показываю как выкладывать код Прошу их выкладывать свои решения и присылать мне ссылки на репозитории Выкладываю текст заданий и прошу ответы присылать через pull-request'ы Пробуем поработать в маленьких командах над одним репозиторием без веток Пробуем поработать небольшой командой над одним репозиторием с отдельными ветками Пробуем работать над большим проектом большой командой с несколькими репозиториями и ветками.  И вот такой постепенный подход стараюсь применять при изучении тем. Иногда темы заканчиваются быстрее, чем успеем перейти к большому или маленькому проекту. Но это несильно страшно. По изучении нескольких тем мы можем полученные знания объединить в один большой проект. Не все студенты сразу всё понимают и принимают. Но тем интереснее и приятнее когда они "доходят". Ещё люблю подход: учимся на своих ошибках. Во время обучения есть возможность ошибаться и понять к чему это приводит. Что мне нравится в GitHub при обучении? Поддержка аккаунтов для организаций, а в аккаунтах возможность создания команд с гибкими настройками доступов  Поддержка Markdown-разметки. Можно более "красиво" оформлять задания. Система форков. Может любой человек сделать форк, а потом предложить запрос на слияние. Не всегда нужно всех студентов добавлять в команду. Возможность комментировать участки кода при проведении ревью. Очень удобно указывать на сильные и слабые моменты в программах. Возможность назначать ревьюером любого члена команды. Студенты должны уметь не только хорошо писать программы, но и проверять чужой код. Система issues. Можно давать другим командам студентов задание на проверку кода и выявления багов, с занесением всего в issues. Для чего я приучаю студентов к GitHub'у? Создание своего портфолио уже с самого начала обучения, а не только под конец. Понимание принципов написания кода. Когда начинают чужой код проверять - многое понимают Понимание "соглашения об именовании". Пока не наступят на грабли разного именования в одной команде - не понимают. Ну или не все понимают Понимание как работать в команде. И как командам между собой взаимодействовать. Прекрасно понимаю, что мои методы не самые лучшие и далеки от совершенства, да и от реальности далековаты. Но стараюсь их приблизить к реальности. Вариант с форками - https://habr.com/ru/post/534198/ Вариант командной работы - https://habr.com/ru/post/534292/  Продолжение следует... Преподаватель, C#-разработчик