你好! 我的名字是科林弗雷德里克斯。 我在HarvardX 担任高级项目负责人,这意味着我的大部分工作是帮助哈佛教授制作高质量的课程。 然而,在过去的几个月里,我一直在工作,主要是在业余时间,添加 部分归功于 Open edX 平台.
我真的很喜欢 Open edX 平台,但我总是很惊讶没有办法奖励部分功劳。 在教过大学和高中之后,这似乎是一个明显的疏忽,以至于我一直希望在“即将推出的功能”列表中看到它。 经过三年的等待,我决定最终将事情掌握在自己手中。
现在,我不是专业的程序员。 (你可能会听到不祥的音乐在背景中播放。我们称之为“伏笔”。)我在四年级时学习了 Applesoft BASIC,在高中时学习了 TI-4 编程,在大学时学习了 C++,在麻省理工学院工作时学习了 Python,而我在学习时学习了 JavaScript。失业,但我以前从未为开源工作做出过贡献。 我从来没有写过测试代码。 哎呀,我几乎不知道测试代码的存在。 (阴影落在相机上。更多的伏笔。)我决定我要为一种问题添加一种部分功劳,保持简单,这样我可以在一两个星期内处理它。 (这也是一个伏笔。)
那是四月初。 我在两天内完成了最初的目标,然后项目迅速膨胀到现在的状态。 我被说服从单一的问题类型扩展到我可以合理处理的尽可能多的问题类型,并写出一个 成熟的提案 最终长达 16 页。
在实现这个特性时,我发现了这个“测试代码”的东西,“代码质量检查器”,以及他们(明智地)在计算机科学 II 中没有告诉人们的其他东西。 我从 edX 开发者指南,据我所知,用它的 漂亮的流程图. 我开了一个 JIRA 上的求婚票,为我自己的代码制作了一个 github repo, 打开了我的 第一 拉请求, 做了更多的开发,得到了很多很好的反馈(其中大部分是我合并的),学会了如何正确地变基,打开了一个 新的更好的拉取请求,并进行了更多编码。 最后,经过大约 15 周的开发,我可以自豪地说,该功能已合并到 edx-platform master 分支中!
部分学分:功能详情
这是此功能当前外观的简要说明。 请注意,目前,作者只能通过直接编辑问题的 OLX 定义来启用部分学分。
选择题 以及 落下 问题有一种类型的部分信用可用:“点”式评分。 课程作者列出了某些值得部分学分的选择,并可选择设置它们的学分值(默认值为 50%)。 作为副作用,下拉问题已升级,因此可以将多个选项标记为正确。
复选框 问题有两种(互斥)类型的部分得分:“Halves”风格,其中一个完美的回答给出 100% 的得分,每个错误都会将得分减半,以及“Every Decision Counts”风格,其中每个复选框有效地转动进入它自己单独的真/假问题。
以下是课程作者如何在 Studio 问题中启用“Every Decision Counts”(或“EDC”)风格的部分学分的示例:

这就是问题将如何呈现给学生:

数字的 问题也有两种可用类型:“列表”样式,其中作者列出了部分计分的答案(例如在数学问题中,部分计分答案可能是由于缺少负号或反转分数而导致的答案),以及“关闭”样式,扩展了给定的容差以允许“马蹄铁和手榴弹”方法。 由于这两种风格是兼容的,如果你愿意,你可以在同一个问题中使用它们。
以下是课程作者如何使用“列表”样式部分学分定义数字问题:

以下是问题将如何呈现给学生:

最后, 自定义 Python 现在,问题不仅可以返回点值,还可以指示问题是完全正确还是仅部分正确。
有关如何为您的问题添加部分功劳的更多详细信息,请参阅 部分信用文件.
我对这一切的结果感到非常满意。 该项目花费的时间比我想象的要长,但它也更强大。 它提供了一个框架,使将来更容易将部分功劳添加到其他问题类型,我真的希望人们能利用这一点。
v2 中有什么?
嗯,首先,我有一个 v1.5 计划来清理一些 周围 代码,这样未来对 Capa 模块的贡献者就不会像我那样遇到麻烦。 在那之后——当然还有更多的问题类型! 我还在考虑在不使用 XML 的情况下将此功能用于常见问题——也就是说,让讲师能够从 Studio markdown 编辑器中使用此功能。 还有一些额外的代码泛化可以完成。 在未来的某个地方,也有可能添加基于尝试的评分……但让我们一步一步来。
在整个过程中,edX 的所有人都非常出色和乐于助人,我怎么形容都不为过。 我带着一点 Python 和 Javascript 知识来到这里,并且掌握了更扎实的技能和对为开源项目做出贡献的理解。 Sarina Canelake、Leslie Gerhat、Piotr Mitros、Mark Sadecki、Marco Morales、Ben Patterson、Diana Huang、Mark Hoeber 等人从他们忙碌的日子中抽出时间来帮助我更好地理解和完善我的代码。 我迫不及待地想看到它在野外使用。
我仍然不认为自己是一名专业的程序员,但多亏了这项工作,我离我越来越近了。
Colin Fredericks 是HarvardX 的高级项目负责人。 业余时间他喜欢做饭, 写角色扮演游戏,并与所有动物成为朋友。
![]()