学生做题章节掌握率评估流程

设计

简介

通过学生做题结果判定学生章节掌握度

掌握判定条件

学生掌握度由经验值计算,达到所需经验值 exp_end 后则为掌握。
主要由学生做题数量和做题结果决定,目标越高需要练习的题量也越高。
学生在系统里做题时,每做 n 道题为一组,每组到达最低正确率 p_min 后开始计算经验值,最低加成为 exp_min,达到最高正确率 p_max 加成最大为 exp_max,设有最直接通过正确率 p_end,达到后经验值加满为掌握(当出现跨组间的连对时也当作满足直接通过条件)。满足中点正确率 p_mid 的组数达到足够数量 m 后被判定为累积掌握。不管做题对错,所做每道题增加经验值 exp_did

目标掌握级别每组题目数量每组最低正确率每组最高正确率每组直接通过正确率中点正确率掌握所需达到中点正确率的组数练习题目的难度
一本了解550%90%100%80%2根据章节不同而不同
一本理解550%90%100%80%3根据章节不同而不同
一本应用550%90%100%80%3根据章节不同而不同
二本了解550%90%100%80%2根据章节不同而不同
二本理解550%90%100%80%2根据章节不同而不同
二本应用550%90%100%80%1根据章节不同而不同

初始定位

由测试卷得分结果决定学生初始经验值,用默认在系统中已经做了几组题为标准。若需要更加精确,则可以由学生试卷的做题结果相关,如:某题做错代表某章掌握度不高。

初始得分了解已经完成组数理解已经完成组数应用已经完成组数
120-150221
100-119110
0-99000

插值评分换算

经验值最高为 exp_end (取 600 数字较大方便做小步长,能够被小的质数整除便于划分),中点正确率组数 m 为最少所需步数。以中点正确率 p_mid 转折点向最大与最小正确率作线性变化。
以目标一本的应用难度掌握度为例,中点正确率为 80%,所需步数为 3,则每次学生做题组正确率达到 80%,经验值增加 600/3 = 200 点。最低正确率为 50%,满足时增加最小设定为 50 点,则正确率 a%<80% 时增加 (a-50)*(200-50)/(80-50)+50 点(当 a=60 时,经验值增加100)。当正确率 a%>90% 时,增加最大经验值 300

以最大经验值的目标层次为基础,其余目标层次递减。

难度大的层次对低难度有影响。理解层次对了解层次有 100% 的效果,应用层次对理解层次有 30% 的效果

掌握率需要产品表现为初始时很快,越接近满分提升越慢,则掌握率在经验值得基础上乘以一个幂函数达到要求。公式为 degree = norm * exp^r,其中 degree 为掌握率;norm 为归一化系数,使得 degree 在一定区间内;r 为幂系数。

数据结构

数据表

学生掌握度统计表

CREATE TABLE tb_student_mastery_degree
(
  id BIGINT(20) PRIMARY KEY NOT NULL AUTO_INCREMENT,
  student_id BIGINT(20) COMMENT '学生',
  chapter_id BIGINT(20) COMMENT '章',
  section_id BIGINT(20) COMMENT '节,可以为空,表示为本记录为章掌握率',
  difficulty INT COMMENT '对应理解层次(了解,理解,应用)',
  degree DOUBLE COMMENT '掌握率',
  exp INTEGER COMMENT '经验值',
  latest_prolems VARCHAR(200) COMMENT '最近做题数组记录n条,可配置',
  problem_results VARCHAR(20) COMMENT '做题结果,记录m条,可配置',
  created_dt DATETIME,
  updated_dt DATETIME,
  version INT(11) DEFAULT '0'
);

CREATE UNIQUE INDEX UN_Student_Section_Diff ON tb_student_mastery_degree(student_id, section_id, difficulty)

章节配置表(题目要求难度,每章要求配置)

CREATE TABLE tb_student_mastery_degree
(
  id BIGINT(20) PRIMARY KEY NOT NULL AUTO_INCREMENT,
  chapter_id BIGINT(20) COMMENT '章',
  section_id BIGINT(20) COMMENT '节,可以为空,表示为本记录为章掌握率',
  layer INT COMMENT '对应理解层次(了解,理解,应用)',
  difficulties VARCHAR(20) COMMENT '满足的题目难度列表',
  over_count DOUBLE COMMENT '掌握所需达到中点正确率的组数',
  created_dt DATETIME,
  updated_dt DATETIME,
  version INT(11) DEFAULT '0'
);

配置参数

经验值算法中,针对每个不同层次,每组题目数量 n;中点正确率 p_mid, 每组达到中点正确率的题目增加的经验值 exp_mid;最低正确率 p_min,最低正确率 增加经验值 exp_min;最大正确率 p_max,最大正确率经验值增加 exp_max;掌握所需中点正确率组数 m,直接判定为掌握的正确率 p_end;跨组连对所需题目数量 allow_combo,无论对错每道题增加的经验值 exp_did

向下影响力,理解层次对了解 inf21,应用层次对理解层次inf32,应用层次对了解inf31

掌握度与经验值算法中,公式为 degree = norm * exp^r,其中 degree 为掌握率;norm 为归一化系数,使得 degree 在一定区间内;r 为幂系数。

程序结构

主要流程

  1. 输入学生做题记录
  2. 预处理必要信息,题目或学生相关
  3. 通过题目所属章节获取相关学生掌握度记录
  4. 判断连对状态
  5. 判断是否达到分组个数,
  6. 若没有达到,记录题目信息,经验值加上题目经验值。
  7. 若达到要求个数,计算分组正确率,换算成经验值。
  8. 经验值增加,换算成掌握率。
  9. 存储新的学生记录。

类结构

流程控制类 Engine

控制整个学生章节掌握度的评估流程,调用不同的方法。

题目信息预处理类 ProblemPre

将题目预处理成包含全部必要输入信息的VO

经验值计算类 ExpCalculator

输入做题信息和学生之前的记录,得到本次经验值

掌握度判定类 DegreeDeterminer

将经验值转换为掌握度


完结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值