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

    И сразу к делу. Рассмотрим идею совместной разработки лабораторных/курсовых работ с помощью github



    Ответственный студент Петя создает репозиторий, например по дисциплине «Параллельное программирование», где в первом коммите в ветке master доступен подготовленный проект с минимумом всего необходимого.

    Затем Петя создает wiki, куда выкладывает варианты заданий для всей группы:


    После этого Пете нужно добавить своих однокурсников в коллаборейторы, чтобы они могли коммититься без запроса на pull (Pull Request):


    Далее начинается самое интересное — разработка! Каждый студент создает свою ветку (название которой соответствует номеру варианта) в репозитории с помощью git branch, куда благополучно коммитится с заранее авторизованных устройств, для которых надо будет сгенерировать ssh-ключи и добавить их в настройки своего аккаунта на github:


    Часто ли вам нужна была помощь своего товарища, который присылал вам поправки к коду по асечке и объяснял где ошибка? Часто ли вы сами просили код «просто посмотреть»? Теперь разработка стала проще, интереснее и быстрее.

    Что в итоге получается?
    Централизованное и удобное место для хранения кода всех вариантов лаб/курсовых с приятным и удобным интерфейсом для просмотра и подсветкой синтаксиса. Возможность реально совместной работы над одним большим проектом — например курсовой работы, что в разы ускорит разработку.

    Основные плюсы:
    • опыт командной работы, который пригодится в будущем;
    • не нужно носить исходники на флешке (я некоторое время носил на дискетах). Во всех университетах уже есть интернет?;
    • всегда есть возможность посмотреть изменения своего кода (избегаем ситуаций «блииин, захватил не ту версию проги на флешке...») и/или откатиться до нужной ревизии («блин, вчера же работало!»);
    • повышение качества кода — одногруппники находят баг, вешают тикет и здесь же его обсуждают;

    Минусы:
    • Придется всем учить git/svn/hg и т.п.
    • Будьте готовы к использованию репозитория недобросовестными эгоистичными одногруппниками.

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

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

    Всем приятной разработки!
    Метки:
    Поделиться публикацией
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 58
    • +18
      Я пробовал организовать в точности вашу схему. Просто никому это не нужно, вряд ли кто-то вообще зашел на сайт github.com, чего говорить про «всем учить git»…
      • +2
        Не очень понял относительно «пробовал». Если вы преподаватель, то ставите сдачу через github обязательным условием лабораторной, после чего я с большим интересом посмотрел бы на студента, который туда не зайдёт.
        А если вы «ответственный студент Петя», то странно было бы ожидать, что все вдруг решат сделать так, как хочется вам.
        • НЛО прилетело и опубликовало эту надпись здесь
          • 0
            Мы летнюю практику например у студентов на IT специальностях под svn пытались перевести )
            Со временем и лабы думаю переведем.
          • 0
            У нас на одном из предметов задания выставляются в виде тикетов в trac, и есть svn куда закидываешь исходники, работу сделал, тикет закрыл код залил написал номер ривизии которую проверить. Удобно.
            • 0
              Да, кстати, для всякого рода халявы подобная система (если про нее знает преподаватель) губительна. Сразу будет видно, кто работал, а кто нет.
            • 0
              Для этого достаточно как можно раньше провести практическое занятие по использованию гитхаба — и просто не принимать курсовые или лабы с другом виде. Тоталитарный произвол — решает! :)
              • 0
                Я студент, а не препод. Препод принимает через что-то типа ejudge
            • +1
              а нафига в одном репозитории хранить кучу различных проектов связанных между собой только тем что их будут сдавать в один день?
              • +1
                Как правило лабы, например, объединены общей темой, то есть имеют что-то общее между собой.
              • +2
                В университете Шевченко есть Групс.
                • +1
                  Круто
                  • 0
                    и никто им не пользуется? нашел:
                    Факультет кібернетики
                    Статистика групи
                    Створено 24 березня 2009
                    Зареєстровано 3 користувачів
                    • 0
                      Вот группа на 40 человек, правда наверное это максимальное количество. Основное использование — как персональные svn репозитории.
                    • 0
                      Круто. В прошлом году закончил универ, а сегодня узнал о такой штуке.
                    • +1
                      Когда я учился в институте, интернет был далеко не в каждой лаборатории, да и то не для всех…
                      От знакомых студентов слышал, что они сейчас эффективно используют DropBox с расшариными для всех однокурсников папками. Просто, и доступно.
                      • +2
                        ну DropBox и git конечно вещи абсолютно разные и каждого есть свои плюсы и минусы.

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

                        С другой стороны в гите видно кто действительно что и в каком объеме сделал и кто где накосячил (и кому все исправлять)))
                        • 0
                          DropBox, кстати, замечательно сочетается с Git или Mercurial, если туда положить репозиторий.
                          • 0
                            На мой взгляд это зависит от специальности.
                          • 0
                            В эту зимнюю сессию готовились к одному из экзаменов с использованием DropBox. Выглядело это так: для экзамена с известными заранее вопросами создаётся общая папка. Внутри файл со списком вопросов. Далее при подготовке материала создаются файлы по вопросам билета (один вопрос-один файл). Под конец в головном файле-списке раскрашивали те вопросы, которые были плохо раскрыты. За время подготовки не было ни единой колизии правок (хотя по идее в дропбоксе такое может быть).
                            Под конец в папке лежала как минимум цифровая метода по курсу.
                            • +1
                              Идеально подошли бы гуглодоки
                              • 0
                                Гуглодоки не подходили так как сначала планировалось, что будет ещё куча всяких-разных сопроводительных файлов различного формата. Потом, эти файлы хочется взять в офлайн и перечитать по пути в универ/перед аудиторией. Насколько я знаю, гуглодоки надо вручную качать, чтобы была самая последняя версия на диске.
                            • 0
                              Для этого (в отличие от схемы из топика) обязательно нужен рут на машинах в вузе.
                            • +1
                              а у нас препод сразу из репозитория задачки проверял)
                              Так что это удобно)
                              • 0
                                Для студентов и преподавателей отлично подойдет среда групповой работы TeamWox. Можно вести и проекты и курсовые, общаться с преподавателями и сдавать работы прямо в электронном виде.

                                Причем эта система полностью бесплатна для образовательных учреждений любой страны.
                                • 0
                                  Ну эта Ваша система более универсальная…
                                  А в топике речь вроде про студентов IT специальностей, а им навыки использования систем контроля версий наверняка в последующей работе пригодятся еще.
                                  • 0
                                    Безусловно, без систем репозиториев для девелоперов никуда.

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

                                    Можно прям сидя в аудитории сдавать свои работы со своего телефона :) Система имеет полную адаптацию к мобильным устройствам.
                                • +5
                                  >Минусы: «Придется всем учить git/svn/hg и т.п.»
                                  Вижу в этом только плюс, особенно для студентов программистов. В наше время это необходимость.
                                  • +2
                                    Да и учить-то там нечего. Признаюсь, знаю только hg, но частеньку учу им остальных. Что там учить-то? 5-6 команд: commit, push/pull/clone, status, diff, reverse, update + понятие ревизии и tip.
                                    Так что «Учить hg» считаю очень натянутым понятие.
                                  • +2
                                    Эх, если бы я учился на программиста в универе и меня обучали бы git, я был бы против.
                                    Но сейчас я бы предпочёл, чтобы мне вдолбили установку использовать распределённую систему как можно раньше. Тем более можно спросить у руководителя, что и как, а не собирать всю информацию в интернете.
                                    • +6
                                      О, а у нас(итмо) на С++ наподобие такого было в прошлом году, но немножко по-другому. Ща расскажу:

                                      во-первых, мы хостились на ассембле, и каждый студент был добавлен в проект как участник — www.assembla.com/spaces/bx3v_wr_0r37hYeJe5d-aX/team.

                                      и нам туда в свн клали домашнее задание(дз), мы создавали в свне папку со своим именем и туда клали дз.

                                      После того, как мы доделывали свое дз, мы создавали тикет аля «check please». На ассембле дежурил бот, который при появлении подобного тикета скачивал наше решение, собирал, проверял на наборе тестов.
                                      Если программа была бажная, в свн клался тест, и тикет возвращался к нам. Если программа была написана без багов, то тикет перенаправлялся нашему преподу на проверку на качество кода(за быдлокод нам отрывали руки).

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

                                      • –4
                                        Посоветуйте своим преподавателям TeamWox. Это бесплатно, а им сразу станет на пару порядков легче работать со студентами.
                                        • 0
                                          пробежался по TeamWoxу, не понял в чем преимущество.

                                          В чем заключается вся основная фича описанной моей схемы: преподу нужно всего лишь сделать хорошие тесты и в последующем только ревьюить код. А без этих двух этапов не обойтись, потому что:
                                          а) лучше написать один тест и завалить студентов с неверными решениями, чем каждому из них давать решение
                                          б)ревью кода, очевидно, обязателен в любом случае.
                                          • 0
                                            хотя есть один минус — svn открыт всем, а это значит, что можно списать у хорошего студента.
                                            • 0
                                              А что, бот не может анализатор заиметь? А интеллектуальный анализ и препод может — быстро по поздносдавшему студенту можно понять у кого он списал.
                                            • 0
                                              Преимущество в долгосрочной групповой работе. Ведь работа не заканчивается одним заданием.

                                              Кроме того, студенты могут общаться друг с другом. Причем так, что преподаватель не увидит их общения. Для этого нужно ставить флажок приватного общения на групповые обсуждения, причем тут-а-тет общение всегда по умолчанию приватное.
                                              • 0
                                                В качестве бонуса — можно поставить TeamWox Sync под Андроид и видеть все эвенты в push режиме. Это удобно как студентам, так и преподавателям.

                                                А под остальными мобильниками (iPhone, Android, Windows Mobile 6, Windows Phone 7, Blackberry и Symbian) можно иметь прямой доступ ко всей системе.
                                        • +1
                                          > Во всех университетах уже есть интернет?
                                          Неа. Он есть, только нам не дают. Где бы я еще с телефона читал php manual?
                                          А был бы — можно было бы на домашнем компе работать по ssh. Мечты :)
                                          • 0
                                            Будьте готовы к использованию репозитория недобросовестными эгоистичными одногруппниками
                                            Написать код легко. Сложно понять как он работает. Понять как работает чужой код — ещё сложнее, чем родной (не генетический).
                                            • 0
                                              Спасибо! Одно только ограничение. Не всегда есть интернет у студентов, так что вариант поставить в университетской сети желательнее.
                                              • –4
                                                Опять Git! Почему не Mercurial?
                                                • +1
                                                  Потому что Github. Почему Bitbucket проигрывает Github? Потому что на Bitbucket'e большинство народу прячут код в приватные репозитории. Таким образом он превращается просто в хостинг. GitHub же — социальная сеть. Я не считаю, что Mercurial чем-то хуже или лучше, чем Git, просто мне нравится подход Github'a, поэтому на его примере я и рассмотрел эту идею.
                                                  • –5
                                                    То что там кто-то чего-то куда-то прячет — не значит, что остальные должны делать так же.
                                                    На мой взгляд, напротив, github — абсолютно открытая, но свалка никому не нужной кроме авторам мелкой ерунды.
                                                  • 0
                                                    Почему не гуглокод? Обсуждали с народом, там вроде нет приватных сорцов.
                                                    • 0
                                                      В плане гуглокод == меркуриал имеется ввиду.
                                                      • 0
                                                        Удобство и приятность интерфейса играет не последнюю роль :)
                                                • 0
                                                  Автор молодец, несмотря на то, что идея стара. Я вот лично использую Git (не только репозитории на github) и для иных целей, очень удобно в плане синхронизации, версионирования и «отсутствии возможности запутаться».
                                                • 0
                                                  Ну примерно так и живем. Раньше в вики хранили все сорцы и глядели чужие, сейчас проекты побольше стали (лаба обычно 1-2 файла, а курсовик много больше) и удобнее гуглокодом с меркуриалом пользоваться.
                                                  Бауманка/ИУ.
                                                  • 0
                                                    А какая специальность, курс, если не секрет? :) Я тоже на ИУ (6 кафедра, 6-й курс), у нас таким не пахнет, увы.
                                                  • +2
                                                    Я преподаю уже 9 лет, помимо работы разработчиком, так что вот вам мнение препода :)

                                                    Положительные стороны:
                                                    — Централизованное хранилище заданий и результатов. Во многих ВУЗах этого до сих пор нет, а тут — всё под рукой. И не будет типичных проблем накануне сессии из серии «у меня вчера вылетел жесткий диск, что смог, то восстановил, поставьте-хотя-бы-тройку!!!» :)
                                                    — Обучение системам контроля версий и багтрекингу. Очень правильно. Сам я давно занимаюсь SCM (см. бложик), так что меня это радует вдвойне.
                                                    — Практика командного взаимодействия. Сначала — между преподом и студентом, потом обязательно начинается работа внутри группы. К тому же многие учебные программы имеют курсовые или лабораторные, прямо предназначенные для коллективной работы.

                                                    Отрицательные стороны (как без них)
                                                    — Необходимость наличия интернета. Да, для многих ВУЗов это до сих пор проблема. Кроме того, есть компьютерные классы, где выход в интернет запрещён или невозможен по техническим причинам.
                                                    — Привязка с конкретному инструменту. git и те тулзы, которые доступны на гитхабе — на них свет клином не сошелся. Есть ещё и централизованные VCS, они всё ещё имеют немалое право на существование, особенно коммерческие решения. В общем, получится очень однобоко, а это не есть правильно с точки зрения учебного процесса.
                                                    — Работа на стороннем сервисе. Вы не контролируете данные, находящиеся на сервисе. Но поскольку данные эти — не несут коммерческой инфы и их утрата не окажет большого влияния на учебу в целом (есть локальные копии), то минус это небольшой.
                                                    — Нет гарантии, что гитхаб не изменит свою политику и не ограничит подобные варианты использования.

                                                    В целом — хорошее решение, на мой взгляд. Спасибо за заметку, запомнил у себя :)
                                                    • 0
                                                      Можно развернуть свой gitorious на сервере института (плюс открыть его наружу, если нужно) и избежать всех перечисленных проблем. Однобокости в обучении не будет, потому что распределенные VCS покрывают все возможности централизованных, но никак не наоборот. А привязка к конкретному продукту в практических работах неизбежна. Тут уж вы, как преподаватель, должны увидеть перспективы каждой VCS и выбрать наиболее перспективную для обучения.
                                                      • 0
                                                        > распределенные VCS покрывают все возможности централизованных

                                                        Это неверно, увы. У них разные принципы работы и часть функционала просто не пересекается, так что о полной заменяемости централизованных средств децентрализованными утверждать нельзя по определению. Я могу долго ещё вести holy war, смысл не изменится: на DVCS свет клином не сошелся.

                                                        Хотя, конечно, DVCS — это сильный тренд последних 2-3 лет, бесспорно. И конечно им стоит уделять время на практических занятиях, здесь полностью согласен.
                                                    • 0
                                                      Прочитал топик и позавидовал — когда я учился в универе, нам приходилось коннектиться друг с другом при помощи модемов через telnet. Если скорость была больше 18Кбс и не обрывалась — это было счастье.
                                                      • +1
                                                        На github, если я не ошибаюсь, нельзя создавать бесплатно приватные репозитории. Тем, кому это нужно могу порекомендовать Assembla
                                                        • 0
                                                          Эх. А у нас не было никаких совместных проектов по программированию, все только индивидуальное.
                                                          • 0
                                                            мде, моим одногруппникам было даже лень заполнить форму для анкеты выпускника, созданную мной на гугл-доксах. все, как дибилы заполняли доковский файл и присылали старосте на мыло. и это айтишники!
                                                            при чем, даже моя сестра, которая учится на лингвистическом, со своими девченками пользовалась гугл-документами.

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