为统计班个性化在线作业
我教本科统计学,想要进行个性化的在线作业管理。我已经解决了这个问题的一部分,就是使用 latex/markdown
和 knitr/sweave
生成多个版本的问题,利用 seeds
来实现。
现在我想开发一个基于网页的系统,能够使用这些生成的不同版本,为每个学生在线提供不同的作业。我查过几个与表单相关的网站(比如 google docs
、wufoo
、formsite
等),但没有一个支持程序化创建问卷。
我把这个问题标记为 R
,因为这是我最熟悉的语言,也是解决问题第一部分的关键。我知道有几个基于网页的 R
框架,不知道有没有适合这个工作的。
我也不排斥使用其他语言的解决方案,比如 Ruby
、Python
等。但最重要的是能够程序化地提供在线作业。我知道有像 WebWork
这样的工具,但它们需要使用 Perl
,而且界面通常比较笨重。
如果你觉得我遗漏了更合适的框架,欢迎添加标签。
补充一下,让我通过一个例子来说明。目前,如果我想在线布置作业,我可以简单地创建一个 Google 表单,把链接发给我的学生,然后在电子表格中收集所有的回答,并自动评分。如果只有一个版本的作业,这样做是可行的。
我的问题是,如果我想为每个学生布置不同版本的作业,并收集他们的回答,我该怎么做呢?
4 个回答
我找到了一种可能的解决方案,可能可以用RGoogleDocs
这个包来实现。因为内容比较长,我把它发在这里作为回答。我仍然希望能找到更好的方法,所以这个问题我会保持开放。
下面是这个想法的要点,虽然还没有经过测试。
- 使用
knitr/Sweave
创建每个作业的多个版本。 - 通过
uploadDoc
把这些版本上传到GoogleDocs
。 - 使用
setAccess
为每个学生分享一个文档,这个功能可以修改访问权限。 - 创建一个公共的Google表单,收集每个学生的最终答案。
我看到的好处有两个。首先,所有的最终答案都可以保存在一个电子表格里,这样我可以用R
来访问它们并自动评分。其次,因为我可以访问所有在Google Docs上完成的作业,我可以快速浏览这些作业,并根据需要提供个别的反馈(或者让我的一些助教来做)。
如果我能把这个方法搞定,我会更新进展,甚至可能会创建一个R包,如果对其他人有用的话。
你提问的方式让人不太明白为什么你必须在线给学生的作业打分。特别是你提到你是用sweave生成作业的。如果你用R来生成(随机化的)题目,那你其实也应该用R来给它们打分(或者输出数据集)。
对于我的课程,我有几种策略。
在期末考试时(大约500名学生),每个学生都会得到一个独特的数据集。学生们登录一个简单的网站(我们使用黑板系统,因为学校已经设置好了)。所有学生回答同样的问题,但用的是他们自己独特的数据集。例如,“平均值是多少”。答案是通过一个R脚本离线批改的。
在我的入门R课程中,学生们上传他们的R函数,我会离线运行并给他们打分。我使用sweave为每个学生生成一个独特的PDF。这个PDF会显示他们扣分的地方。例如,他们没有使用正确的命名参数。
将一个简单的网页表单与离线打分结合起来,给你带来了很大的灵活性,而且相对简单。