章节大纲
-
-
官方手册: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 准备考试题了)。
-
