【摘 要】在计算思维理论指导下,教师要合理设计创意编程课程,选择学思融通等教学方式调整学生的学习行为。本文从问题的发现与思考、模型的归纳与迁移、程序的编写与优化三个方面阐述如何在教学中使用相应的策略让学生经历学习的全过程。
【关键词】计算思维;创意编程;教学策略;学思融通
【中图分类号】G434 【文献标识码】A
【论文编号】1671-7384(2022)07-056-03
随着大数据、人工智能等技术的迅猛发展,在信息技术课程教学中培养学生计算思维与创造能力已成为适应信息时代的需要。新课程改革的背景下,基于计算思维的创意编程教学,教师要结合多方位、多角度的学习策略调整学生学习行为,引导学生经历发现与思考问题、归纳与迁移模型、编写与优化程序等全过程,培养学生学科学、爱科学、用科学的科学精神,提升其信息技术核心素养。
问题的发现与思考
亚里士多德有句名言:思维自疑问和惊奇开始。孔子也曾说过,疑是思之始,学之端。常疑常思,常思常新。因而在创意编程活动的各个环节,教师都需要精心地设计问题,引导学生进入积极的思维状态,让学生学会从学习生活的具体现象与事物中发现问题,应用关注点分离、计算参与等策略来思考問题[1]。
1.设计问题的教学策略
《江苏省义务教育阶段信息技术课程指导纲要》中,将“初步感悟信息技术在人类生产与生活中的重要价值,尝试运用计算思维识别与分析问题,抽象、建模与设计系统性解决方案”作为学科课程目标,倡导探究式学习方法,重视学生的自主学习。
首先,问题设计联系学习生活。创意编程问题来源于学生的生活实际,如数学、音乐、生活起居、园艺苗圃等,教师精选其中学生感兴趣、有价值、易操作的内容,如艺术图形、智能家居、无人驾驶等,给予适当的引导、点拨,优选主要问题进行研究。其次,问题设计要面向全体学生。教师引导学生小组协作,制订项目需求,多角度、多层次设计问题:创作思路、问题解决之法、编程知识的重难点、作品迭代更新修改、程序调试运行预设等。同时把握好时机,问在学生“欲发而未发”之前,问在学生“似懂而非懂”之处,问在学生“无疑与有疑”之际[2]。再次,问题设计需要学科思维主导。学生分析编程项目,从不同角度、不同层次设计与筛选问题,体现感知模块化、面向对象、迭代等基本的软件工程思想。教师要引导学生融合学科知识,主动探索,乐于尝试,建构并完善程序设计知识体系,锻炼系统思维和计算思维能力。最后,问题设计要兼顾学习工具。当前创意编程的工具根据年龄和学段的差异,主要有不插电编程、图形化编程、代码编程、开源硬件编程等。师生可灵活选择学习工具或组合应用,兼顾程序的移植和硬件的搭配。
2.解决问题的教学策略
计算思维为创意编程教学活动提供了活力,教师可以用计算参与的方法使学生真正成为问题的发现者,面对复杂问题时主动探索问题本质,进而拆解成易于解决的小问题。一是问题关注点分离。如对开源硬件智能设计、人机交互游戏等项目做合理的分解,控制问题复杂性,提高可理解性,再分别研究项目任务的不同侧面,最后综合各方面的成果,合成整体的解决方案[3]。二是探索计算参与教学。美国Yasmin B.Kafai教授指出,以“社会化转向”为特征的计算参与是培养学生计算思维的新范型。教师可以从“编写代码到创建应用”“设计工具到促进社区”“白手起家到再创作他人成果”这三个维度[4],侧重开展应用层面的编程教学,扩大学生的参与面。三是培养可视化思维。如在以“斐波那契树”等数学、物理学科内容解析为认知导向的学习活动中,教师应用思维导图建立知识习得的途径,将深奥的问题具体化呈现。教师可以借助图形化编程工具探索问题求解的最优路径,进行程序的可视化表达。
3.拓展问题的教学策略
教师依据学生年龄特点,以情景故事、游戏挑战和动手拼搭等主题进行拓展探究,学习图形化编程或代码编程的程序逻辑与代码技巧,完成创意程序的编写。如个性化游戏设计,教师将创意编程与游戏创作相结合,引导学生围绕游戏活动思考和发现问题,应用不插电方式或图形化编程工具创建丰富的游戏、动画故事,让解决问题的过程变成有趣的“游戏”。又如交互式项目制作,教师在交互式艺术作品创作学习过程中,引导学生从思考单用户操作拓展到AI人机交互操作,亲身体验通过图形、音频等方式与计算机互动的神奇效果,深入理解由事件拓展而来的计算概念。再如螺旋式实践创新,教师引导学生从一个简单的问题或者一个项目组件开始,逐渐添加脚本或代码,直到其完全实现效果,然后再设计运行,将原型逐步扩展为成品程序,在整个编程学习过程中通过设置若干细节问题来拓展程序创新功能。
模型的归纳与迁移
模式识别、模型归纳是计算思维的重要组成部分,在程序设计教学中具有很强的可操作性。教师可依托计算思维训练的指导框架,利用学习支架帮助学生认识理解创意编程的综合性、抽象性,实现隐性思维显性化、显性思维工具化、高效思维自动化,真正构建思维发展型课堂[5]。
1.搭建“模式识别”学习支架
应用模式识别解决问题的规则,有助于培养人的元认知能力,即学会发掘模式、应用模式分析和设计方法。这有助于我们利用别人的经验,特别是专家的经验来分析和描述问题。(1)数据表征。在“避障”“巡线”等开源硬件创意编程活动伊始,教师设计活动记录单等数据输入支架,组织学生对比实验活动记录筛选数据,多层面多形式呈现加工信息,引导学生关注要点,并用语言、文字、图表等方式来表征。(2)模式识别。在数学、图形等可视化表达创意编程作品中,教师可设计表格形式的局部比较支架。表格设计指向具体的活动目标,教师引导学生在活动中发现表格隐藏的特征或规律,实现形式到逻辑的模式识别。(3)分解转化。以代码编程“百钱买百鸡”问题为例,教师为学生提供表格填写每一次循环执行的结果,通过变量列表法模拟推演,帮助学生理解循环的运行过程;引导学生绘制流程图表示循环的嵌套,理清内外循环之间的逻辑关系;在不插电编程活动中,还可利用游戏积木、卡片图示、提示语、微视频等学习支架,将复杂的问题分解转化为简洁明晰的操作。
2.优选"模型归纳"学习策略
程序设计归纳模型主要锻炼学生比较、概括、推理方面的能力,为进一步编写复杂程序做好基础准备。(1)共通原理。在机器人编程常见的项目中,如物品搬运分拣、无人驾驶汽车等,虽然控制过程非常复杂,但它们有着共同的原理:智能的感知识别、深度学习的经验积累和根据环境与经验做出的控制决策等。教师在编程中指导学生通过观察关键动作,学习控制方法,自主建构模型,领悟控制原理。(2)分离比较。在人机五子棋、双人足球等交互游戏项目中,教师需要引导学生将单个事件从同类事件中分离,通过区分研究事件、对象各方面的要素,同时明晰区分比较的必要性与合理性,初步体验决策树模型。(3)约简提炼。教师通过枚举、分类、概括等方法分析问题间的共性与可变性,通过提炼的方法撇开非本质要素,以简略的形式表述各要素之间的关系,进而抽象出解决问题的一般模型。
3.探索“模型迁移”学习应用
程序设计迁移学习利用数据、问题、模型之间的相似性,可以将学习过的知识、模型迁移应用于新项目的实践创作中。(1)迭代复用。学生在编程过程中复用模型,可节省创作时间、降低编程难度,同时循序渐进地完善程序,增强创意编程作品的規范性、科学性和创新性。(2)局部变式。模型转换的过程是不断试验和探索的过程。教师应设计出可以点拨学生举一反三、通过变换问题转换先前所归纳的模型,围绕新的问题和需求不断尝试,更新模型来完成任务,提升学生发散思维和动态思维。(3)知识图谱。教师应用知识图谱引导学生建立节点之间的关系,避免模型碎片化,促进学生系统且有意义地学习。
程序的编写与优化
编程可以锻炼学生的逻辑思维和计算思维,帮助学生更好地认识世界,促使他们从科技的消费者转变为创造者。教师在中小学各年级统筹编排编程主题活动,分步融入计算思维要素,迭代优化实践作品,进行展示与评价,有助于发展学生编写与优化程序的能力。
1.项目学习,自主编写程序
目前国内众多平台秉承开源、共享的理念, 为中小学生提供一个搭建程序、快乐实践创意的云平台。平台汇聚了各地优秀的创意编程作品,包括交互游戏、自动化控制、创客设计等。学生在充满趣味的氛围中经历“运行程序—分析程序—提取指令形成指令集—分析指令集功能指向特点”的过程,从而逐渐提升个人“指令集”的高阶思维水平,为编写智能穿戴、语音识别等生活小应用积累程序模块。同时,创意编程活动倡导小组合作的互动与表达。如教师给出绘本阅读灯、月食的形成等科技创新项目要求,各小组统筹做好作品的规划、程序的编写和调试、作品的硬件拼搭、硬件的外形美化等。教师要关注编程活动的每个细节,从多个层面进行展示点评,一方面及时发现学生身上的闪光点,评析作品的优点和特色;另一方面引导学生学会反思,优化作品方案,从创新创造、艺术审美、用户体验、程序技术等方面改进作品,有意识地培养学生计算思维与设计思维的融合,鼓励学生创新。
2.学思融通,调试修改程序
程序设计的重要环节是运行调试,学生在调试中学会理清逻辑关系,发现错误,修改程序。当前主流的互动编程平台,学生能立即获得所编写程序的反馈,若程序执行出现Bug,则系统会自行跳出提示。创意编程的过程并非一帆风顺,一方面错误无法预料,另一方面运行效果与预期有差距,学生会对这样或那样的问题感到不知所措。教师应培养学生的耐心和自信心,倡导自上而下逐步求精,将一个复杂的功能拆分为多个小功能任务分步骤进行编写,并且对每一次实现的功能进行测试,同时需要关注参数的设定、边界值范围等。修改比较大可能会呈现新的偏差或错误,教师要引导学生采用代码放大修改法,突出重点,反复调试。程序的逻辑有时是违反直觉的,学生需要深层次分析。当面对单一程序时,可呈现关键点的结果,看看运行情况;当面对相互关联的多个程序时,学生可以用消息同步多段脚本的执行顺序,也可以代入数据,单步执行,逐行分析,深化程序逻辑的理解。此时学生需要发挥勇于探索的精神,教师不能草率否定学生的无效探究,也不能强求学生调试的方式、路径与预设的一致。
3.关注细节,优化设计程序
随着程序设计的逐步深入,学生积累丰富的编程经验,可以通过细节的优化来提高程序的运行效率。首先是提高程序可读性,教师引导学生养成良好的习惯,如定义规范的名称、写清楚注释语句等,通过对比学习让学生领悟程序模块简洁更容易理解,程序的逻辑清晰更容易修改和更正。其次是降低程序复杂度,如教师可使用数组、链表、栈、队列等数据结构降低空间复杂度,使用动态规划、前缀和、最短路、组合计数等算法来降低时间复杂度等。最后是探究自动化执行,教师要结合人工智能教育,设计开源硬件创意编程课程。如园艺土肥智能灌溉项目,结合智能传感器、云平台,实现自动侦测土壤的氮磷钾肥含量和土壤湿度、自动浇水、施肥、拍照、通风等。
注:本文系江苏省中小学教学研究第十三期课题“基于计算思维的小学生创意编程实践的研究”(课题编号:2019JK13-L281)研究成果
参考文献
[3] 曹恒来,陈宏斌,钮洪斌,仇大成. 基于计算思维的小学程序设计教学研究与实践[J]. 中小学信息技术教育,2016(12): 39-42.
钟海峰,孟敬德. 例谈信息技术教学中的课堂提问技巧[J]. 中国信息技术教育,2014(9):50-51.
王旭卿. 从计算思维到计算参与:美国中小学程序设计教学的社会化转向与启示[J]. 中国电化教育,2014(3): 97-100.
阳小华,刘志明,刘杰,李华新. 我国计算思维教学的回顾与展望[J]. 现代远距离教育,2018(2): 3-11.