评估配置¶
Note
每当您在 ZJUI-Learn 的本地副本上编辑或添加 infoAssessment.json 文件时,都需要单击标题中的“从磁盘加载”按钮,以便本地 ZJUI-Learn 服务器重新加载更改。
所需属性¶
每个评估必须在其 infoAssessment.json 文件中设置以下属性:
| 物业 | 类型 | 描述 |
|---|---|---|
uuid |
字符串 | 唯一标识符。 |
type |
字符串 | "Homework" 或 "Exam"。 |
title |
字符串 | 评估的标题(例如,"Derivatives and integrals")。 |
set |
字符串 | 这属于哪个评估集(例如,"Quiz"、"Practice Quiz")。 |
number |
字符串 | 集合内评估的编号(例如,"1"、"2B")。 |
可选属性¶
除了这些属性之外,还可以使用以下属性来进一步配置评估的行为方式。大多数评估需要配置 accessControl 属性来控制对评估的访问,以及 zones 属性,该属性将评估分解为问题区域。每个区域都允许对该区域内的问题进行额外配置。
| 物业 | 类型 | 描述 |
|---|---|---|
module |
字符串 | 此评估所属的模块(例如,Chapter 3)。 (默认:"Default") |
accessControl |
数组 | 现代访问控制规则。 (默认:没有学生访问权限) |
allowAccess |
数组 | 旧的访问规则。首选 accessControl 进行新评估。 (默认:没有学生访问权限) |
zones |
数组 | 区域和问题的规范。 (默认值:无) |
text |
字符串 | 评估概述页面上显示的 HTML 文本。 (默认值:无) |
multipleInstance |
布尔 | 是否允许学生在整个评估过程中创造全新的尝试。 (默认:false) |
maxPoints |
数量 | 可以获得的最高积分。 (默认:区域最大点数总和) |
maxBonusPoints |
数量 | maxPoints 之外可赚取的最大额外积分数。 (默认值:0) |
shuffleQuestions |
布尔 | 是否随机化问题顺序。 (默认:false 用于家庭作业类型评估,true 用于考试类型评估) |
autoClose |
布尔 | 是否在 6 小时不活动后自动关闭评估(仅限考试)。 (默认:true) |
allowIssueReporting |
布尔 | 是否允许学生举报问题。 (默认:true) |
allowPersonalNotes |
布尔 | 是否允许学生添加个人笔记。 (默认:true) |
constantQuestionValue |
布尔 | 是否禁用正确答案的问题值提升(仅限家庭作业)。 (默认:false) |
allowRealTimeGrading |
布尔 | 是否实时对问题评分(仅限考试)。 (默认:true) |
requireHonorCode |
布尔 | 是否要求学生同意荣誉守则(仅限考试)。 (默认:true) |
honorCode |
字符串 | 为荣誉代码指定的自定义文本(仅限考试)。 (默认值:无) |
advanceScorePerc |
数量 | 进入下一个问题所需的最低分数百分比(仅限考试)。 (默认值:0) |
gradeRateMinutes |
数量 | 同一问题的评分提交之间的最短时间(以分钟为单位)。 (默认值:0) |
groups |
对象 | 基于小组的评估的配置。 (默认值:无) |
tools |
对象 | 评估工具的配置(例如计算器)。 (默认值:无) |
showQuestionTitles |
布尔 | 是否向学生显示问题标题。 (默认:false 用于考试,true 用于家庭作业) |
有关可以添加到此文件的内容的更多信息,请参阅infoAssessment.json 的参考。
???注意“旧组属性”
The following legacy properties are still supported but will be eventually deprecated in favor of the `groups` schema.
| Property | Type | Description |
| -------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `groupWork` | boolean | Whether the assessment will support group work. (default: `false`) |
| `groupMaxSize` | number | Maximum number of students in a group. (default: none) |
| `groupMinSize` | number | Minimum number of students in a group. (default: none) |
| `groupRoles` | array | Array of custom user roles in a group. (default: none) |
| `canSubmit` | array | A list of group role names that can submit questions in this assessment. Only applicable for group assessments. (default: none) |
| `canView` | array | A list of group role names that can view questions in this assessment. Only applicable for group assessments. (default: none) |
| `studentGroupCreate` | boolean | Whether students can create groups. (default: `false`) |
| `studentGroupJoin` | boolean | Whether students can join groups. (default: `false`) |
| `studentGroupLeave` | boolean | Whether students can leave groups. (default: `false`) |
| `studentGroupChooseName` | boolean | Whether students can choose their own group name. (default: `true`) |
You cannot use both `groups` and legacy group properties in the same assessment.
评估类型¶
每个评估都有一个 type,它必须是 "Homework" 或 "Exam":
- 家庭作业是为形成性学习而设计的,允许学生无限地重试不同的随机问题变体。一个坚持不懈的学生最终可以取得100%的成绩。
- 另一方面,考试旨在衡量学生的知识水平,并为每个学生提供每个问题的一个变体,并且重试次数有限。学生通常不会获得 100% 的成绩。
该类型控制评估的整体行为并应用各种默认设置,其中一些可以自定义。评估的类型不必与评估的管理方式相对应;例如,教师可以分配考试类型的评估作为家庭作业在课外完成。
两种类型的详细比较如下所示。
Homework |
Exam |
|
|---|---|---|
| 通用 | 形成性评估、实践 | 总结性评估,衡量学习 |
| 随机问题 | 多个变体(如果问题支持) | 每个学生都会获得一个变体 |
| 尝试次数 | 无限尝试 | 尝试有限,可能积分递减 |
| 游戏化 | 奖励重复正确答案 | 激励尽早给出正确答案 |
| 问题顺序 | 默认固定顺序 | 区域内默认顺序打乱 |
| 时间限制 | 不支持 | 支持 |
| 密码 | 不支持 | 支持 |
| 多个实例 | 不支持 | 支持 |
| 评估更新 | 如果评估发生变化则更新 | 考核定于创作 |
| 结束评估 | 评估仍然开放 | 默认情况下,闲置考核6小时后关闭 |
| 荣誉承诺 | 不支持 | 默认启用 |
| 实时评分 | 始终启用 | 可禁用 |
评估命名¶
每个评估都有一个描述其主题的 title。此外,每个评估都属于 set(例如,Homework、Quiz、Exam),并且在每个集合中评估都有一个 number。根据上下文,评估可以用_缩写_、_短名称_或_长名称_来引用。这些的格式是:
- 缩写 =
[Set abbreviation][Number](例如,Q2表示第二个测验)。 - 简称 =
[Set] [Number](例如,Quiz 2)。 - 长名称 =
[Set] [Number]: [Title](例如,Quiz 2: Coordinates and Vectors)。
您可以从标准化评估集 或创建您自己的 列表中选择一个集名称。
评估的 type 不必与其所在的 set 相对应,但它们通常是兼容的。例如,"type": "Homework" 评估通常具有 "set": "Homework" 或 "set": "Machine Problem"。另一方面,"type": "Exam" 评估通常有 "set": "Quiz"、"set": "Exam" 或类似的。
按模块对评估进行分组¶
教师可能希望按课程模块(课程中的主题、部分或章节)对他们的评估进行分组。当在 infoCourseInstance.json 中使用 "groupAssessmentsBy": "Module" 时,教师可以通过在 infoAssessment.json 中设置 module 属性来将评估分配给特定模块,如上例所示。如果省略属性 module,则默认情况下评估将具有 "module": "Default"。
有关如何创建自己的评估模块的更多信息,请参阅课程配置 文档。
问题顺序随机化¶
shuffleQuestions 参数控制评估中的问题对于所有学生是否以相同的顺序出现,或者该顺序对于每个学生是否是随机的。默认值取决于评估的 type:
| 评估类型 | 默认 | shuffleQuestions意义 |
|---|---|---|
Homework |
false |
所有学生的作业默认使用与 infoAssessment.json 中相同的问题顺序。 |
Exam |
true |
考试默认为每个学生单独随机分配问题顺序。这种随机化发生在每个区域内,但区域本身始终以相同的顺序出现,并且不存在跨区域随机化。 |
如果 Homework 设置为打乱问题顺序,它将为每个问题使用唯一的每门课程编号,以便所有学生仍然会得到相同的问题编号(如 #427),但它们不会按顺序排列。这使得学生可以轻松地与课程工作人员讨论问题;他们可以说“我不知道该怎么做#427”,每个人都会看到同样的问题#427。家庭作业中问题顺序随机化的主要优点是能够收集问题难度和学生行为的数据,而与评估中问题列出的顺序无关。
问题规范¶
评估分为区域列表,如下所示:
{
"zones": [
{
"title": "Easy questions",
"comment": "These are new questions created for this exam",
"questions": [
{ "id": "anEasyQ", "autoPoints": [10, 5, 3, 1, 0.5, 0.25] },
{ "id": "aSlightlyHarderQ", "autoPoints": [10, 9, 7, 5] }
]
},
{
"title": "Hard questions",
"comment": "These are new questions created for this exam",
"questions": [
{ "id": "hardQV1", "autoPoints": 10 },
{ "id": "reallyHardQ", "autoPoints": [10, 10, 10] },
{
"numberChoose": 1,
"autoPoints": 5,
"alternatives": [{ "id": "FirstAltQ", "autoPoints": 10 }, { "id": "SecondAltQ" }]
}
]
},
{
"title": "Manually graded questions",
"comment": "These are questions that include manual grading components",
"questions": [
{ "id": "essayQ", "manualPoints": 10 },
{ "id": "autoPlusManualQ", "autoPoints": [10, 7, 5], "manualPoints": 15 }
]
}
]
}
| 区域物业 | 类型 | 描述 |
|---|---|---|
title |
字符串 | 区域的标题。 (可选;默认值:无) |
questions |
数组 | 区域内问题和问题备选方案的槽位列表。 (必需;无默认值) |
numberChoose |
整数 | 为该区域中的每个学生选择的问题数量。 (可选;默认:全选) |
maxPoints |
数量 | 可以从此区域获得的积分数量限制。 (可选;默认:问题最高分之和) |
bestQuestions |
整数 | 该区域中只有这么多问题才会计入总分(得分最高的问题将被计入)。 (可选;默认:使用所有问题) |
lockpoint |
布尔 | 在此区域创建单向屏障;穿过它会使所有较早的区域变为只读。 (可选;默认:false) |
allowRealTimeGrading |
布尔 | 是否对该区域中的问题进行实时评分(仅限考试)。 (可选;默认值:true) |
comment |
字符串 | 该区域的自由格式评论。 (可选;默认值:无) |
区域规范详细信息参见infoAssessment.json 的格式规范
- 每个区域在评估中按给定顺序出现。区域标题是可选的,并且会向学生显示(如果存在)。
- 在每个区域内,问题顺序根据评估类型和
shuffleQuestions选项 随机化。
- 如果一个分区有
maxPoints,则在该分区回答问题所获得的积分中,至多maxPoints将计入总积分。
- 如果某个分区有
bestQuestions,则该分区的题目中,只有得分最高的bestQuestions才会计入总分。
问题替代方案¶
每个区域都有一个questions的列表。此列表中的条目可以是单个问题:
{ "id": "hardQV1", "points": 10 }
或者条目可以包含_问题替代列表_:
{
"numberChoose": 1,
"points": 5,
"alternatives": [{ "id": "FirstAltQ" }, { "id": "SecondAltQ" }]
}
如果指定了问题替代列表,则首先为每个学生随机选择其中一些问题,然后生成这些问题的随机变体。如果指定,问题替代项将继承其父组的点。
| 插槽属性 | 类型 | 描述 |
|---|---|---|
autoPoints |
数字或数组 | 此问题的自动评分部分的分数(或者如果设置了 alternatives,则此替代列表中的每个问题的分数)。可以是一个数字(例如,10),或者,仅对于考试类型评估,可以是部分学分的递减分数列表(例如,[10, 8, 4])。 (可选;默认值:零) |
manualPoints |
数量 | 此问题的手动评分部分的分数(或者如果设置了 alternatives,则此替代列表中的每个问题的分数)。 (可选;默认值:零) |
points |
数字或数组 | 此问题的分数(或者如果设置了 alternatives,则此替代列表中的每个问题的分数)。可以是一个数字(例如,10),或者,仅对于考试类型评估,可以是部分学分的递减分数列表(例如,[10, 8, 4])。 (如果未设置 autoPoints 和 manualPoints 则为必需,否则无法指定;无默认值) |
maxAutoPoints |
数量 | 在允许多次尝试获得更多分数的作业上,此问题的自动评分部分(或者如果设置了 alternatives,则此替代列表中的每个问题)可用的最大分数。只能在家庭作业类型的评估中指定,并且仅当指定 autoPoints 时。 (可选;默认:与 autoPoints 相同) |
maxPoints |
数量 | 在允许多次尝试获得更多分数的家庭作业中,此问题(或此替代列表中的每个问题,如果设置了 alternatives)的可用最大分数。只能在家庭作业类型的评估中指定,并且仅当指定 points 时。 (可选;默认:与 points 相同) |
id |
字符串 | 如果此槽仅包含一个问题,则为问题 ID(不能使用 alternatives 指定)。 (可选;默认值:无) |
alternatives |
数组 | 如果此槽包含多个替代问题,则为问题替代列表(不能使用 id 指定)。 (可选;默认值:无) |
numberChoose |
整数 | 如果指定了 alternatives,则选择它们的数量。 (可选;默认:全选)。 |
triesPerVariant |
整数 | 每个问题变体允许的最大尝试次数(家庭作业)。 (可选;默认1) |
allowRealTimeGrading |
布尔 | 是否允许该问题实时评分(仅限考试)。 (可选;默认true) |
forceMaxPoints |
布尔 | 是否强制所有学生获得最高分。请参阅重新分级。 (可选;默认false) |
preferences |
对象 | 覆盖问题的首选项 的值。键必须与问题的 info.json 中定义的首选项名称匹配。 (可选;默认:使用问题默认值) |
插槽规格详情参见infoAssessment.json 格式规格
Homework 评估的问题点¶
"type": "Homework" 的评估旨在让学生重复练习不同的问题变体(即问题中的不同随机值),直到他们掌握为止。这里的假设是,如果任何学生在家庭作业问题上花费足够长的时间,他们都应该能够获得满分。有关确切评分算法的详细信息,请参阅Homework 评估的问题评分详细信息。
每个问题都分配有一定数量的_自动分_(由内部或外部评分者自动分配的分数)和_手动分数_(由人工评分者手动分配 的分数)。
自动评分点是使用 autoPoints 值设置的,该值必须是单个数字,并且对应于正确尝试的初始值。例如,如果我们有 "autoPoints": 3,那么正确的答案值得 3 分,而 50% 正确的答案则值得 1.5 分。
如果学生回答错误,系统会使用新的随机数生成新的问题变体,学生可以重试。错误答案不会受到惩罚,学生可以根据自己的喜好多次尝试。另请参阅限制每个问题的尝试次数 中的 triesPerVariant 选项。
为了鼓励学生多次正确解决同一问题(以强调掌握),问题可以将 maxAutoPoints 设置为大于 autoPoints 的值。在这种情况下,学生可以获得多个正确解决方案的学分,每个解决方案针对不同的随机变体,直到达到 maxAutoPoints。例如,如果我们有 "autoPoints": 3 和 "maxAutoPoints": 9,那么学生可以正确解决问题的三个不同变体,并为每个变体获得 3 分。此后,学生可以继续解决问题进行练习,但不会再获得任何分数。如果未指定 maxAutoPoints,则问题的作用就好像 maxAutoPoints 等于 autoPoints。使用 maxAutoPoints 意味着该问题的总分为 maxAutoPoints 分,因此在前面的示例中,即使 autoPoints 设置为 3,这实际上也是一个 9 分问题(来自 maxAutoPoints)。要获得该问题的满分,学生必须多次正确回答。
默认情况下,使用 maxAutoPoints 时,ZJUI-Learn 会激励学生连续多次正确回答特定问题。这是通过增加每个连续正确答案的每次提交的值来完成的,同时如果答案不正确或部分正确则将其设置回原始值。因此,例如,如果 autoPoints 为 3,maxAutoPoints 为 30,则第一个正确答案值 3 分。如果下次提交也完全正确,则得 6 分;如果正确,以下答案值 9 分 — 总共获得 3+6+9=18 分;等等。如果任何答案不正确或部分正确,则正确解决新变体所获得的分数将重置为 3 分。要禁用此行为并使问题值保持恒定值 3,请在评估设置中设置 "constantQuestionValue": true,如下所示:
{
"constantQuestionValue": true,
"zones": [
{
"questions": [
/* ... */
]
}
]
}
使用 maxAutoPoints 时,获得问题满分所需的正确答案数量可能会有所不同,具体取决于学生能够提交的连续正确答案数量。如果我们使用 "constantQuestionValue": true,那么问题值永远不会改变,因此所需的正确答案数量只是 maxAutoPoints / autoPoints。然而,在默认情况下,当 constantQuestionValue 为假时,重复正确答案将使学生更快地达到 maxAutoPoints。例如,autoPoints 为 3,maxAutoPoints 为 30,连续正确回答问题 4 次的学生将获得满分 3+6+9+12=30 分。这意味着已经掌握的学生可以快速完成问题。相比之下,一个在这个问题上遇到困难的学生,如果一路上重复犯错,可能需要正确回答多达 30/3=10 次,才能将问题值重新重置回 3。
使用 manualPoints 值设置手动放码点。仅使用 autoPoints 或 manualPoints 之一是可以接受的,在这种情况下,分数的其他部分将被指定为 0 值。请注意,手动分数仅适用于问题一次,无论学生回答的提交数或变体数如何。
问题还可以将值设置为 points,而不是 autoPoints 和 manualPoints。如果使用此选项,则 gradingMethod 设置为 Manual 的问题将仅分配手动分数,而采用其他评分方法的问题将仅分配自动分数。为了避免歧义,在同一问题中同时使用 points 和 autoPoints,或 points 和 manualPoints 是错误的。如果使用 points,则应使用 maxPoints 而不是 maxAutoPoints。
Exam 评估的问题点¶
"type": "Exam" 的评估旨在测试学生对课程材料的了解。只要允许实时评分(默认),学生就可以重试问题以降低分数。有关确切评分算法的详细信息,请参阅Exam 评估的问题评分详细信息。
每个问题都分配有一定数量的_自动分_(由内部或外部评分者自动分配的分数)和_手动分数_(由人工评分者手动分配 的分数)。
考试问题只会生成问题的一个随机变体,但学生可以多次尝试回答问题(假设使用默认值 allowRealTimeGrading,以便学生可以知道他们的答案是否不正确并需要重新尝试)。对于每个问题,自动评分点是使用 autoPoints 值设置的,该值是一个值列表,例如 [10, 7, 5]。这意味着第一次尝试的正确答案值得 10 分,第二次尝试的正确答案值得 7 分,依此类推。如果 autoPoints 设置为单个值而不是列表,则仅允许对该点数进行一次尝试。
如果学生的答案获得部分学分,那么他们的分数就会相应减少。例如,对于 [10, 7, 5] autoPoints,第一次尝试提交正确 50% 将获得 5 分。 Exam 评估的问题评分详细信息 中描述了如何授予分数的具体细节。该评分系统的原则是应激励学生尽快正确回答问题,并且学生不应因再次尝试问题而失分。
使用 manualPoints 值设置手动放码点。仅使用 autoPoints 或 manualPoints 之一是可以接受的,在这种情况下,其他部分的点将被赋值为 0。
问题还可以将值设置为 points,而不是 autoPoints 和 manualPoints。如果使用此选项,则 gradingMethod 设置为 Manual 的问题将仅分配手动分数,而采用其他评分方法的问题将仅分配自动分数。为了避免歧义,在同一问题中同时使用 points 和 autoPoints,或 points 和 manualPoints 是错误的。如果使用 points,则应使用 maxPoints 而不是 maxAutoPoints。
Homework 评估的问题评分详细信息¶
本节详细介绍了如何对 Homework 问题的重复尝试进行评分(假设问题具有 autoPoints)。请参阅Homework 评估的问题点 以获取高级概述。 manualPoints 的评分单独处理。
两个重要的问题配置设置是:
autoPoints是学生因完全正确提交而获得的分数。maxAutoPoints是学生针对某个问题可以获得的最大分数,无论他们正确回答了多少次。
基本思想是,学生每次成功解决问题后都应该收到 autoPoints,最多可达 maxAutoPoints。当授予部分学分时,学生将获得该问题的部分分数,但前提是他们越来越接近正确答案。例如,如果学生重复回答正确答案为 50% 的问题,那么他们将因第一个此类答案获得 50% 的分数,但他们将无法积累分数以达到 maxAutoPoints。他们需要 100% 正确地回答问题,才能将分数提高到 50% 以上。
ZJUI-Learn如何奖励积分的具体细节如下。首先,当学生回答问题时,ZJUI-Learn 在内部计算许多变量:
- 提交百分比分数 是学生针对任何给定提交尝试获得的分数(介于 0% 和 100% 之间),根据问题评分规范进行评估。
- 当前最佳分数是学生迄今为止获得的最高提交百分比分数。如果学生已经至少一次提交达到 100%,则这是该学生自上次提交达到 100% 以来获得的最高提交百分比分数。这被初始化为零。
- 问题值是该问题当前的最大分值。从
autoPoints开始,每次连续正确提交都会增加autoPoints。初始化为autoPoints。 - 问题分是学生因该问题获得的总分。这个永远不会减少。这被初始化为零。
当学生提交问题的答案时,首先检查提交的有效性。例如,pl-number-input 元素认为非数字输入无效。如果提交有效,那么接下来确定是否应该对其进行评分。仅当学生使用“保存并评分”按钮明确请求,或者这是评估关闭时的最后一次提交时,才会对提交的内容进行评分。
对于学生提交的每个评分答案,评分算法如下:
- 如果
submission percentage score大于best current score,则将(submission percentage score - best current score) / 100 * question value添加到question points,将question points封顶在maxAutoPoints。 - 如果
submission percentage score为 100%,则将best current score重置为零。否则,如果submission percentage score大于best current score,则将best current score设置为submission percentage score。 - 如果
submission percentage score为 100% 并且constantQuestionValue未设置为 true,则将question value增加autoPoints。否则,将question value设置为autoPoints。
举个例子,假设一名学生对一个问题提交了九份不同程度正确性的报告。假设问题的 autoPoints 设置为 4,maxAutoPoints 设置为 16。学生提交的内容如下:
| 提交编号 | 提交perc。分数 | 目前最好成绩 | 问题价值 | 问题点 | 评论 |
|---|---|---|---|---|---|
| 初始化 | - | 0 | 4 | 0 | 初始值 |
| 1 | 50% | 50% | 4 | 2 | (50% - 0%) * 4 = 授予 2 分 |
| 2 | 80% | 80% | 4 | 3.2 | (80% - 50%) * 4 = 授予 1.2 分 |
| 3 | 20% | 80% | 4 | 3.2 | 分数没有提高,因此没有奖励或扣分 |
| 4 | 100% | 0% | 8 | 4 | (100% - 80%) * 4 = 0.8 分奖励,best current score 重置为 0%,question value 增加到 8 |
| 5 | 50% | 50% | 4 | 8 | (50% - 0%) * 8 = 授予 4 分,question value 重置为 4 |
| 6 | 0% | 50% | 4 | 8 | 分数没有提高,因此没有奖励或扣分 |
| 7 | 90% | 90% | 4 | 9.6 | (90% - 50%) * 4 = 授予或扣除 1.6 分 |
| 8 | 100% | 0% | 8 | 10 | 10 (100% - 90%) * 4 = 0.4 分奖励,best current score 重置为 0%,question value 增加到 8 |
| 9 | 100% | 0% | 12 | 12 16 | 16 100% * 8 = 授予 8 分,但 maxAutoPoints 积分上限为 16,best current score 重置为 0%,question value 增加到 12 |
经过上述九次提交后,学生已获得该问题的最高分。他们可以继续回答问题以进行额外的练习,但他们无法因此获得更多分数。
Exam 评估的问题评分详细信息¶
本节详细介绍了如何对 Exam 问题的重复尝试进行评分,假设该问题已将 autoPoints 设置为值列表。有关高级概述,请参阅Exam 评估的问题点。 manualPoints 的评分单独处理。
重要的问题配置设置是:
autoPoints是一个分数列表,其中第n条目是学生在第n问题尝试中完全正确提交所获得的分数。如果autoPoints设置为单个值而不是列表,则仅允许一次尝试。
基本思想是将 autoPoints 设置为点的递减序列,例如 [10, 7, 5, 2]。在这种情况下,第一次尝试正确答案值得 10 分,第二次尝试正确答案值得 7 分,依此类推。如果学生在四次尝试后仍未正确回答问题,他们将获得该问题的 0 分,并且不能再次尝试。
由于学生可能会因任何给定的提交尝试而获得部分学分,因此评分工作的细节变得更加复杂。 ZJUI-Learn 使用具有四个关键属性的评分系统,假设 autoPoints 是递减值的列表:
- 学生永远不会因为再次尝试问题而失分。
- 如果学生提交的答案得分高于之前的最佳答案,他们将始终获得一些额外的分数。
- 多尝试正确回答的分数总是比少尝试回答的分数低,因此总是鼓励学生尽快正确回答问题。
- 学生可以尝试提交的总数受到
autoPoints中条目数量的限制。
ZJUI-Learn如何奖励积分的具体细节如下。首先,当学生回答问题时,ZJUI-Learn 在内部计算许多变量:
- 提交百分比分数 是学生针对任何给定提交尝试获得的分数(介于 0% 和 100% 之间),根据问题评分规范进行评估。
- 当前最佳分数是学生迄今为止获得的最高提交百分比分数。这被初始化为零。
- 问题值是该问题当前的最大分值。对于该问题的第
n次尝试,这等于autoPoints[n]。 - 问题分是学生因该问题获得的总分。这个永远不会减少。这被初始化为零。
当学生提交问题的答案时,首先检查提交的有效性。例如,pl-number-input 元素认为非数字输入无效。如果提交有效,那么接下来确定是否应该对其进行评分。仅当学生使用“保存并评分”按钮明确请求,或者这是评估关闭时的最后一次提交时,才会对提交的内容进行评分。
对于学生提交的第n评分答案,评分算法如下:
- 将
question value设置为autoPoints[n]。 - 如果
submission percentage score大于best current score,则将(submission percentage score - best current score) / 100 * question value添加到question points。 - 如果
submission percentage score大于best current score,则将best current score设置为submission percentage score。 - 如果
submission percentage score为 100% 并且没有手动点,或者n是最后一次尝试,则禁止进一步提交该问题。
例如,假设一名学生针对 autoPoints 设置为 [10, 7, 5, 2] 的问题提交了 4 次不同正确程度的提交。学生提交的材料如下:
| 提交编号 | 提交perc。分数 | 目前最好成绩 | 问题价值 | 问题点 | 评论 |
|---|---|---|---|---|---|
| 初始化 | - | 0 | - | 0 | 初始值 |
| 1 | 50% | 50% | 10 | 10 5 | (50% - 0%) * 10 = 授予 5 分 |
| 2 | 20% | 50% | 7 | 5 | 分数没有提高,因此没有奖励或扣分 |
| 3 | 80% | 80% | 5 | 6.5 | 6.5 (80% - 50%) * 5 = 授予 1.5 分 |
| 4 | 70% | 80% | 2 | 6.5 | 6.5分数没有提高,因此没有奖励或扣分 |
经过上述四次提交后,学生在该问题上获得了 6.5 分,总分为 65% (6.5/10)。他们无法再尝试提交该问题。
评估实例、问题选择和问题顺序¶
ZJUI-Learn 区分_评估_和_评估实例_。 评估_由 assessments/ 目录中的配置确定,类似于“期中 1”。给定一个评估,ZJUI-Learn 需要为每个学生(或学生组,进行小组评估)选择随机问题列表,而这个选择就是学生/小组的_评估实例。每个评估只有一份副本,但每个学生/小组都有自己的评估实例。
分配给特定评估实例的具体问题通过三个步骤进行选择:
-
对于区域
questions数组中的每个条目,要么采用该条目中的单个问题,要么从问题替代列表中随机选择一些问题以给出_选定的问题_。如果指定了numberChoose,则从备选列表中随机选择多个问题(默认选择所有备选)。 -
对于每个区域,将每个
questions条目中的_所选问题_连接起来,形成_可用区域问题_的总列表。如果为区域指定了numberChoose,则从可用区域问题中随机选择那么多问题作为_区域问题_(默认为选择所有可用区域问题)。如果启用随机播放,则随机播放_区域问题_的顺序。选择试图在不同问题之间均匀地分层/分散选择。
{ "zones": [ { "numberChoose": 3, "questions": [ { "alternatives": [{ "id": "q1" }, { "id": "q2" }] }, { "alternatives": [{ "id": "q3" }, { "id": "q4" }], "numberChoose": 1 }, { "id": "q5" } ] } ] }当
numberChoose设置为 3 时,它将尝试从每组中选择一个问题(展开选择)。因此,将选择第一问题的两个选项之一、第二问题的两个选项之一以及第三问题。该算法永远不会同时选择q1和q2以及numberChoose = 3。 -
连接每个区域的_区域问题_以形成_评估问题_的总集。这组问题构成了该学生/小组的_评估实例_。
每个区域在评估中都按给定的顺序出现(对于每个评估实例来说,这不是随机的)。在每个区域内,考试的问题顺序是随机的,但家庭作业的问题顺序不是随机的(但请参阅 shuffleQuestions 选项)。
更新评估¶
Homework 和 Exam 评估之间更新评估实例的规则有所不同。
Exam 评估更新: 考试评估实例是在学生开始考试时生成的,并且它们永远不会自动删除、重新生成或更新,即使原始评估以某种方式发生更改也是如此。这是一种安全机制,可以避免学生的评估在考试期间发生变化。但是,如果您想强制重新生成评估实例,则可以通过删除“学生”选项卡中的评估实例来实现。在撰写评估时,您可能需要多次执行此操作。一旦评估开始,您当然应该非常小心地执行此操作(基本上,一旦评估正在进行,就不要在生产服务器上执行此操作)。
Homework 评估更新: 添加到作业的新问题将自动集成到当前正在进行的学生作业中。对 maxPoints 或 maxBonusPoints 的更新将在学生下次对问题评分时生效。学生的“分”和“百分比分”永远不会减少。
考核点¶
学生的百分比分数将由他们获得的分数除以评估的 maxPoints 值来确定(遵守评估访问规则中与 credit 相关的规则)。
{
"uuid": "cef0cbf3-6458-4f13-a418-ee4d7e7505dd",
"maxPoints": 50,
"maxBonusPoints": 5
}
在评估配置中,maxPoints 确定学生获得 100% 分数所需获得的分数。因此,百分比分数将根据学生获得的分数除以 maxPoints 的值来计算。如果未提供,则 maxPoints 是根据所有区域中所有问题可获得的最大分数计算的。
默认情况下,一旦学生获得足够的分数达到 maxPoints 的值,任何进一步的分数都不会影响评估分数。但是,如果为 maxBonusPoints 设置一个值,并将 credit 设置为 100,则学生可以获得额外分数,总计最多为 maxPoints + maxBonusPoints。该百分比仍然基于maxPoints,因此使用maxBonusPoints可以让学生通过完成额外的问题或在手动评分中获得额外的奖励积分来获得高于100%的百分比。如果设置了 maxBonusPoints,但未提供 maxPoints,则将从所有问题的最大点数中减去 maxBonusPoints 来计算 maxPoints。
使用 maxBonusPoints 或大于 100 的 credit 值的选择取决于教师的选择。基于 maxBonusPoints 的额外分数旨在根据额外的工作而记入,而高于 100 的 credit 将奖励提前完成。可以将它们组合起来,并在同一评估中一起使用它们。如果在 credit 大于 100 时设置了 maxBonusPoints,则百分比基于 maxBonusPoints 和 credit(有关详细信息,请参阅 credit)。
多实例与单实例评估¶
默认情况下,所有评估都是_单实例_,这意味着每个学生只有一个可以完成的评估实例,一旦完成该评估实例,他们就无法再次进行评估。这是家庭作业、测验、考试等的预期行为。
对于练习考试,通常需要通过设置选项 "multipleInstance": true 来进行_多个实例_评估。这将允许学生创建新的评估实例并重复尝试整个评估。此设置可用于学生需要多次尝试相同评估的情况,无论是无学分(即仅用于练习),还是学分适用于总分最高的尝试。
请注意,此设置不适合在不同环境中创建多次尝试的场景。例如,如果学生参加考试以获得学分,然后允许在没有练习学分的情况下重新尝试同一考试,或者课程中使用的分数是尝试的加权平均值,则多实例选项不是有效的方法。在这种情况下,更好的选择是对原始考试和练习版本进行单独评估(可能使用相同的问题)或重新尝试。练习版本本身可能适合多种情况,但不适用于原始考试。
支持小组合作进行协作评估¶
默认情况下,评估实例仅与一名用户绑定。通过使用 groups 配置,多个学生将能够处理同一个评估实例。
{
"groups": {
"minMembers": 2,
"maxMembers": 6,
"studentPermissions": {
"canCreateGroup": true,
"canJoinGroup": true,
"canLeaveGroup": true,
"canNameGroup": true
}
}
}
群组配置¶
groups 对象支持以下属性:
| 属性 | 类型 | 默认 | 描述 |
|---|---|---|---|
minMembers |
整数 | - | 一个小组的最少学生人数。 |
maxMembers |
整数 | - | 一个小组中的最大学生人数。 |
roles |
数组 | [] |
组中的自定义用户角色数组。请参见启用自定义组角色。 |
studentPermissions |
对象 | {} |
学生群组管理权限。见下文。 |
rolePermissions |
对象 | {} |
基于角色的小组评估权限。请参阅添加评估权限。 |
groups 对象的存在表明评估启用了小组工作;删除该属性以禁用小组工作。
学生权限¶
studentPermissions 对象控制学生可以执行哪些操作来管理其小组:
| 属性 | 类型 | 默认 | 描述 |
|---|---|---|---|
canCreateGroup |
布尔 | true |
允许学生创建小组。 |
canJoinGroup |
布尔 | true |
允许学生通过加入代码加入其他小组。 |
canLeaveGroup |
布尔 | true |
允许学生离开小组。 |
canNameGroup |
布尔 | true |
允许学生在创建小组时选择小组名称。如果设置为 false,将使用默认名称。 |
???注意“旧默认值”
The previous legacy defaults were `canCreateGroup: false`, `canJoinGroup: false`, `canLeaveGroup: false`, `canNameGroup: true`.
请注意,在学生开始学习后,将评估从个人评估更改为基于小组的评估或反之亦然,将导致学生作业丢失。
???注意“旧组属性”
The legacy format for enabling group work uses `groupWork: true` along with other top-level properties:
```json title="infoAssessment.json"
{
"groupWork": true,
"groupMaxSize": 6,
"groupMinSize": 2,
"studentGroupCreate": true,
"studentGroupChooseName": true,
"studentGroupJoin": true,
"studentGroupLeave": true
}
```
| Attribute | Type | Default | Description |
| ------------------------ | ------- | ------- | ---------------------------------------------------------------------------------------------------------- |
| `groupWork` | boolean | false | Enable the group work for the assessment. |
| `groupMaxSize` | integer | - | The maximum size of a group (default: no maximum). |
| `groupMinSize` | integer | - | The minimum size of a group (default: no minimum). |
| `studentGroupCreate` | boolean | false | Allow students to create groups. |
| `studentGroupChooseName` | boolean | true | Allow students to choose a group name when creating a group. If set to false, a default name will be used. |
| `studentGroupJoin` | boolean | false | Allow students to join other groups by join code. |
| `studentGroupLeave` | boolean | false | Allow students to leave groups. |
管理群组¶
教师可以在评估的“组”选项卡上管理组。此页面允许教师创建单独的组、删除现有组以及在组中添加或删除用户。
要批量创建组,请上传以下格式的 CSV 文件:
group_name,uid
groupA,one@example.com
groupA,two@example.com
groupB,three@example.com
groupB,four@example.com
评估的“下载”选项卡有一个 <assessment>_groups.csv 文件,其中包含当前组成员身份。这可用于将组成员资格从一项评估复制到另一项评估。还可以使用“操作”>“导出 CSV”从“组”选项卡导出同一文件。
或者,“随机分配”按钮可用于根据所需的最小/最大小组规模将学生随机分配到小组。
学生小组作业的选择¶

如果教师没有将学生分配到某个小组,则该学生需要先加入一个小组,然后才能打开其评估实例。他们可以创建一个新小组,也可以通过加入代码加入现有小组,该代码可以从另一位同学那里获得。
在计算学生的小组评估成绩时,ZJUI-Learn 将始终使用其小组评估实例的分数。
Info
学生无法实时看到彼此的编辑。

学生可以看到小组成员的UID,这可以成为ZJUI-Learn之外相互交流的联络点。他们也可以离开自己的团队加入另一个团队。
启用自定义组角色¶
默认情况下,参与协作小组评估的学生可以查看并提交每个问题。但是,教师可以定义自定义组角色,可以为其分配不同的权限,以促进基于角色的团队合作。可以将评估配置为允许或限制具有特定角色的学生的某些操作,例如:
- 提交具体问题
- 查看具体问题
- 为其他学生分配小组角色
尽管在大多数情况下,每个学生都应该扮演一个角色,但在某些狭窄的场景中,学生可以扮演多个角色,例如当用户在评估开始后离开和加入小组时。
要选择加入自定义组角色,必须在 infoAssessment.json 文件的 groups.roles 数组中定义角色。例如:
{
"groups": {
"roles": [
{
"name": "Manager",
"minMembers": 1,
"maxMembers": 1
},
{
"name": "Recorder",
"minMembers": 1,
"maxMembers": 1
},
{
"name": "Reflector",
"minMembers": 1,
"maxMembers": 1
},
{
"name": "Contributor"
}
],
"rolePermissions": {
"canAssignRoles": ["Manager"]
}
}
}
| 属性 | 类型 | 默认 | 描述 |
|---|---|---|---|
name |
字符串 | - | 角色的名称。 |
minMembers |
整数 | 0 | 在评估中担任此角色的学生所需的最低人数。 |
maxMembers |
整数 | - | 评估中担任此角色所需的最大学生人数。 |
???注意“旧组角色格式”
The legacy format for defining custom group roles uses `groupRoles` at the root level:
```json title="infoAssessment.json"
{
"groupRoles": [
{
"name": "Manager",
"minimum": 1,
"maximum": 1,
"canAssignRoles": true
},
{
"name": "Recorder",
"minimum": 1,
"maximum": 1
},
{
"name": "Reflector",
"minimum": 1,
"maximum": 1
},
{
"name": "Contributor"
}
]
}
```
| Attribute | Type | Default | Description |
| ---------------- | ------- | ------- | ---------------------------------------------------------------------------- |
| `name` | string | - | The name of the role. |
| `minimum` | integer | 0 | The minimum required number of students holding this role in the assessment. |
| `maximum` | integer | - | The maximum required number of students holding this role in the assessment. |
| `canAssignRoles` | boolean | false | Allow students with this role to assign roles to other students. |
学生通常在开始评估之前选择自己的角色,但如果需要,他们可以在评估中更改自己的角色。为了防止无效的角色配置,如果小组的角色配置不符合教师的规范,ZJUI-Learn 会阻止学生查看问题。
添加评估权限¶
权限可以在两个地方配置:
- 评估级别默认值使用
groups.rolePermissions - 使用
canView和canSubmit覆盖区域或问题级别
groups.rolePermissions 对象定义了整个评估的默认权限:
{
"groups": {
"roles": [
{ "name": "Manager", "minMembers": 1, "maxMembers": 1 },
{ "name": "Recorder", "minMembers": 1, "maxMembers": 1 },
{ "name": "Reflector", "minMembers": 1, "maxMembers": 1 },
{ "name": "Contributor" }
],
"rolePermissions": {
"canAssignRoles": ["Manager"],
"canView": ["Manager", "Reflector", "Recorder", "Contributor"],
"canSubmit": ["Recorder"]
}
}
}
| 属性 | 类型 | 默认 | 描述 |
|---|---|---|---|
canAssignRoles |
字符串数组 | [] |
可以将其他用户分配给角色的角色名称。 |
canView |
字符串数组 | - | 可以查看此评估中的问题的角色名称。 |
canSubmit |
字符串数组 | - | 可以在此评估中提交问题的角色的名称。 |
将 canView 或 canSubmit 设置为 [](空数组)意味着没有角色可以分别查看或提交该部分评估。如果未设置任一属性,则意味着每个角色都具有与该属性关联的权限,即具有任何角色的任何学生都可以查看或提交评估的该部分。
在较高级别定义的权限会沿着评估层次结构向下传播(评估⇾区域⇾问题),但在较低级别定义的权限将覆盖较高级别的权限。例如:
{
"groups": {
"roles": [{ "name": "Manager" }, { "name": "Recorder" }, { "name": "Reflector" }],
"rolePermissions": {
"canView": ["Manager", "Reflector", "Recorder"]
}
},
"zones": [
{
"canSubmit": ["Recorder"],
"questions": [
{ "id": "question1", "points": 1 },
{ "id": "question2", "points": 1, "canView": ["Recorder"] },
{ "id": "question3", "points": 1, "canView": ["Reflector"], "canSubmit": ["Reflector"] },
{ "id": "question4", "points": 1, "canView": null }
]
}
]
}
在上面的示例中,问题 1 可以由具有管理者、反射者或记录者角色的学生查看,但只有具有记录者角色的学生才能根据评估级别(用于查看)和区域级别(用于编辑)中定义的默认角色提交答案。问题2只能由记录者查看和提交,而问题3只能由反射者查看和提交。问题 4 使用 null 特殊值覆盖默认设置,并允许任何角色的学生查看问题,但只有具有记录员角色的学生才能提交答案。
为学生分配角色¶
当学生加入小组时,他们会自动分配一个角色。在评估之前和评估期间,学生始终可以查看小组中其他学生的角色。学生可以单击“查看角色信息”以查看有关评估小组角色的更多信息。

展开后,小组评估会显示有关每个角色的信息,例如最小/最大分配数量以及某个角色是否可以分配其他角色。

任何具有分配者角色的学生都可以查看其他控件来更改组中其他用户的角色。具有分配者角色的学生可以在评估之前和评估期间重新分配小组角色。

基于角色权限的限制¶
当教师将问题的查看限制为某些角色时,没有这些角色的用户将无法查看该问题。

此外,当讲师将提交问题限制为某些角色时,没有这些角色的用户将无法提交该问题。

当角色配置无效时(当用户离开群组或新用户加入群组时可能会发生这种情况),学生将无法看到任何问题,直到审核角色为止。具有分配者和非分配者角色的用户都可以查看这些错误。然后,具有分配者角色的用户需要更新角色以修复不一致的问题。

强迫学生按顺序完成问题¶
Warning
我们强烈不鼓励在高风险考试中使用此选项,因为它可能非常不利于学生的成功。请参阅下文了解更多详情。
某些评估可能被设计为线性完成,其中每个问题都假设学生已完成并理解前一个问题(例如,实验室工作表)。默认情况下,ZJUI-Learn 允许学生按照自己喜欢的任何顺序完成问题,但可以将评估配置为不允许学生查看未来未解决的问题。
要启用这些功能,请将任何问题的 advanceScorePerc 设置为 0 到 100 之间的数字。下面是一个示例,其中省略了样板属性:
{
"zones": [
{
"questions": [
{ "id": "q1", "advanceScorePerc": 50 },
{ "id": "q2", "advanceScorePerc": 100 },
{ "id": "q3", "advanceScorePerc": 0 },
{ "id": "q4", "advanceScorePerc": 80 },
{ "id": "q5", "advanceScorePerc": 100 }
]
}
]
}
每个问题都会阻止后面的所有问题,直到满足其 advanceScorePerc 为止。在上面的示例中,q1 会阻止所有后续问题,直到学生得分至少为 50%。然后 q2 会阻止所有后面的问题,直到学生获得满分。一旦学生通过了 q2,q3 和 q4 都立即可用,因为 q3 不会进行任何阻止。最后,q4 会阻止剩余的 q5,直到学生获得 80% 的分数。 q5 上的 advanceScorePerc 属性无关紧要,因为其后没有任何问题。
与 advanceScorePerc 进行比较的相关分数是学生对该问题的_最高提交分数_,而不是他们在整个问题上的百分比分数。例如,假设上面的 q1 有 "points": [10, 4, 2, 1]。然后,在第二次尝试中提交正确率 50% 的学生将解锁该问题,即使他们在该问题上只得到 2 分(满分 10 分)(4 分第二次机会值的 50%)。 advanceScorePerc 使用的提交分数是基于问题的自动评分部分的分数,不考虑手动评分 分数。因此,纯手动评分的问题不应设置 advanceScorePerc。
还可以在 zone 或 assessment 级别上设置 advanceScorePerc,这将作为该区域或评估中所有问题的默认值。例如,以下配置与上面的配置等效:
{
"zones": [
{
"advanceScorePerc": 100,
"questions": [
{ "id": "q1", "advanceScorePerc": 50 },
{ "id": "q2" },
{ "id": "q3", "advanceScorePerc": 0 },
{ "id": "q4", "advanceScorePerc": 80 },
{ "id": "q5" }
]
}
]
}
在上面的示例中,q2 和 q5 的 advanceScorePerc 将为 100,因为区域级属性用作默认值。
Note
advanceScorePerc 为 0 相当于根本没有该属性。
对于随机化学生看到的问题顺序的评估,advanceScorePerc 限制适用于每个学生,使用给定的问题顺序。如果需要特定的问题顺序,请参阅更改问题顺序随机化。
如果学生在某个问题上用尽了所有尝试,并且无法再提交任何尝试,则该问题将自动解锁,无论他们在该问题上获得多少分数。这是为了防止学生永久陷入评估,无法获得进一步的学分。
关于有序问题和高风险考试的警告¶
advanceScorePerc 属性旨在用于小组工作 和间接支持的评估类型,例如工作表(请参阅多实例评估)。为了让学生最好地展示他们对课程材料的了解,我们强烈不鼓励在高风险考试中使用此功能,因为学生无法得到课程工作人员的帮助。
锁点¶
锁定点可让您在区域之间创建单向障碍。将 "lockpoint": true 设置在学生必须明确确认继续前进的区域上。一旦交叉,前面区域中的所有问题都将变为只读:学生仍然可以查看之前的作业和提交的内容,但无法在那里提交新的答案。
{
"uuid": "3d4ef390-5e04-4a7d-9dce-6cf8f5c17311",
"type": "Exam",
"title": "Exam with lockpoints",
"set": "Exam",
"number": "18",
"zones": [
{
"title": "Conceptual questions",
"questions": [{ "id": "addNumbers", "points": 10 }]
},
{
"title": "Applied questions",
"lockpoint": true,
"questions": [{ "id": "partialCredit3", "points": 10 }]
},
{
"title": "Advanced questions",
"lockpoint": true,
"questions": [{ "id": "orderBlocks", "points": 10 }]
}
]
}
在此配置中,学生最初只能访问“概念性问题”。完成这些问题后,他们可以跨越第一个锁点来解锁“应用问题”,这使得“概念问题”变为只读。然后,第二个锁点以相同的方式打开“高级问题”。
锁定点按顺序交叉。如果配置了多个锁点,学生必须按区域顺序穿过它们。一旦越过前一个锁定点,锁定点区域之间没有 "lockpoint": true 的区域就可以访问。例如,如果区域 2 和区域 4 有锁定点,但区域 3 没有,则穿过区域 2 锁定点将解锁区域 2 和区域 3。
锁定点和 advanceScorePerc 一起工作:学生仍然必须满足任何有序门控才能穿过下一个锁定点。
在小组评估中,锁定点由小组共享。任何成员都可以跨越锁定点,并且生成的只读状态适用于该组中的每个人。
即使某些锁定点没有跨越,学生也可以随时完成评估。
锁定点不会使工作区变为只读。他们控制问题提交访问,而不是工作区容器访问。
!!! warning “为主动评估添加锁定点”
为了避免让学生感到惊讶,请在学生开始评估之前配置锁定点。在学生开始后添加锁定点可能会锁定他们之前工作的区域,直到他们穿过新的锁定点。
自动关闭考试评估¶
默认情况下,考试评估将在学生六小时不活动后自动关闭。这通常意味着您不需要明确关闭学生在完成考试时意外未关闭的考试。如果您想防止自动关闭,则可以将 "autoClose": false 设置为 infoAssessment.json 文件中的顶级选项。
问题报告¶
要允许学生报告问题问题(答案不正确、措辞不清楚等),请在 infoAssessment.json 文件中设置 "allowIssueReporting": true 属性,或将其设置为 false 以禁止报告。该选项默认为 true。
当允许问题报告时,学生会看到一个标有“报告此问题中的错误”的按钮,并且他们可以提交简短的文本表单。

课程工作人员会看到任何报告的问题都显示在“问题”选项卡上。

评估工具¶
评估工具为学生提供了在解决问题时可以使用的实用程序。可以在评估级别配置工具或按区域覆盖工具。
可用工具¶
| 工具 | 描述 |
|---|---|
calculator |
具有表达式求值、历史记录和度/弧度切换功能的科学计算器。 |
计算器¶
计算器工具是一个科学计算器,具有表达式求值、历史记录和度/弧度切换功能。计算器历史记录在整个评估过程中保持不变。
| 物业 | 类型 | 描述 |
|---|---|---|
enabled |
布尔 | 计算器是否启用。 (默认:false) |
为整个评估启用工具¶
要为评估中的所有问题启用工具,请将 tools 属性添加到 infoAssessment.json 文件:
{
"tools": {
"calculator": {
"enabled": true
}
}
}
每个区域覆盖工具¶
区域级工具配置会覆盖每个工具的评估级配置。例如,您可以为整个评估启用计算器,但在特定区域禁用它:
{
"tools": {
"calculator": {
"enabled": true
}
},
"zones": [
{
"title": "Part 1: No calculator",
"tools": {
"calculator": {
"enabled": false
}
},
"questions": [{ "id": "manualComputation", "points": 10 }]
},
{
"title": "Part 2: Calculator allowed",
"lockpoint": true,
"questions": [{ "id": "complexCalculation", "points": 10 }]
}
]
}
在此示例中,计算器在“第 1 部分:无计算器”(区域级覆盖)中被禁用,但在“第 2 部分:允许计算器”(继承自评估级别配置)中保持启用状态。由于“第 2 部分:允许使用计算器”有一个锁定点,因此学生必须先完成“第 1 部分:不允许使用计算器”中的所有问题,然后才能尝试“第 2 部分:允许使用计算器”中的任何问题。
Warning
强烈建议在配置每个区域的工具时使用 lockpoints。如果您不使用锁定点,学生可以通过保持浏览器选项卡打开并打开其他区域的问题来访问其他区域的工具。
访问控制¶
详情参见考核门禁页面。
默认情况下,只有课程工作人员才能访问评估。要允许学生访问评估,请在评估访问页面或评估的 infoAssessment.json 文件中配置 accessControl。
访问控制选项还可用于控制评估的开始/结束日期并对逾期提交进行处罚。再次参见考核访问控制页面了解详细信息和示例。
添加评估文本和链接¶
您可以将 text 属性添加到 infoAssessment.json,该属性可用于提供附加说明、公式表等。以下胡子模板变量可用:
| 变量 | 描述 |
|---|---|
client_files_course |
课程级客户端文件的 URL 路径 |
client_files_course_instance |
课程实例级客户端文件的 URL 路径 |
client_files_assessment |
评估级客户端文件的 URL 路径 |
{
"text": "<a href=\"{{ client_files_assessment }}/formulas.pdf\">Formula sheet</a>"
}
!!! note “遗留语法”
为了向后兼容,支持具有 EJS 语法的 `camelCase` 名称(`<%= clientFilesCourse %>`、`<%= clientFilesCourseInstance %>`、`<%= clientFilesAssessment %>`)。更喜欢使用 `snake_case` 胡子模板变量(`{{ client_files_course }}`、`{{ client_files_course_instance }}`、`{{ client_files_assessment }}`)。
有关使文件可供用户使用的详细信息,请参阅 clientFiles 和 serverFiles 页面。
学生附上的个人笔记¶
默认情况下,学生可以通过上传文件或将文件内容粘贴为文本的方式将文件作为个人笔记附加到评估中。这可以在评估概述页面或单个问题页面上完成。学生可以随时查看评估,查看这些文件。
这样做的目的是为了让学生在考试时做额外的笔记,以供以后复习。例如,如果学生有一个用于解决问题的 Matlab 脚本,他们可以将其附加到该问题中,以便稍后查看。
尽管我们不建议在常规考试中这样做,但可以通过将 "allowPersonalNotes": false 设置为 infoAssessment.json 文件中的顶级选项来禁用个人注释。请注意,此设置不会删除在设置该选项之前上传的注释,但会阻止对其进行任何访问或修改。
禁用个人笔记的一个特殊用例是通过单独的考前评估上传“公式表”。这些上传应作为常规文件上传进行,以便课程工作人员可以审核。然后可以配置评估,以便在考试期间可以访问提交的内容。禁用“公式表”评估的个人笔记可确保学生无法附加他们在考试期间可以访问的任何其他信息。
禁用实时评分¶
ZJUI-Learn 旨在为学生提供对其作业的即时反馈。但是,如果您希望更接近地复制纸质考试体验,您可以阻止学生对作业进行评分(我们称之为“实时评分”)。
Note
对于 Homework 评估,无法禁用实时评分,因为即时反馈是作业体验的核心部分。以下说明仅适用于 Exam 评估。
Warning
学生通常期望获得即时反馈并从中受益,因此只有在有特定原因的情况下才应启用此设置。
可以对整个评估禁用实时评分:
{
"allowRealTimeGrading": false
}
通过将 "allowRealTimeGrading": false 添加到 infoAssessment.json 文件的相关部分,还可以针对特定区域、替代池或问题禁用它。例如,以下配置仅禁用第二个区域的实时评分:
{
"zones": [
{
"questions": [
{ "id": "q1", "points": 10 },
{ "id": "q2", "points": 10 }
]
},
{
"allowRealTimeGrading": false,
"questions": [
{ "id": "q3", "points": 10 },
{ "id": "q4", "points": 10 }
]
}
]
}
禁用实时评分会改变学生体验的许多方面:
- 对于问题,只有“保存”按钮可用;将不会显示“保存并评分”按钮。
- 仅当至少某些问题启用了实时评分时,评估概述上的“对已保存的答案进行评分”按钮才会显示,并且单击后,只会对这些问题进行评分。
- 对于禁用实时评分的问题,不会显示分数信息。
如果时间限制已使用并用完,评估将自动对所有保存的答案进行评分。关闭后学生的可见性由完成后 设置控制。
笔记
When real-time grading is disabled, submissions will still be parsed, and students will be informed of invalid submissions when they click the "Save" button. This includes any element-specific validation (e.g., checking for blank answers, or checking if numeric inputs have numeric values), as well as question-specific custom parse functionality. As usual, invalid submissions do not count towards limited attempts.
Students will not be prevented from completing the assessment with invalid submissions should they choose to do so, or if they run out of time before crafting a valid submission. However, invalid submissions will not trigger any auto-grading process, and will by default cause the student to get a zero on the whole question (even if there are elements in the submission with valid answers). Manual grading is still available for these submissions.
限制每个问题的尝试次数¶
每个学生被允许尝试每个问题的次数可以以不同的方式设置,具体取决于问题和评估的类型。
对于“考试”类型的评估,每个学生只会看到每个问题的一个变体。尝试次数将由 points 或 autoPoints 设置确定:如果有单个值,则对该问题进行一次尝试;如果它设置为点列表,则该列表中的每个值都会有一次尝试。换句话说,尝试次数是根据点列表中的值的数量确定的。
对于“家庭作业”类型的评估,学生将可以对每个问题进行无限次的尝试。默认情况下,每次新尝试都对应于问题的不同变体,除非:
- 问题设置为问题配置文件中的
"singleVariant": true。在这种情况下,学生将可以无限次尝试相同的变体。
-
triesPerVariant设置如下。在这种情况下,学生将有一定次数的尝试来正确回答问题。一旦学生正确回答了问题,或者每个变体的尝试次数用完,学生将可以选择尝试新的变体。infoAssessment.json{ "zones": [ { "questions": [ { "id": "singleAttemptQ", "points": 10 }, { "id": "tryOncePerVar", "points": 10 }, { "id": "tryThreeTimesPerVar", "points": 10, "triesPerVariant": 3 } ] } ] }
限制对答案进行评分的比率¶
实践在学习中很重要,应该有犯错的空间并从中学习。即时反馈会有所帮助,因为尽管人力资源有限,它仍然可以提供反馈。然而,为了防止盲目地试错问题解决,控制重新提交可能是一个有效的工具(Ihantola 等人,编程作业自动评估最新系统的回顾)。
限制向学生提供的反馈数量的一种方法是限制允许评分的提交的比率。这可以通过使用 gradeRateMinutes 设置来完成。如果设置,该值指示学生在对问题评分后需要等待多长时间才能重新提交同一问题的新答案进行评分。学生仍然可以保存提交的内容,但在等待时间结束或关闭评估之前无法评分。默认情况下,该值设置为 0,这意味着没有限制。
可以为评估中的每个特定问题设置 gradeRateMinutes 值。它还可以针对区域或完整评估进行设置,在这种情况下,它将单独应用于区域或评估中的每个问题。换句话说,如果评估设置了评分率,一旦学生提交了一个问题的评分答案,他们就必须等待提交该问题的新答案,但同时可以对其他问题进行评分。
{
"zones": [
{
"gradeRateMinutes": 30,
"questions": [
{ "id": "canOnlySubmitEvery30minutes", "points": 10 },
{ "id": "canOnlySubmitEvery60minutes", "points": 10, "gradeRateMinutes": 60 },
{ "id": "canSubmitAnytime", "points": 10, "gradeRateMinutes": 0 }
]
}
]
}
荣誉守则¶
默认情况下,Exam 评估要求学生在开始评估之前证明自己的身份并承诺荣誉代码:
- 我证明我是
name并且我可以参加此评估。 - 我以我的名誉保证,我不会在本次评估中提供或接受任何未经授权的协助,并且所有工作都将由我自己完成。
要禁用此要求,请将 "requireHonorCode": false 设置为 infoAssessment.json 文件中的顶级选项。
荣誉代码的文本基于马里兰大学的荣誉承诺 和罗切斯特大学的考试荣誉承诺。这是一个“修改后的”荣誉守则(McCabe et al., 2002),与“传统”守则相反,“传统”守则通常还要求学生报告他们观察到的任何违反荣誉守则的行为。
可以通过在infoAssessment.json文件中设置honorCode来自定义荣誉码。该字段支持Markdown语法进行格式化;不支持 HTML。此字段还可以使用 {{user_name}} 接受 Mustache 模板以包含用户名。
例如:
{
"honorCode": "I, {{user_name}}, affirm that I will complete this exam with honesty and integrity."
}
问题标题¶
问题标题可以帮助学生识别和讨论问题,但可能包含主题名称或其他仅供教职员工使用的上下文。因此,Homework 评估默认向学生显示问题标题,而 Exam 评估默认隐藏问题标题。
可以通过将 showQuestionTitles 设置为 infoAssessment.json 文件中的顶级选项来覆盖此行为。
例如:
{
"showQuestionTitles": true
}
链接到评估¶
一些教师可能希望发布链接,将学生直接指向 ZJUI-Learn 上的评估。这些链接可能会发布在课程网页、Compass 或 Canvas 等 LMS 系统中,或通过电子邮件或其他消息平台发送给学生。教师应注意,浏览器上列出的 URL 指向评估的教师视图,学生通常无法访问该视图。
每个评估的“设置”选项卡都包含一个可以直接提供给学生的链接。此链接将学生直接带到该评估,如果启用了自助注册,则如果他们尚未注册,它将自动将他们注册到课程中。
客户指纹追踪及变更¶
当学生进行评估时,ZJUI-Learn 会跟踪用户的 IP 地址、会话 ID 和用户代理(这包括操作系统、浏览器应用程序和版本)。这些属性共同构成了客户端指纹。然后在访问评估实例的事件期间记录指纹。例如,当学生查看问题时,客户指纹的记录会与查看事件一起保存。
当评估打开并处于活动状态时,每次记录客户端指纹时,ZJUI-Learn 都会根据用于访问该评估的先前客户端指纹进行检查。 ZJUI-Learn将跟踪并显示评估过程中指纹发生变化的次数。您可以在评估的“学生”选项卡上查看指纹更改的次数。您还可以通过访问学生的评估实例并查看事件日志的“指纹”列来查看有关客户端指纹的更多详细信息。
某些指纹变化可能会在评估过程中自然发生,例如计算机连接到不同的 Wi-Fi 接入点或学生在做作业时改变位置。然而,在评估过程中,类似考试的环境中发生的大量变化可能表明学生之间存在勾结。特别是,许多指纹变化可能表明多个用户同时访问考试,例如考场内的一名学生和考场外的另一名学生。在这种情况下,评估实例日志中指纹的确切模式将有助于确定是否确实存在学术诚信问题。
指纹更改计数器仅在评估开放且活动时更新。评估结束后,仍会跟踪指纹,但指纹更改的计数不再更新,因为评估关闭后,学生将只能访问评估进行审核,而不会再提交新的内容。此时通过不同设备或浏览器进行访问通常不会引起潜在不当行为的担忧。