作者:张朗淇、陈彦呈   指导老师:郑贵锋

背景

随着程序设计类课程在各大高校如火如荼地开展,如何有效地系统化地管理学生作业,了解学生学习进度成了这类课程任课教师的关注问题。

目前大多数教师都是采用通过FTP、课程网站等方式布置作业,但如果需要对作业内容作出一些修改时,这种内容变动学生是很难发现的。

同时,针对程序设计课程,有部分作业是以项目的形式布置,需要学生组队完成。但目前大多数学生自发组成作业项目团队的开发模式都十分随意,每个人都只知道自己做了什么,却没有对整个项目团队开发进度的清晰认识,甚至部分成员实际上是没有作出贡献的。这种开发进度不透明的项目经验与布置团队作业的初衷背道而驰。

码云高校版为解决这些问题提供了一个平台。教师在码云上布置项目作业,学生Fork这个项目,完成后再将其通过Pull Request传回源项目中等待批改。当作业内容发生改变时,学生也可以通过文档对比轻易找到修改的内容。同时,在码云上布置团队协作作业,组长可以利用码云提供的任务功能对自己的组员发布任务,方便组员了解任务分配情况和整个项目的进度。这样的方式让学生更加准确地提前体验到实际项目开发过程。

本文将以中山大学某具体项目的布置作为例来讲述教师如何利用码云布置小组作业。

前提条件

班级成员已按照小组作业名单完成分组。

 

新建项目

教师可以通过码云布置教学任务,创建归属为具体班级的课程教学项目,并将小组添加进项目成员当中。新建项目的页面如下图所示:

图1:教师将项目名称等内容填写完毕后,新建课程项目

项目结构

在这个教学项目的例子中,将作业的具体要求写在readme文件中,将作业需要用到的文字材料、图片或视频素材等文件放置在manual文件夹中,并创建两个空的文件夹code和report用于存放学生完成的代码文件和实验报告。项目的结构如下图所示:

图2:教师可根据实际需求调整项目的目录结构

组长Fork项目

教师将项目发布后,组长可以Fork项目到小组仓库下。每个小组都在各自的仓库中提交小组作业的代码,使得不同分组的成员不会互相干扰,而同个小组的成员可以协同工作。组长Fork项目如下图所示:

图3:组长将源项目fork到小组仓库下,各小组互不干扰

组长分配任务

组长通过发布任务的方式将任务指派给组员。组长可以在新建任务的页面指派任务的负责人、任务的优先级、任务的工期以及任务要求。组员们在各自的分支内按完成任务,最后由组长将各个分支合并入主分支中,完成小组项目的要求。这有利于组长安排编程任务的轻重缓急,优先完成代码的主干部分,将性能优化等需求放到后面完成,使得项目按照计划时间表有序地完成。新建任务的页面如下图所示:

图4:组长将项目功能需求划分为几个任务,并分配给每个组员

教师检查代码贡献量

教师可以通过查看各个小组项目的统计来统计组员的工作量和贡献度,有利于按照每个人的工作量给出相应的分数,防止了一些浑水摸鱼的情况发生。查看代码统计的页面如下图所示:

图5:教师可在码云上查看每个小组项目中各成员的贡献,并以此为评分参考

结束语

1.以项目的形式发布作业,当后续作业需要在原本的基础上进行迭代开发时,例如在只有UI的作业一的基础上,增加业务层的编程作业。老师可以直接在原项目上增加需求,让学生可以循序渐进地完成代码作业。

2.老师可以通过任务的进度了解当前各小队的进度、个人任务的量,由此客观的评估每个学生的参与度和积极度,从而使得作业的分数也更加公平和准确,保证了认真做作业的学生得到应得的分数,也可以防止学生浑水摸鱼。

3.在小组作业中,组长可以将整个较大的作业划分为容易完成的小工作,然后指定一份计划书,通过分配任务的功能,为组员们安排工作内容,并通过任务当中的预计工期来保证按时完成任务。与此同时,也让每个组员都能参与到代码的编写当中,避免了项目由一两个学生全部完成的情况。

4.让学生提前体验实际开发过程,在使用码云的过程中积累Git的使用经验,熟悉Git的操作指令,以及对Git版本和分支管理的掌握。