课程配置¶
Note
每当您在 ZJUI-Learn 的本地副本上编辑 infoCourse.json 文件时,都需要单击页面标题中的“从磁盘加载”按钮,以便本地 ZJUI-Learn 服务器重新加载更改。
目录布局¶
课程由单个目录指定,其结构如下:
exampleCourse
+-- infoCourse.json # Course configuration (see below)
+-- questions # (1)!
| `-- ...
| `-- ...
+-- courseInstances # (2)!
| +-- Fa16
| | `-- ...
| `-- Sp17
| `-- ...
+-- elements # custom HTML elements for the course
| +-- element1
| `-- ...
+-- clientFilesCourse # files available from the client at all times (3)
| `-- library.js
| `-- refs.html
| `-- formulas.pdf
`-- serverFilesCourse # files only accessible from code on the server (4)
`-- secret1.js
- 有关更多信息,请参阅问题文档。
- 有关更多信息,请参阅课程实例文档。
- 有关信息,请参阅
clientFiles和serverFiles文档。 - 有关信息,请参阅
clientFiles和serverFiles文档。
- 请参阅 ZJUI-Learn 中的示例课程目录
- ZJUI-Learn为所有课程提供的元素列表请参见HTML元素列表;只要元素存在,ZJUI-Learn 就会使用元素的课程版本。
- 有关
clientFilesCourse和serverFilesCourse目录的信息,请参阅 clientFiles 和 serverFiles。
infoCourse.json¶
该文件指定了有关课程的基本信息:
{
"name": "TAM 212",
"title": "Introductory Dynamics",
"assessmentSets": [],
"assessmentModules": [],
"topics": [],
"tags": [],
"sharingSets": []
}
???例如“示例 infoCourse.json”
```json title="infoCourse.json"
{
"name": "TAM 212",
"title": "Introductory Dynamics",
"assessmentSets": [
{
"abbreviation": "HW",
"name": "Homework",
"heading": "Homeworks",
"color": "green1"
},
{
"abbreviation": "E",
"name": "Exam",
"heading": "Exams",
"color": "red1"
}
],
"assessmentModules": [
{
"name": "vectors-coords",
"heading": "Vectors and coordinates"
},
{
"name": "moments",
"heading": "Moments of inertia"
}
],
"topics": [
{
"name": "Vectors",
"color": "blue3",
"description": "Vector algebra in 3D"
},
{
"name": "Center of mass",
"color": "green3",
"description": "Finding and using the center of mass of irregular bodies."
}
],
"tags": [
{
"name": "drawing",
"color": "gray2",
"description": "The answer requires drawing."
},
{
"name": "estimation",
"color": "orange2",
"description": "Answering requires estimating a quantity."
}
],
"sharingSets": [
{
"name": "python-exercises",
"description": "Python exercises for sharing"
},
{
"name": "final-exam",
"description": "Questions that can be used on a final exam"
}
]
}
```
有关可以添加到此文件的内容的更多信息,请参阅infoCourse.json 的参考。
评估集¶
每个评估都属于一个_评估集_。每个评估集必须具有以下属性。
| 物业 | 描述 |
|---|---|
abbreviation |
与评估 number 一起形成标签的缩写,因此 "abbreviation": "HW" 会生成 HW1、HW2 等。这应该是一两个大写字母(例如,HW 表示作业,E 表示考试, Q 用于测验)。 |
name |
与评估 number 一起描述评估的全名,因此 "name": "Homework" 生成 Homework 1 等。这应该是单数名词。 |
heading |
列在该集中所有评估之上的标题。应该是 name 的复数版本。 |
color |
此评估的配色方案(请参阅下面的选择)。 |
标准化评估集¶
以下标准化评估集列表自动包含在每门课程中。您不需要将这些包含在 JSON 文件中,但如果需要,您可以添加额外的评估集(见下文)。
| 缩写 | 名称 | 目的 |
|---|---|---|
HW |
作业 | 每周在家完成家庭作业。 |
MP |
机器问题 | 每周在课外完成编码作业。 |
Q |
测验 | 简短的频繁测验。 |
PQ |
练习测验 | 练习测验。 |
E |
考试 | 长篇期中或期末考试。 |
PE |
练习考试 | 练习考试。 |
P |
准备 | 编写新问题时使用的临时评估。 |
WS |
工作表 | 有指导的活动,通常以小组形式完成。 |
添加您自己的评估集¶
您可以通过在 infoCourse.json 文件中列出更多评估集来添加它们,如下所示。请注意,不需要列出 HW 和 Q,因为它们会自动作为标准化集提供(参见上文)。
{
"assessmentSets": [
{
"abbreviation": "HW",
"name": "Homework",
"heading": "Homeworks",
"color": "green1"
},
{
"abbreviation": "Q",
"name": "Quiz",
"heading": "Quizzes",
"color": "red1"
}
]
}
infoCourse.json 中的评估集顺序是评估在 ZJUI-Learn 中显示的顺序(对于教师和学生)。如果您想更改标准化评估集的顺序,则可以按照您喜欢的任何顺序重新列出它们。例如,要将考试和测验放在第一位,您可以使用:
{
"assessmentSets": [
{
"abbreviation": "E",
"name": "Exam",
"heading": "Exams",
"color": "brown1"
},
{
"abbreviation": "Q",
"name": "Quiz",
"heading": "Quizzes",
"color": "red1"
},
{
"abbreviation": "PE",
"name": "Practice Exam",
"heading": "Practice Exams",
"color": "yellow1"
},
{
"abbreviation": "PQ",
"name": "Practice Quiz",
"heading": "Practice Quizzes",
"color": "pink1"
},
{
"abbreviation": "HW",
"name": "Homework",
"heading": "Homeworks",
"color": "green1"
},
{
"abbreviation": "P",
"name": "Prep",
"heading": "Question Preparation",
"color": "gray1"
},
{
"abbreviation": "MP",
"name": "Machine Problem",
"heading": "Machine Problems",
"color": "turquoise1"
},
{
"abbreviation": "WS",
"name": "Worksheet",
"heading": "Worksheets",
"color": "purple1"
}
]
}
评估模块¶
课程中的每个评估都属于 infoCourse.json 中定义的_模块_。模块可以代表课程主题、章节或部分,或者用 ZJUI-Learn 术语来说,是一组彼此相关的评估集合,但不一定是同一类型。例如,这意味着您可以拥有一个包含两项作业、一项实验和一项考试的模块。
模块是可选的,默认情况下不会影响任何行为。 infoCourse.json 中定义的模块的顺序将是它们在学生页面中显示的顺序。这可以让学生按时间顺序查看他们的评估列表,而不是简单地按集合分组。
{
"assessmentModules": [
{
"name": "intro",
"heading": "Unit 1: Introduction to XC 101"
},
{
"name": "physics",
"heading": "Unit 2: Physics"
},
{
"name": "math",
"heading": "Unit 3: Math"
}
]
}
上述配置可以为学生带来以下视图:

assessmentModules 的属性如下。
| 物业 | Description |
|---|---|
name |
模块的简短名称。越短越好。 |
heading |
向用户显示的模块的较长标题。 |
评估页面的组织是在课程实例级别配置的。在同一 ZJUI-Learn 课程中,某些课程实例可能按 "Module" 分组评估,而另一些课程实例可能按 "Set" 分组评估。更多详情请参见课程实例。
主题¶
课程中的每个问题都有 infoCourse.json 文件中指定的列表中的主题。主题应被视为教科书中的章节,典型课程中应有大约 10 到 30 个主题。主题属性如下。
| 物业 | 描述 |
|---|---|
name |
主题的简短名称。越短越好。应采用句子大小写(前导大写字母)。 |
color |
本主题的配色方案(请参阅下面的选择)。 |
description |
对主题内容的解释,供人类参考。 |
例如,主题可以如下列出:
{
"topics": [
{
"name": "Vectors",
"color": "blue3",
"description": "Vector algebra in 3D."
},
{
"name": "Center of mass",
"color": "green3",
"description": "Calculating the center of mass for irregular bodies and systems."
}
]
}
标签¶
每个问题可以有零个、一个或多个与其关联的标签。标签的属性如下。
| 物业 | 描述 |
|---|---|
name |
标签的简短名称。标签的名称应该非常短(最好只有一个单词),因为一个问题可能有很多标签。通常应为小写字母(例如,drawing)或大写缩写(例如,MC)。 |
color |
此标签的配色方案(请参阅下面的选择)。 |
description |
标签含义的解释,供人类参考。 |
标准化标签名称¶
以下标准化标签列表会自动包含在每门课程中。您不需要将这些包含在 JSON 文件中,但您可以添加额外的标签(见下文)。
| 答案格式标签 | 意义 |
|---|---|
numeric |
答案格式是一个或多个数值。 |
symbolic |
答案格式是一种符号表达。 |
drawing |
答案格式需要在画布上绘图以输入答案的图形表示。 |
MC |
答案格式是从一小组有限的答案中进行选择(多项选择,可能允许多项选择,最多 10 个可能的答案)。 |
code |
答案格式是一段代码。 |
multianswer |
该问题需要多个答案,可以作为序列中的步骤,也可以作为单独的问题。 |
| 技能测试标签 | 意义 |
|---|---|
graph |
该问题测试从图表中读取信息或绘制图表。 |
concept |
该问题测试对主题的概念性理解。 |
calculate |
这些问题测试使用计算器或等效软件进行数值计算。 |
compute |
该问题测试一段代码的编写和运行以计算答案。答案本身不是代码,但可以是代码输出的数字答案,例如(当答案是代码时使用 code)。 |
software |
该问题测试特定软件(例如 Matlab)的使用。 |
estimation |
正确回答这个问题需要一定程度的估计,因此不可能给出准确的答案。 |
| 问题使用标签 | 意义 |
|---|---|
secret |
仅在不会向学生公开的考试或测验中使用此问题,因此该问题可以保密。 |
nontest |
此问题不适合在受限测试环境中使用,因此仅在家庭作业或类似问题上使用。 |
| 追踪标签 | 意义 |
|---|---|
<course> |
最初编写问题的课程。例如,TAM212、CS233。 |
<email> |
撰写问题的人的电子邮件,例如 instructor@example.com。当多人有重要输入时,可以标记多封电子邮件。 |
<semester> |
写问题的学期。例如,Sp15、Su16、Fa16。 |
添加您自己的标签¶
您可以通过在 infoCourse.json 文件中列出更多标签来向课程添加更多标签。例如:
{
"tags": [
{
"name": "TAM212",
"color": "red1",
"description": "This question was originally written for TAM 212."
},
{
"name": "mwest",
"color": "gray1",
"description": "This question was written by Matthew West (mwest@illinois.edu)."
}
]
}
infoCourse.json 中的标签顺序是标签在 ZJUI-Learn 中列出的顺序。如果您想更改标签或标准化标签的顺序,则可以按照您喜欢的任何顺序重新列出它们。
共享集¶
可以将问题添加到共享集中,以便其他课程能够在其评估中使用您的问题。共享集旨在仅共享特定课程的问题,如果您想让问题可供任何人使用,您应该按照问题文档或共享文档中的说明公开共享它们。
| 物业 | 描述 |
|---|---|
name |
共享集的简短描述性名称。您可以谈论您分组在一起的问题类型,或者您想要共享共享集的课程类型。 |
description |
对共享集用途的额外解释,供人类参考。 |
添加共享集¶
您可以通过在 infoCourse.json 文件中列出共享集来将共享集添加到您的课程中。例如:
{
"sharingSets": [
{
"name": "python-exercises",
"description": "Python exercises for sharing"
},
{
"name": "final-exam",
"description": "Questions that can be used on a final exam"
}
]
}
目前,共享集一旦添加就无法从 infoCourse.json 中重命名或删除,因为删除共享到另一个课程的共享集可能会破坏该课程中的评估。
时区¶
课程的默认时区是 America/Chicago(美国中部时间)。这可以通过 infoCourse.json 中的 timezone 属性进行更改。例如:
{
"timezone": "America/New_York"
}
允许的时区是 tz 数据库时区列表 中 TZ 列中的时区,它是 IANA 时区数据库 的显示版本。
将用户数据暴露给 server.py¶
默认情况下,问题 server.py 代码不会接收有关用户或组的标识信息。课程可以选择加入,以便 server.py 通过 data["options"]["user"] 接收拥有个人变体的用户的身份(UID、UIN、姓名),并通过 data["options"]["group"] 在小组评估中接收小组成员身份。有关确切的形状和访问模式,请参阅 server.py 文档。
要为课程启用此功能,请在课程设置页面上选中“允许问题访问用户身份”。
如果您在开发模式下运行,还可以将以下内容添加到infoCourse.json:
{
"options": {
"questionsReceiveUserData": true
}
}
JSON 值仅在开发模式下使用。对于从其他课程(通过公共共享或共享集)导入的问题,server.py 永远不会收到用户数据,无论任一课程的设置如何。
JSON 文件中的注释¶
您可以使用任何对象上的 "comment" 键向 JSON 文件添加注释。对于每个对象,您只能使用此键一次。例如:
{
"comment": "assessments that are shared among a group of students",
"assessmentSets": [
{
"abbreviation": "GA",
"name": "Group Activity",
"heading": "Group Activities",
"color": "green1"
}
],
"timezone": "America/New_York"
}
注释可以是字符串、数组或 JSON 对象,但对于大多数用途,建议使用字符串。
???警告“警告”
If you have more than one comment for a JSON object (objects are things wrapped in curly braces `{}`) then all but one of them will be silently discarded by the online course configuration editing tools. It's fine to have multiple comments in a JSON file but they have to be in separate objects. For example, comments inside the _same_ object (not supported) look like `{"comment": "AAA", "comment": "BBB"}`. Comments in _different_ objects (supported) look like `{"subObject1": {"comment": "AAA"}, "subObject2": {"comment": "BBB"}}`.
颜色¶
评估集、主题和标签的可能颜色为:
课程人员¶
可以在“人员”选项卡上配置课程人员的访问权限。课程人员权限分为_课程内容角色_和_学生数据角色_。这些可以任意混合和搭配,因此任何组合都是可能的。
Note
课程内容和学生数据访问角色不会影响对课程 Git 存储库的访问。要更改存储库权限,请访问课程的 GitHub 访问设置页面。如果您需要访问 Git 存储库,请联系该存储库的所有者。如果您是所有者并且没有 GitHub 访问权限,请通过 #pl-help 中的 Slack 与我们联系。
课程内容访问角色¶
课程内容访问角色授予访问所有课程内容的权限,例如问题和评估,包括学生使用情况的汇总统计数据。
| 行动 | 无 | 预览者 | 观众 | 编辑 | 业主 |
|---|---|---|---|---|---|
| 查看问题和评估 | ⋅ | ✓ | ✓ | ✓ | ✓ |
| 查看问题 | ⋅ | ✓ | ✓ | ✓ | ✓ |
| 查看所有课程实例中的汇总统计数据 | ⋅ | ✓ | ✓ | ✓ | ✓ |
| 查看问题代码和 JSON 文件 | ⋅ | ⋅ | ✓ | ✓ | ✓ |
| 关闭问题 | ⋅ | ⋅ | ⋅ | ✓ | ✓ |
| 编辑问题代码和 JSON 文件 | ⋅ | ⋅ | ⋅ | ✓ | ✓ |
| 从 GitHub 同步 | ⋅ | ⋅ | ⋅ | ✓ | ✓ |
| 编辑课程人员权限 | ⋅ | ⋅ | ⋅ | ⋅ | ✓ |
学生数据访问角色¶
学生数据访问角色授予访问单个学生数据的权限。
| 行动 | 无 | 观众 | 编辑 |
|---|---|---|---|
| 查看个别学生成绩 | ⋅ | ✓ | ✓ |
| 下载成绩册数据 | ⋅ | ✓ | ✓ |
| 手动评分学生提交的内容 | ⋅ | ⋅ | ✓ |
| 编辑个别学生成绩 | ⋅ | ⋅ | ✓ |
| 更改时间限制并结束评估 | ⋅ | ⋅ | ✓ |
推荐的课程人员角色¶
虽然每门课程都应以最适合课程需求的方式使用不同的角色,但一些推荐的准则是:
| 角色 | 课程内容访问 | 学生数据访问 |
|---|---|---|
| 导师 | 课程内容所有者 | 学生数据编辑器 |
| 助教开发课程内容 | 课程内容编辑 | 学生数据编辑器 |
| 学生内容开发者(而非助教) | 课程内容编辑 | 无 |
| 参与评分的助教 | 无 | 学生数据编辑器 |
| 其他助教 | 无 | 学生数据查看器 |
| 其他班级的老师 | 课程内容查看器 | 无 |