跳转至

课程配置

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
  1. 有关更多信息,请参阅问题文档
  2. 有关更多信息,请参阅课程实例文档
  3. 有关信息,请参阅clientFilesserverFiles 文档
  4. 有关信息,请参阅clientFilesserverFiles 文档
  • ZJUI-Learn为所有课程提供的元素列表请参见HTML元素列表;只要元素存在,ZJUI-Learn 就会使用元素的课程版本。

infoCourse.json

该文件指定了有关课程的基本信息:

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" 会生成 HW1HW2 等。这应该是一两个大写字母(例如,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,因为它们会自动作为标准化集提供(参见上文)。

infoCourse.json
{
  "assessmentSets": [
    {
      "abbreviation": "HW",
      "name": "Homework",
      "heading": "Homeworks",
      "color": "green1"
    },
    {
      "abbreviation": "Q",
      "name": "Quiz",
      "heading": "Quizzes",
      "color": "red1"
    }
  ]
}

infoCourse.json 中的评估集顺序是评估在 ZJUI-Learn 中显示的顺序(对于教师和学生)。如果您想更改标准化评估集的顺序,则可以按照您喜欢的任何顺序重新列出它们。例如,要将考试和测验放在第一位,您可以使用:

infoCourse.json
{
  "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 中定义的模块的顺序将是它们在学生页面中显示的顺序。这可以让学生按时间顺序查看他们的评估列表,而不是简单地按集合分组。

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 对主题内容的解释,供人类参考。

例如,主题可以如下列出:

infoCourse.json
{
  "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> 最初编写问题的课程。例如,TAM212CS233
<email> 撰写问题的人的电子邮件,例如 instructor@example.com。当多人有重要输入时,可以标记多封电子邮件。
<semester> 写问题的学期。例如,Sp15Su16Fa16

添加您自己的标签

您可以通过在 infoCourse.json 文件中列出更多标签来向课程添加更多标签。例如:

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 文件中列出共享集来将共享集添加到您的课程中。例如:

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 属性进行更改。例如:

infoCourse.json
{
  "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

infoCourse.json
{
  "options": {
    "questionsReceiveUserData": true
  }
}

JSON 值仅在开发模式下使用。对于从其他课程(通过公共共享或共享集)导入的问题,server.py 永远不会收到用户数据,无论任一课程的设置如何。

JSON 文件中的注释

您可以使用任何对象上的 "comment" 键向 JSON 文件添加注释。对于每个对象,您只能使用此键一次。例如:

infoCourse.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"}}`.

颜色

评估集、主题和标签的可能颜色为:

red1 red2 red3
pink1 pink2 pink3
purple1 purple2 purple3
blue1 blue2 blue3
turquoise1 turquoise2 turquoise3
green1 green2 green3
yellow1 yellow2 yellow3
orange1 orange2 orange3
brown1 brown2 brown3
gray1 gray2 gray3

课程人员

可以在“人员”选项卡上配置课程人员的访问权限。课程人员权限分为_课程内容角色_和_学生数据角色_。这些可以任意混合和搭配,因此任何组合都是可能的。

Note

课程内容和学生数据访问角色不会影响对课程 Git 存储库的访问。要更改存储库权限,请访问课程的 GitHub 访问设置页面。如果您需要访问 Git 存储库,请联系该存储库的所有者。如果您是所有者并且没有 GitHub 访问权限,请通过 #pl-help 中的 Slack 与我们联系。

课程内容访问角色

课程内容访问角色授予访问所有课程内容的权限,例如问题和评估,包括学生使用情况的汇总统计数据。

行动 预览者 观众 编辑 业主
查看问题和评估
查看问题
查看所有课程实例中的汇总统计数据
查看问题代码和 JSON 文件
关闭问题
编辑问题代码和 JSON 文件
从 GitHub 同步
编辑课程人员权限

学生数据访问角色

学生数据访问角色授予访问单个学生数据的权限。

行动 观众 编辑
查看个别学生成绩
下载成绩册数据
手动评分学生提交的内容
编辑个别学生成绩
更改时间限制并结束评估

虽然每门课程都应以最适合课程需求的方式使用不同的角色,但一些推荐的准则是:

角色 课程内容访问 学生数据访问
导师 课程内容所有者 学生数据编辑器
助教开发课程内容 课程内容编辑 学生数据编辑器
学生内容开发者(而非助教) 课程内容编辑
参与评分的助教 学生数据编辑器
其他助教 学生数据查看器
其他班级的老师 课程内容查看器