之前做上一个项目的时候就读到过Bloom's Taxonomy,上一次组会的时候导师又跟我提到这个话题,所以今天找了几篇paper来看。
关于Bloom's Taxonomy的干货
Bloom's Taxonomy是在1956年由美国的教育心理学大佬Benjamin Bloom提出来的用于归类不同学习程度的认知框架。后来在2000年经过他的学生Anderson修订。
他们把对知识的理解程度分为了6个阶段,还总结了一些各个阶段用于衡量学习能力的一些动词:
第一阶段Remember,是指能记得/回忆/复述起基本的概念和事实,对应的verb有define, duplicate, list, memorize, repeat, state;
第二阶段Understand,是指理解并能够用自己的话解释概念,对应的verb有classify, describe, discuss, explain, identify, locate, recognize, report, select, translate;
第三阶段Apply,是指能够把知识应用在新的场景里,对应的verb有execute, implement, solve, use, demonstrate, interpret, operate, schedule, sketch;
第四个阶段Analyze,是指能够对不同的知识建立联系,对应的verb有differentiate, organize, relate, compare, contrast, distinguish, examine, experiment, question, test;
第五个阶段Evaluate,是指能解释一个观点或者一个决定,对应的verb有appraise, argue, defend, judge, select, support, value, critique, weigh;
第六个阶段Create,是指能够产生新的原创性的工作,对应的verb有design, assemble, construct, conjecture, develop, formulate, author, investigate;
除了归类6个学习中遇到的认知阶段外,作者还对不同的知识做了分类,分类如下
Factual Knowledge 事实性知识,某一学科的基本要素
- 关于术语的知识 (如专业词汇,数学符号,乐符注解,字母等)
- 关于细节的知识 (如食物链的组成,二战期间的著名战争等)
Conceptual Knowledge 概念性知识,一个整体结构中的知识是怎么联系的
- 关于分类的知识 (如动物的种类,不同地质分类)
- 关于原理和概括的知识 (如文学中的不同冲突,牛顿运动学定理,民主原则)
- 关于理论模型以及结构的知识 (如经济学理论,DNA模型,进化论)
Procedural Knowledge 过程性知识,如何做某事
- 关于具体某个学科的技能和算法的知识 (如油画里怎么调色,网球回球)
- 关于具体某个学科的技巧和模式的知识 (如文学批判,分析历史数据,应用数学)
- 关于批判或者决定什么时候用合适过程的知识 (如不同实验该用什么模式,不同情况下如何应用统计学知识,不同流派写作的标准)
Metacognitive Knowledge (不知道怎么翻译,大家都叫它元认知知识,自我意识自我反思)关于整体的想问题和自我认识问题的知识
- 关于策略的知识 (如记住知识的技巧,阅读理解策略,办网站的模式)
- 关于认知任务的知识,包括合理的应用各种客观条件 (如对教材和小说的不同阅读要求;使用数据库的时候提前计划思考;写邮件和写商业信的区别)
- 关于自我的知识 (如在理解一个复杂的图的时候需要图表来辅助,在安静的环境下能更好的理解,在写文章前想跟人聊一下)
Bloom's Taxonomy在CS Education中的应用
Bloom's Taxonomy在CS Education中应用于好多地方,比如课程设计与评定(Scott 2003),结构化衡量(Lister et al. 2003),比较计算机课程的认知难度(Oliver et al. 2004),归类编程任务(Abran et al. 2004),设计编程评估系统(Schneider and Gladkikh, 2006)。Johnson and Fuller(2006)提出,关于Bloom's Taxonomy要如何应用在计算机课程的教学中,学术界和工业界没有一致的认同。于是,Thompson et al.在2008年建立了为计算机教学而修订过的Bloom's Taxonomy。他们分析了introductory programming courses的几份试卷,5个researcher在熟悉课程内容的情况下给每个问题归类,看它属于Bloom's Taxonomy的哪一类,然后他们再分析总结不同的类别下有哪些问题。
具体对Bloom's Taxonomy的解读如下
1. Remember
指给一段代码能够辨别这段代码的构造,理解某个概念要怎么用代码实现,理解对某个概念或术语的合理解释,或者回想起教过的课程里覆盖的知识,包括factual knowledge,或者一个算法。
例子:
1)按优先级列出算数运算符
2)定义构造函数的目的
3)描述状态特征
2. Understand
指能够把一个算法从一种形式翻译到另一种形式,或者能够用自己的话解释一个算法/概念/设计特征,对某个算法/概念/设计举出例子
例子:
1)给一段代码,用自己的话解释发生了什么
3. Apply
指学生了解一个算法/设计特征,应用到一个熟悉的但没有做过的情景中/或者完全不熟悉的情景中
例子:
1)Evaluate the expression: 2+4/7*5%3 == 7
(注意这里虽然用了动词Evaluate,但是跟Bloom's Taxonomy里提到的Evaluate还不太一样)
4. Analyse
指把一个编程任务分为几个部分,把不同的部分组织起来从而达成某个目标,分辨比较重要的部分,和不重要的部分
例子:
1)给一个Circle类的代码,问学生Circle method是干嘛的,它和其他method有什么区别
5. Evaluate
指为了决定哪段代码符合要求而设计合理的测试集,基于运行效率或者代码标准评价代码的质量
例子:
1)给一个问题,2种解法,讨论两种解法的区别,以及哪种更合适
6. Create
指想到解决问题的新方法,把大的问题化成小的块,用一种新的组合方式把算法结合起来
例子:
1)写一个get24HourTime()的函数
Apply和Create的区别:Apply的时候 学生已经对这个算法和过程熟悉了,他们的认知负载比较低,Create需要creative thinking,需要考虑到系统的整体性,然后学生对整个整体的系统还没有什么熟悉度