章节大纲

    •  官方手册:https://trampgeek.github.io/moodle-qtype_coderunner/

      官方 python xml 模板 https://github.com/trampgeek/moodle-qtype_coderunner/blob/master/samples/python3demoquizquestions.xml

      1.题目类型:python3_cosc121。这是一种复杂的 Python3 题型,坎特伯雷大学 COSC121 课程的几乎所有题目都使用了这种题型。学生提交的题目首先要经过pylint 源代码分析器,如果 pylint 出现任何错误,则提交的题目会被拒绝。否则,测试将照常进行。显然,pylint需要安装在沙盒服务器上。这种题型需要使用许多不同的模板参数(请参阅“模板参数”部分了解这些参数的含义),以便将其用于解决各种不同的问题。例如,可以将其配置为要求或禁止特定的语言结构(例如,要求学生将for循环重写为while 循环),或将函数大小限制为给定值,或从学生的代码中剥离函数,以便单独测试支持函数。有关如何使用此题型或任何其他题型的详细信息,可以通过展开题型编辑页面中的“题型详情”部分 找到。

      2.Moodle CodeRunner 题目的 XML 结构示意图

      <question type="coderunner">

      ├─ <name> … </name>                      # 题目名字 命名规则 腾讯文档 作业号+题号+题目+分值+学号后四位 如  lab0101Fix the Bug (100pts)1234

      ├─ <questiontext format="html">          # 题目描述
      │    └─ <text><![CDATA[ … ]]></text>

      ├─ <generalfeedback format="html"> … </generalfeedback>

      ├─ <defaultgrade> … </defaultgrade>      # 分值
      ├─ <penalty> … </penalty>
      ├─ <hidden> … </hidden>

      ├─ <coderunnertype> … </coderunnertype>  # 使用的 CodeRunner 题型
      ├─ <prototypetype> … </prototypetype>
      ├─ <allornothing> … </allornothing>
      ├─ <penaltyregime> … </penaltyregime>
      ├─ <precheck> … </precheck>
      ├─ <showsource> … </showsource>

      ├─ <answerboxlines> … </answerboxlines>  # 答题框行数
      ├─ <answerboxcolumns> … </answerboxcolumns>
      ├─ <answerpreload> … </answerpreload>
      ├─ <useace> … </useace>                  # 是否用 Ace 编辑器

      ├─ <answer><![CDATA[ … ]]></answer>      # 标准答案

      ├─ <validateonsave> … </validateonsave>

      ├─ <templateparams><![CDATA[{ … }]]></templateparams>
      │    # JSON 格式参数,如 requiredconstructs / proscribedconstructs

      ├─ <testcases>                           # 测试用例集合
      │    ├─ <testcase … >
      │    │    ├─ <testcode><text>…</text></testcode>
      │    │    ├─ <stdin><text>…</text></stdin>
      │    │    ├─ <expected><text>…</text></expected>
      │    │    ├─ <extra><text>…</text></extra>
      │    │    └─ <display><text>SHOW</text></display>
      │    │
      │    └─ <testcase … > … (更多测试)

      └─ </question>

      3. 测试用例,除了 cs61a hw lab 提供的测试用例,要求至少多自创 1 个测试用例。

      4. 考试前一周合格一题加 2 分,后面到考试前的周六加 1 分,临近的周日开始不加分(老师这时候已经开始自己动手改 xml 准备考试题了)。