姜强 王利思 赵蔚 潘星竹
摘要:随着人工智能时代的来临,编程教育日益受到重视。学生在编程过程中的行为,实质上反映了其对利用计算工具解决问题的认知水平,也映射出其计算思维的发展过程,挖掘三者间的隐含关系有助于通过优化编程任务设计改善对学生计算思维的培养。基于认知目标分类和计算思维三维框架构建映射关系,以Scratch可视化编程任务作为研究案例,采用编程操作视频分析与学生访谈相结合的方法,从编程行为表征的视角对认知水平与计算思维间的隐含关系进行挖掘后发现:一方面,认知水平与编程行为之间存在密切关系,知道与理解是编程行为的基础性认知,应用与分析是编程行为的核心,评价推动学生对编程行为的反思,而创造可激发编程行为产生新的作品。另一方面,在编程活动中,学生的认知水平与计算思维的发展彼此关联且相互促进,编程行为中的低阶认知目标的达成是形成计算观念的基础,编程实践引发的高阶思维认知需求可促进学生对计算思维的领悟。因此,应当遵循认知水平与计算思维的发展规律,有针对性地将面向各类认知目标的编程任务嵌入到教学设计中,方可有效实现利用编程教育对学生计算思维的培养。
关键词:编程教育;计算思维;认知水平;行为表征;Scratch
中图分类号:G434 文献标识码:A 文章编号:1009-5195(2020)02-0094-10 doi10.3969/j.issn.1009-5195.2020.02.011
*基金项目:教育部人文社会科学研究青年基金项目“大数据时代在线学习者情感挖掘与干预研究”(16YJC880046) ;东北师范大学教师教育研究基金项目“职前教师信息技术应用能力培养与发展研究”(JSJY20180301)。
作者简介:姜强,博士,教授,博士生导师,东北师范大学信息科学与技术学院(吉林长春 130117);王利思,硕士研究生,东北师范大学信息科学与技术学院(吉林长春 130117);赵蔚,博士,教授,博士生导师,东北师范大学信息科学与技术学院(吉林长春 130117);潘星竹,二级教师,大连市甘井子区奥林小学(辽宁大连 116031)。
一、引言
随着人工智能时代的来临,编程教育的课程化成为一种趋势。国务院与教育部分别印发的《新一代人工智能发展规划》和《2019年教育信息化和网络安全工作要点》明确提出要在中小学阶段设置人工智能相关课程、建设人工智能学科、逐步推广编程教育(国务院,2017;教育部办公厅,2019)。编程教育与新时代下所倡导的STEAM教育、创客教育理念不谋而合,有利于学生从科技的消费者变为科技的创造者,进而获得技能转移,使其在具体的编程语言环境中通过运用较复杂的思维技能来培养高阶思维和计算思维,以提高问题解决能力和创新能力。目前,中小学生主要利用Scratch完成编程任务,其作为一种可视化编程工具,以“所见即所得”的编程思想为原则,可形象地表征个体的思维过程,促使个体主动地进行知识建构,形成自己的知识网络。
然而,在编程环境中,当学生在通过创建程序解决问题时,其注意力已从操作层面转移到理解编程的认知层面,其利用计算机语言进行计算式思考的过程,实质上反映了其利用计算工具解决问题的一系列认知过程。仅依靠对最终程序或作品的分析往往不能全面解释学生对编程问题的理解及其思维过程,要深度理解“隐形”于计算机操作知识中的计算思维,还需关注学生实践过程中的行为表现和认知水平,以剖析学生的概念应用能力、拆组项目能力、纠错分析能力以及问题解决能力。因此,本文基于修订版布鲁姆认知目标分类体系和美国麻省理工学院(MIT)提出的计算思维三维框架,聚焦于对学生编程行为过程的理解,判断编程实践引发的认知需求,挖掘学生认知水平与计算思维间的关系,旨在揭示编程教育对思维发展的普适性价值,为针对性地设计适合学生思维特点的可视化编程任务,进而从认知角度根本改善计算思维的培养方式提供启示。
二、相关概念与理论框架
作为一种复杂的心智活动,计算思维(Computational Thinking)涉及问题制定、解决方案形成、方案执行和评估的迭代过程,其以抽象和自动化为特征,以计算资源为手段,以问题解决为目标,是新时代人才适应数字化生存的必要技能。Wing(2006;2010)指出计算思维是“21世纪的新素养”,是与听、说、读、写同等重要的基本技能之一,是一套利用计算机科学的基本概念解决问题、设计系统和理解人类行为的完整思维工具。美国计算机科学教师协会(Computer Science Teachers Association,CSTA)提出了计算思维用于问题解决的操作性定义,即以机器协助方式形式化问题,以逻辑方法处理数据、抽象化表示数据、算法化自动解决方案,以有效方式解决问题并将知识和技能迁移至其他问题情境(Chen et al.,2017)。陈国良等(2013)指出计算思维是一种综合性思维,包含数学思维、工程思维和科学思维。李廉(2012)认为计算思维与实证思维、逻辑思维一样,是人类科学思维的重要组成部分。战德臣等(2013)指出计算思维是一种思维方式,学生不应仅着眼于“知识”(即事实)的学习,而应更多地训练“思维”。此外,吴忭等(2019)基于量化民族志的分析方法对计算思维能力进行了评估,张进宝(2019)从计算学科、普适化和认知发展三个视角对计算思维概念进行了系统化分析。
目前,各国均十分关注和重视对学生计算思维的培养。英国全面改革中小学计算机课程教学大纲,从侧重于软件应用的信息通信技术教育转向以计算思维培养为重点的计算机科学教育(Department for Education,2014)。美国《K-12计算机科学框架》指出,儿童需要在获得一定的计算机操作技能基础上,构建扎实的计算思维(ACM et al.,2016)。新加坡启动了“智慧国家计划”,注重开发学生的计算思维能力(Seow et al.,2017)。意大利启动Programma il Futuro项目,以Code.org开发的教学材料为基础,强化培养学生的计算思维(Nardelli et al.,2015)。“澳大利亞课程:数字技术”(Australian Curriculum: Digital Technologies)强调让学生开发和运用计算思维技能,在创建、交流和共享信息及管理项目时,使用编程技术和数字化方式来解决特定的问题或需求(ACARA,2012)。芬兰将编程作为小学教育的综合要素之一,大力培养学生的计算思维(Heintz et al.,2016)。爱沙尼亚启动ProgeTiger项目,旨在把编程和机器人技术引入教育领域,将计算思维与人工智能活动相结合,以应对技术世界的挑战(HITSA, 2015)。我国新修订的《普通高中信息技术课程标准》强调计算思维是信息技术学科的核心素养之一,要通过学习计算机科学相关知识与技能,培养学生的逻辑思考、系统化思考能力(任友群等, 2016)。
(1)编程行为与认知水平间的关系
第一,知道与理解是编程行为的基础性认知。由表3中事件的材料来源数量可看出,每个学生的编程活动都含有“记住或回忆有关工具、模块和功能”事件,其具体涉及的活动包括打开软件、查看旋转按钮的功能、查看各个模块信息等。学生通过回忆任务信息与原有认知建立连接,概念化所需工具和任务标准,按照任务要求和标准完成增删场景、角色、造型等活动,初步形成了运用计算工具解决问题的观念。在教师指导下理解相关计算概念,共同完成对复杂任务的解构,明确完成任务所需阶段,是完成计算实践的基础。因此,概念化任务和工具、解构模块化任务阶段往往发生在学生实际编程活动之前,多与教师共同完成,因而操作行为只能体现部分认知过程。“知道”与“理解”相关事件的平均时长占比之和为12.14%,且与学生和教师共同完成概念化任务的时长大致相当,因而学生总体上需要花费约五分之一的时间来完成编程前的准备工作。此阶段中,与“知道”和“理解”这两种低阶认知目标相关的行为事件较多,主要涉及概念化成功标准、解构复杂任务、了解相关计算概念、思考如何利用计算工具解决问题等。在教学过程中,应注重引导学生理解任务要求和标准,帮助其解构任务,以思维导图的形式规划解决方案,选择恰当的工具和策略解决复杂问题。
第二,应用与分析是编程行为的核心。在Scratch编程活动中,与“应用”和“分析”相关的行为事件最多,超过85%的学生会依次为每个角色分步骤创建动作脚本(39人)和测试脚本(38人),并根据测试结果修改脚本(35人)。据观察,动作脚本中学生使用频率较高的相关计算概念有触发器、坐标值、随机数、变量、重复执行等,而关系运算符和判断条件只有少量学生使用。参考点统计结果显示,平均每个学生测试脚本4次,个别学生的测试脚本事件次数达10次,且测试脚本后,学生往往会继续添加脚本或在分析脚本错误后对其作出修改。分步骤创建动作脚本与调试脚本是编程工作的核心。学生在创建脚本时,会长时间集中注意力,将自己的逻辑思维以可视化的方式呈现出来,这是隐性思维的外显化;学生在测试脚本之后,将测试结果与设想结果进行对比,分析差异、识别脚本漏洞或错误并对其进行修改校正,这反映了编程中“应用”与“分析”的连续思维过程。在小组合作中,学生利用试验与迭代、测试与调试的计算实践策略来识别故障原因,反复纠错并不断得到新的反馈,进而完善问题解决方案,在此过程中学生的毅力和协作能力得到了充分锻炼。大约1/3的学生(13人)在测试脚本之前,就对脚本的执行结果进行预测,以质疑视角分析程序,识别和纠正可能的错误,其中多数通过调换模块顺序或修改变量数值来完善已编写好的程序,直到脚本逻辑符合自己的理想状态才进行测试。这一过程是学生预测性思维的表现。预测性思维作为一种复杂的高阶思维,在小学高年级中只有少数学生具备。教师可以适当引导学生对程序的执行结果进行预测,将Scratch编程作为发展学生预测性思维的有效载体。
第三,评价推动学生对编程行为的自我反思及作品优化。编程活动中的评价性行为分为两种情况。一种是面向操作,与修改相关联,可以根据操作行为进行表征的评价性行为。有少部分学生对自己的作品细节作出评价并加以修改完善,如一名同学经过测试发现作品中的小鱼下降速度太快,便添加了“等待n秒”模块,让小鱼下落的速度符合自己的标准。另一种是未面向操作,根据一定的评价量规,从多方面对自己的编程结果作出评判的行为。针对此种评价性行为研究采用访谈加以补充。评价与学生所理解的成功标准相关。由于每个学生的主观审美和感受不同,当学生發现结果与预期不一致时,会努力地识别错误,其可能会更改程序,也可能不会更改,因而单纯依靠操作行为很难体现学生对编程结果的最终评价。在访谈中发现,许多学生对自己的作品有一定的评价,但对于作品的不足并没有作出相应的修改与完善,多数同学表示这是因为课堂时间有限,只有个别同学会利用课余时间进行修改。评价与修改程序需要学生运用迭代策略不断对其进行完善,因而教师需要培养学生的恒心和毅力,并从量与质两个维度制定合适的编程评价量规,鼓励学生通过记录日志或心得的方式来进行自评和组评,充分发挥多元评价主体的作用。
第四,创造激发编程行为产生新产品。在创造性行为方面,有48.8%的学生(20人)为编程游戏添加了新角色,如螃蟹、老鼠等,甚至有学生完全基于个人想法,重新编排了游戏情节,如猴子摘香蕉、小猫捉老鼠等;超过1/4的学生为游戏设计了新场景(11人)、添加了新动作(12人),如让小鱼横向游动,更换新触发器等;还有个别同学为角色添加了新的造型以实现角色在不同造型之间的切换。创造性思维是认知目标的最高层次,学生在编程的各个环节,均可以通过创造性思维设计新事物、做出新产品。Scratch编程不仅满足了学生的编程需求,还提供了角色造型库和绘画功能,拓展了学生的想象空间,对于培养学生的创造性思维卓有成效。
(2)编程行为与计算思维间的关系
从表3中的总时长占比结果来看,学生在Scratch编程过程中,“应用”(41.29%)与“分析”(28.56%)相关事件约占总编码时长的70%,其中分步骤创建脚本(32.72%)、分析修改测试后的脚本(17.36%)花费的时间最多。结合对总时长占比和材料来源数量的分析,可以看出,多数学生达到低阶思维层次,学生整体上在低阶思维相关事件上所花时间较多,总时长占比约为59%(其中,“知道”占7.77%,“理解”占9.86%,“应用”占41.29%),而达到复杂高阶思维层次的人数较少。通过平均时长占比数据可以看出,达到高阶思维层次的学生在高阶思维相关事件上的平均时长占比之和约为58%(其中,“分析”占34.03%,“评价”占8.82%,“创造”占15.39%),高于低阶思维相关事件的平均时长占比之和,这表明高阶思维相关事件需要学生花费更多的时间来进行思考和操作。
对编程模块的使用情况和操作行为进行统计后发现:对于小学生而言,在计算概念层次上,数据是基础,被普遍使用,而操作(关系运算和逻辑运算)是存在学习困难的概念,只有少数学生使用;序列、条件和循环作为程序设计的三大逻辑结构,学生使用最多的为序列块,条件块多使用单一条件,循环块普遍使用较易掌握的永久重复执行,而相对复杂的条件循环块则使用甚少;学生多使用串行执行结构解决问题,而对并行执行结构的运用还存在较大困难。在计算实践层次上,试验与迭代、测试与调试是学生应用与分析思维中常用的实践策略,但其花费时间较长;对于编程任务整体算法的设计与分解(抽象与模块化)需要教师进行详细的引导和规划;对概念块的使用还不能有效做到举一反三,仍停留在理解与应用等较低层面上,计算实践的整体水平偏低,多为低阶认知目标水平的实践。在计算观念层次上,质疑观念最为突出,而利用计算工具创造性表达自我的观念较薄弱,分享“连接”观念对于概念化任务和错误、调试与迭代的效率提高有显著作用。
编程亦是“人工智能+”教育的重要方式,学生在创建、修改、测试和分享作品的过程中,通过不断调整和反思,既获得了知识技能,又提高了计算思维能力,这符合个体的认知发展规律,有助于对学生信息技术核心素养的培养。进一步的研究可考虑:(1)多层次的数据获取与多任务类型的设计。一方面,面向小学、初中、高中等不同学段群体开展研究;另一方面,除游戏案例外,设计多类型任务(如故事、音乐、动画等),增强研究的普适性。(2)除自身操作性学习行为外,有必要进一步系统研究小组合作、教师评价等因素对学生认知水平、计算思维的深层次影响。(3)针对计算思维迁移的研究。本文是在编程学习平台下开展的研究,而将研究情景迁移到日常的实际问题解决中,可进一步挖掘认知水平与计算思维间的关系。
参考文献:
[1]陈国良,董荣胜(2013).计算思维的表述体系[J].中国大学教学,(12):22-26.
[2]國务院(2017).国务院关于印发新一代人工智能发展规划的通知[EB/OL].[2019-01-10].http://www.gov.cn/zhengce/content/2017-07/20/content_5211996.htm.
[3]教育部办公厅(2019).教育部办公厅关于印发《2019年教育信息化和网络安全工作要点》的通知[EB/OL].[2019-03-15].http://www.moe.gov.cn/srcsite/A16/s3342/201903/t20190312_373147.html.
[4]李廉(2012).计算思维——概念与挑战[J].中国大学教学,(1):7-12.
[5]任友群,黄荣怀(2016).高中信息技术课程标准修订说明[J].中国电化教育,(12):1-3.
[6]吴忭,王戈(2019).协作编程中的计算思维发展轨迹研究——基于量化民族志的分析方法[J].现代远程教育研究,(2):76-84,94.
[7]战德臣,聂兰顺(2013).计算思维与大学计算机课程改革的基本思路[J].中国大学教学,(2):56-60.
[8]张进宝(2019).计算思维教育: 概念演变与面临的挑战[J].现代远程教育研究,31(6):89-101.
[9]ACARA (2012). Draft Shape of the Australian Curriculum: Technologies[EB/OL]. [2019-06-09]. https://docs.acara.edu.au/resources/_of_the_Australian_Curriculum_Technologies_paper_
_March_2012.pdf.
[10]ACM, Code.org & CSTA et al. (2016). K-12 Computer Science Framework [EB/OL]. [2019-06-09]. https://k12cs.org/.
[11]Brennan, K., & Resnick, M. (2012). New Frameworks for Studying and Assessing the Development of Computational Thinking[C]// Proceedings of the 2012 Annual Meeting of the American Educational Research Association. Vancouver, Canada: AERA:1-25.
[12]Chen, G., Shen, J., & Barth-Cohen, L. et al. (2017). Assessing Elementary Students Computational Thinking in Everyday Reasoning and Robotics Programming[J]. Computers & Education, 109:162-175.
[13]Department for Education (2014). National Curriculum in England: Framework for Key Stages 1 to 4 [EB/OL]. [2019-03-07]. https://www.gov.uk/government/publications/al-curriculum-in-england-framework-for-key-stages-1-to-4/al-curriculum-in-england-framework-for-key-stages-1-to-4.
[14]Falloon, G. (2016). An Analysis of Young Students Thinking When Completing Basic Coding Tasks Using Scratch Jnr. on the iPad[J]. Journal of Computer Assisted Learning, 32(6):576-593.
[15]Heintz, F., Mannila, L., & F?rnqvist, T. (2016). A Review of Models for Introducing Computational Thinking, Computer Science and Computing in K-12 Education[C]// Frontiers in Education Conference. PA,USA: IEEE: 1-9.
[16]HITSA (2015). ProgeTiger Programme 2015-2017[EB/OL]. [2019-04-15]. https://www.hitsa.ee/it-education/educational-
programmes/progetiger.
[17]Krathwohl, D. R. (2002). A Revision of Blooms Taxonomy: An Overview[J]. Theory into Practice, 41(4):212-218.
[18]Mayer, R. E., Dyck, J. L., & Vilberg, W. (1986). Learning to Program and Learning to Think: Whats the Connection?[J]. Communications of the ACM, 29(7):605-610.
[19]Nardelli, E., & Ventre, G. (2015). Introducing Computational Thinking in Italian Schools: A First Report on “Programma il Futuro” Project[C]// INTED2015 Proceedings (9th International Technology, Education and Development Conference). Madrid, Spain: IATED:7414-7421.
[20]Seow, P., Looi, C. K., & Wadhwa, B. et al. (2017). Computational Thinking and Coding Initiatives in Singapore[C]// Proceedings of International Conference on Computational Thinking Education. Hong Kong: The Education University of Hong Kong:164-167.
[21]Wing, J. M. (2006). Computational Thinking[J]. Communications of the ACM, 49(3): 33-35.
[22]Wing J. M. (2010). Computational Thinking: What and Why?[EB/OL]. [2019-02-13]. http://www.cs.cmu.edu/~CompThink/papers/TheLinkWing.pdf.
收稿日期 2019-06-16 責任编辑 谭明杰