如何手动给 exams/questions 打分?

How to grade exams/questions manually?

我想做的事情:

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

  1. 向学生提供 pdf 格式的电子考试(使用 exams2pdf(..)
  2. 让学生上传 excel 包含他们答案的文件
  3. 使用(使用 eval_nops(...)
  4. 对答案评分

我的问题:

调用函数 eval_nops() 是在 r-exams 中手动对问题评分的首选方式吗?

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

我试过的:

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

概述

你是对的,除了像 Moodle 或 Canvas 等标准学习管理系统 (LMS) 之外,没有现成的 administering/grading 考试系统。R/exams 确实提供不过,一些评分的基石,尤其是 exams_eval()。这可以用 Google 表单等工具进行补充。下面我从关于 exams_eval() 的“确凿事实”开始,尽管这有点技术性。但是我也提供了一些关于这些方法的评论。

使用exams_eval()

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

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

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

生成的对象eval是一个包含输入参数(partialnegativerule)和三个函数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() 接口的嵌套列表中访问元信息 return:

x <- exams2xyz(...)

例如,您可以将第 j 次练习的第 i 次随机复制的 metainfo 提取为:

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

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

中的信息的 .rds 文件所做的事情

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

我通常的建议是尽量利用大学的服务(当然,如果有的话)。是的,bandwidth/stability 等可能会出现问题,但如果您是 运行 自己的系统(去过那里,做过那个),您可以拥有所有相同的东西。具体来说,这里提供了关于 Moodle 与 PDF 考试的讨论:

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

为了收集答案,一些 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 更好,我会感到非常惊讶。