如何使用源代码控制工具让学生上交作业

时间:2009-02-12 22:29:44

标签: version-control

本学期我在当地一所大学上课。到目前为止,我让学生通过电子邮件将他们转到我的编程任务中。但是,当从电子邮件中提取20个解决方案时,会有很多麻烦。

有没有人使用过源控制工具让学生转入项目?你用了什么,它是如何设置的?

5 个答案:

答案 0 :(得分:6)

在我的大学,计算机和信息科学学院运行一个学生CVS服务器。每个主题(选择使用它)都会获得一个存储库,每个学生都会在主题中注册一个文件夹。管理员帐户显然可以访问整个批次,而每个学生只能查看自己的文件夹。

例如,参加操作系统主题(我过去教过):

/cis_os_2009
     |-studentID1
           |-assignment1
           |-assignment2
           |-prac1
     |-studentID2
     |-etc

在作业规范中,我们提供了提交作业的说明。

我比CVS提交系统更喜欢电子邮件和网络提交系统,这是uni使用的其他区域。它教学生如何使用版本控制系统。对于没有交付作业的学生,​​你几乎可以完全擦洗'我的usb闪存驱动器丢失/损坏/被盗'的借口,因为学生应该定期提交到存储库(在某些科目中,标记被分配用于正确使用CVS)。

缺点是你不能假设学生在学期开始时就知道如何使用CVS / SVN。这里的大多数主题都将第一周的实用内容专门用于CVS教程,以便人们可以确保a)系统管理员已正确设置其帐户,以及b)他们可以正确添加和提交文件。这也意味着你必须对第一次作业的提交有点宽容。

您需要为标记执行的操作是检查存储库,因为它存在于分配的截止日期/时间。如果您运行用于部分自动化标记的脚本,则存储库使其变得非常容易。您确切知道文件夹结构应该是什么以及所有文件应该位于何处。在我教过的科目中,我们有一个标记文件,其中包含学生标记的简要说明以及为什么标记被扣除的评论。我们将此文件检入存储库,学生可以通过cvs更新立即获得他们的标记。

答案 1 :(得分:1)

我认为一种常见的方法是为ftp上传创建目录。一些cron作业可以检查提交并自动运行make然后运行测试。

使用源代码控制听起来像很多工作,但它可以完成。

当我听一个伯克利CS校友播客的课程时,他们正在使用一些称为“自动编程器”的东西=很可能是允许提交然后运行构建和测试的内部事物。

这里怎么样:

http://www.users.muohio.edu/helmicmt/autograder/index.php

http://prisms.cs.umass.edu/mcorner/autograder

答案 2 :(得分:1)

由于Google代码现在支持Mercurial,因此使用Google代码或使用http://bitbucket.org以开源方式托管代码时,这应该是可行的。我认为这对任何人来说都是一个很好的学习工具,分布式版本控制工具对于简化开发非常重要。

我会推荐git,但它在学习曲线部门只是有点头重脚轻。

答案 3 :(得分:1)

在任何课程中都没有尝试过(这些天我没有教过)但是我在监督学生在工作中做他们一年的工作时使用了SC设置,以达到类似的效果。

Subversion将是我的选择; CVS存在严重缺陷,Git对初学者来说有一个讨厌的学习曲线。我们是一个Win商店,所以学生可以使用TortoiseSVN / AnkhSVN进行GUI集成;显然,在你的情况下这可能不是真的。

我为每个课程设置了一个单独的存储库,每个学生都有一个基本级别的文件夹,以及里面常用的repo安排。在SVN中,在repo配置中设置每个文件夹的访问权限非常容易,因此学生只能转到他们自己的目录,但是你可以看到所有内容。

答案 4 :(得分:0)

今年我将在我的AP计算机科学课上尝试使用Google Docs。看起来它会很好用。

我会让每个学生注册一个Google帐户,然后让他们复制&将其源代码粘贴到新的Google文档中,确保它们使用等宽字体。然后,他们只会与我为自己设置的Google帐户共享该文档。

Google文档会让我直接在他们的文档中写下评论,他们下次登录时就能看到这些评论。我会为每个作业创建一个不同的文件夹,以保持组织有序。

不确定这是否是最好的解决方案,但它是免费的,而且比让学生像去年那样打印出来一样好。