Design of an Incremental Learning System

Anki, Supermemo 很好用,但是主要集中在记忆。 woz在他的网站上提到过,总是可以以最高兴趣来学习。 https://www.reddit.com/r/Anki/comments/fqlnob/incremental_reading_for_technical_subjects/

学习理工科和背单词有个很大的不同,就是它不是单纯的记忆,需要理解。 学习理工科的主要负担在于理解而非记忆。因此,决定几天后复习的主要因素 除了“是否记得住”还有“是否理解”。再有就是不同项目的难度是不一致的 可以看出,靠一个机械的算法来判定是比较复杂的,因此,不如由 用户靠自己的感觉(用户的主观感觉是可以综合以上因素的)来决定几天 后复习。系统可以给出一个大致的建议(比如, 如果觉得“很难”那就过2天再学,等等),但是不强制要求。当然,系统也需要 提醒用户不要太急躁,什么都想马上学。系统应该提醒用户,用户用这套 系统是为了轻松快乐地学习,因此不妨把某些事情放到几天后再看看。

功能:

  • 同时做很多件事。对于每件事,做到没兴趣了就停止,并决定下次继续的时间。

数据结构:

  • 一个map,键是日期,值是那一天要做的事,对于每件事,都记录其状态。 状态包括一个文本(一些注释)和对应的文件夹。文件夹里面是以图片形式 存储的笔记。笔记可以让自己精确地掌握学习进度。图片最好一小块一小块, 方便消化吸收。

算法:

  • 打开软件,找到map中今天对应的事,列出这些事。推荐其中掌握程度最高的那个。
    • 如果发现有前几天的事,把它们都搬到今天。并且提醒用户决定一下 什么时候继续学这些没处理的事。(掌握程度最高的那个,最有可能学完。这样给用户成就感和动力)。
  • 接着用户开始学习这件事。如果用户开始学习,那么就打开对应的文件夹中的所有图片(方便用户回忆进度。回忆进度这件事本身也是在学习)。然后用户开始学习。
  • 学习的方法是往文件夹里面添加图片。
  • 如果用户没兴趣了,就停止,然后报告自己的学习情况(学得很轻松,遇到困难需要一定时间消化,搞不动了快崩溃,一个字都学不进去等等)。系统给出建议的间隔时间。然后用户根据自己的感觉,决定一个间隔时间。
  • 然后掌握程度从高到低依次推荐。学习下一个。当然,用户也可以根据自己“一时兴起”或者兴趣或者DDL之类的因素,不按照这个次序做事。
  • 用户必须全部处理完今天的事。如果不想做了,好歹也要把所有事情都标记成“一个字都学不进去”然后决定什么时候继续学。
  • 用户在学完之后,可以添加新的内容进去。
  • 此外还需要一些自动化脚本。比如自动创建文件夹之类的,减少用户输入的负担。