Mark Down for Education.
21世纪的学习, 不再只是吸收知识, 更要学会思考。 学生在阅读文字时,如果能够同时做答题, 这无疑能促进学生思考。
今天的文字系统(博客、微信公众号文章、电子书)大都注重呈现, 研究如何显示文字。 因此老师缺乏一种工具,能够创作“激发思考”的教材。
因此,我们在markdown的基础上, 加以扩展, 设计出mde(mark down for education)。 运用mde, 书籍的作者可以在文字中加入“互动”的部分。
这种新型的学习材料, 使用者将不仅是“阅读”, 而是“学习”。(学+习) 鉴于此种转变, 以下将不再称使用材料者为“读者”,而是“学习者”。
本仓库的主旨, 在于介绍这种规范(以下简称mde), 并且(在未来)提供一个参考实现。
所有的markdown文档都是合法的mde文档, 反之亦然。 那如何实现“互动答题”呢?我们采用markdown的“代码”来表示。
以选择题为例
2020年流行的病毒叫什么?
[ ] 新型冠状病毒
[ ] ncov2019
[ ] 以上都不是
----
0 1
把代码分为三部分, 一是解析器, 负责把字符串结构化, 二是组件代码, 只负责把结构化的数据渲染成互动的组件, 三是应用代码, 负责整体的方案(例如石墨文档、简书等)。
应用代码只需要负责把这段字符串传给组件代码即可。
以下从三个不同角度介绍组件代码:
- 作者的界面(可以先仅仅实现为纯文本编辑, 此处暂不详述)
- 学习者的界面(又分为未答题和已答题两种状态)
- 应用开发者的界面
-
作者的界面
对于书籍的作者, 组件代码可以提供一种“编辑”模式, 比纯文本更友好。
例如, 如果是选择题, 可以“编辑题面”, “添加选项”, “设置答案”。
如此一来,书籍作者便不需要去记忆mde的语法。 -
学习者的界面
学习者将看到一道可以点的选择题。 做题时, 组件能够自动判题。 如果已经做过了, 就可以看到“已完成”。 学习者可以点“加载历史”, 看到上次自己的答题。(为何如此设计? 因为如果每次都显示出来, 学习者将没有机会重新思考)。 如果学习者通过了这道题, 还可以点“显示榜单”, 看到所有做过此题的人的答题。
学习者的界面是组件代码的核心。 以下是一个参考思路:
组件代码负责把这段字符串传送给解析器(parse函数), 解析器生成一个结构化的数据。
组件代码便可利用这个结构化的数据, 来渲染成一个交互的react widget。
对于已答题的状态, 组件代码可以通过storage.read()得到这位学习者的答题信息。
- 应用开发者的界面
应用开发者调用组件时, 需要传递描述这个题目的字符串。
如果希望把答题数据记录在云端, 或者做个性化处理, 可以传递一个storage对象。这个对象应该实现两个方法: storage.write(k, v)和storage.read(k)
2月份将完成两个参考实现, 并同步完善文档。
- 选择题
- 编程题
3月份将基于参考实现, 实现一个互动书生成工具。(作者将可以用mde写文档, 用这个工具生成一个网站)
项目 | 用途 |
---|---|
mde-parser | 将mde的文本转换为结构化数据 |
期望更多的老师们一起完善这个标准, 从而为实现真正的学+习创造坚实的基础设施。