一个用于在Jupyter笔记本中实现自动评估练习的迷你框架
项目描述
nbautoeval
nbautoeval
是一个用于在Jupyter (Python) 笔记本中创建 自动评估 练习的非常轻量级的Python框架。
目前支持两种练习类型:
- 代码型:给定一个描述预期的文本,学生被邀请编写自己的代码,然后可以在教师定义的数据样本上看到结果,并与教师提供的解决方案得到的结果进行比较,并提供视觉(绿色/红色)反馈
- 测验:一个独立的模块允许创建测验
目前,由于缺乏关于open/edx(即:在FUN上运行的版本)的知识/文档,没有可用的代码用于将结果作为成绩或类似的东西导出(因此名为autoeval
)。
实际上,代码中确实有累积所有尝试修正的统计数据的提供,作为为教师提供反馈的尝试。
在 mybinder
上试用
点击下面的徽章以在 mybinder.org
下查看一些示例演示 - 所有这些都在 demo-notebooks
子目录中。
注意 演示笔记本以 .py
格式提供,并在您可以在Jupyter中打开之前需要安装 jupytext
。
历史
这最初嵌入到一个Python 2 MOOC中,该MOOC首次于2014年秋季在法国FUN平台上运行。然后在2016年春季的一个生物信息学MOOC中进行了复制,那时它被命名为nbautoeval
,但仍然嵌入在一个更大的git模块中。
当前的git仓库是在2016年6月从该基础上创建的,目的是将其用作来自这两个仓库以及可能的其他仓库的git子树,因为有些人已经证明了对它感兴趣。
安装
pip install nbautoeval
概述
以代码为中心
目前支持以下类型的练习
ExerciseFunction
:要求学生编写一个函数ExerciseRegexp
:要求学生编写一个正则表达式ExerciseGenerator
:要求学生编写一个生成器函数ExerciseClass
:测试将在类实现上进行
希望实现练习的教师需要编写两部分
-
一个Python文件,该文件定义了一个练习类的实例;总的来说,这通常涉及
- 提供一个解决方案(例如一个函数)的Python实现
- 提供一组输入数据
- 以及可选的渲染结果的各种调整
-
一个笔记本,该笔记本导入这个练习对象,然后可以利用它来编写Jupyter单元格,通常
- 在练习对象上调用
example()
以显示预期输出的示例 - 邀请学生编写自己的代码
- 在练习对象上调用
correction()
以显示结果。
- 在练习对象上调用
测验
这里同样有两个部分在起作用
-
推荐的方法是在YAML格式中定义测验
- 一个YAML文件可以包含多个测验 - 请参阅
yaml/
子目录中的示例 - 每个测验包含一组问题
- 将问题分组到测验中在最大尝试次数方面是有意义的
- 大部分内容都可以用Markdown编写(目前我们使用
myst_parser
)
- 一个YAML文件可以包含多个测验 - 请参阅
-
然后从一个笔记本中调用
run_yaml_quiz()
来显示测试- 此函数接受两个参数,一个用于帮助定位YAML文件
- 一个用于在YAML文件中找到测验
- 使用
debug=True
运行以定位源代码中的错误
结果和存储
无论它们的类型如何,所有测试都有一个exoname
,该名称用于存储有关该特定测试的信息;对于测验,建议使用与在run_yaml_quiz()
中使用的测验名称不同的名称,这样学生就不容易猜到。
内容存储在两个不同的位置
~/.nbautoeval.trace
包含每个尝试(纠正或提交)的JSON行~/.nbautoeval.storage
仅用于测验,保留以前的选项和尝试次数
已知问题
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。