首页 > 解决方案 > 如何手动评分考试/问题?

问题描述

我想做的事:

我想r-exams在以下过程中使用:

  1. 向学生提供 pdf 格式的电子考试(使用exams2pdf(..)
  2. 让学生上传带有答案的excel文件
  3. 使用 (using eval_nops(...))为答案评分

我的问题:

调用该函数eval_nops()是手动解决问题的首选方法r-exams吗?

如果不是,首选哪种方式?

我试过的:

我知道该exam2nops()功能,并且我知道它会返回一个.RDS存储正确答案的文件。因此,我基本上有我需要的东西。但是,我发现该过程不是很简单,因为正确的答案隐藏在 RDS 文件的深处。

标签: rr-exams

解决方案


概述

您是对的,在标准学习管理系统 (LMS) (如 Moodle 或 Canvas 等)之外没有现成的考试管理/评分系统。不过,R/exams 确实为评分提供了一些构建模块,尤其是exams_eval(). 这可以用谷歌表单等工具来补充。下面我从“确凿的事实”开始,exams_eval()尽管这有点技术性。但随后我也提供了一些关于这些方法的评论。

使用exams_eval()

让我们考虑一个具体的例子

eval <- exams_eval(partial = TRUE, negative = FALSE, rule = "false2")

表示您想要部分学分用于多项选择练习,但每项的总分不得为负数。正确勾选的框产生 1/#correct 点,错误勾选的框产生 1/#false。唯一的例外是只有一个错误项目(然后会取消所有点),然后使用 1/2。

结果对象eval是一个带有输入参数 ( partial, negative, rule) 和三个函数checkanswer(), pointvec(),的列表pointsum()。想象一下你有正确的答案模式

cor <- "10100"

正确和错误勾选的相关点是:

eval$pointvec(cor)
## pos neg
## 0.5000000 -0.3333333

因此,对于以下答案模式,您会得到:

ans <- "11100"
eval$checkanswer(cor, ans)
## [1] 1 -1 1 0 0
eval$pointsum(cor, ans)
## [1] 0.6666667

后者仍然需要乘以分配给该练习的总分。对于数字答案,您只能得到 100% 或 0%:

eval$pointsum(1.23, 1.25, tolerance = 0.05)
## [1] 1
eval$pointsum(1.23, 1.25, tolerance = 0.01)
## [1] 0

同样,字符串答案是正确的或错误的:

eval$pointsum("foo", "foo")
## [1] 1
eval$pointsum("foo", "bar")
## [1] 0

运动元信息

exams2xyz()要获取给定练习的相关信息,您可以从所有接口返回的嵌套列表中访问元信息:

x <- exams2xyz(...)

例如,您可以将第-th 练习的第 -th 随机复制提取metainfo为:ij

x[[i]][[j]]$metainfo

这包含正确$solution$type、 和$tolerance等。当然,这有点长且不方便交互式输入,但应该很容易以编程方式循环。例如,这就是nops_eval()基于.rds包含x.

在没有完整 LMS 的情况下管理考试

我通常的建议是尝试利用你大学的服务(当然,如果有的话)。是的,带宽/稳定性等可能存在问题,但如果您运行自己的系统(去过那里,做过),您可以拥有所有相同的问题。具体来说,这里可以找到有关邮寄的 Moodle 与 PDF 考试的讨论:

但是,如果我要在 LMS 之外提供考试,我会使用 HTML,而不是 PDF。在 HTML 中嵌入附加信息(数据、链接等)比在 PDF 中容易得多。还可以更轻松地在移动设备上查看 HTML。

为了收集答案,一些 R/exams 用户使用 Google 表单,例如: https ://R-Forge.R-project.org/forum/forum.php?thread_id=34076&forum_id=4377&group_id=1337 。其他人对使用learnrwebex为此感兴趣: http ://www.R-exams.org/general/distancelearning/#going-forward 。

但是,关于隐私,如果其中任何一个比使用大学的 LMS 更好,我会感到非常惊讶。


推荐阅读