赵芳
随着人工智能技术的不断发展,编程已逐渐成为一种趋向于全民掌握的普及性能力,同时上升为一种思维方式,能更好地帮助人们应对人工智能时代所面临的需求与挑战。在小学阶段开设编程课程,对培养学生的学习兴趣、计算思维和问题解决能力,引导学生形成终身学习习惯,助力国家人工智能战略的实现,具有重要作用。
一、编程教学的实践背景
1.政策出台
2017年,国务院《新一代人工智能发展规划》提出,要广泛开展人工智能科普活动,在中小学阶段设置人工智能相关课程,逐步推广编程教育。同年,《普通高中信息技术课程标准(2017年版)》和教育部印发的《中小学综合实践活动课程指导纲要》也对编程教学内容提出了相关指导说明。编程教学进入中小学课堂势在必行。
2.校本课程探索
面对这样的大趋势,我们学校从2018年开始全面开展编程校本课程,为小学一至六年级学生开设不同类型和难度的编程课。从图形化到代码,从闯关到创作,从技能训练到项目学习,从软硬件结合到人工智能,采用不同形式、内容的组合,由浅入深地进行课程设计。通过两年的实践摸索,形成了较为固定的课程架构。
3.疫情复课背景下的制约
编程教学因需要实践体验,通常依托信息技术课开展。而受新冠肺炎疫情制约,复课后信息技术课转移到了普通教室。普通教室中的编程课若想求生,则需要教师对课程重新思考和定位,这是探寻和深挖编程教学价值的一次有利契机。
二、编程教学的价值所向
1.编程与计算思维
计算机科学家周以真最先提出:计算思维本质上是一种运用计算机科学的基本概念进行问题求解、系统设计并对人类行为进行理解的思维方式。
2017版新课程标准明确指出“培养学生计算思维”这一核心素养的要求,并加以解读,即采用计算机可以处理的方式界定问题、抽象特征、建立结构模型、合理组织数据,运用合理的算法形成解决问题的方案。
对比以上两种解读,笔者认为周以真的界定更为宏观,新课标则更具象地指明了培养计算思维的途径与方法,而编程教学则是重要载体和手段。正如华东师范大学教授任友群所说:“今天我们重视编程,是在培养学生一种‘计算思维+的能力,让个体运用计算机科学领域的思想方法,在形成问题、解决方案的过程中产生一系列思维活动和创造实践。”现在的编程教育除了看中思维过程,同时也注重培养创造力。
2.算法与人工智能
算法是编程教学的核心内容,也是最能体现计算思维模式的一种表达。而算法的形成是自然语言与计算机语言之间的相互转换,要建立在二者思维模式的相互理解基礎上。如果计算机能自动习得我们分析问题、解决问题的方法,那就更接近于人工智能的“深度学习”。
3.可迁移性与终身学习习惯
编程教学的重要媒介是计算机语言,小学阶段计算机语言的选择是为了服务学生的认知特点与兴趣点,不必追求编程语言的“先进性”。为了让今天的学习内容能服务于学生的未来,学生学习的内容应是基础的、可迁移的。信息时代技术发展之快,使得学生今日之所学并不能在多年后直接使用,这更从某种意义上督促学生和教师养成终身学习的习惯,这也是编程教学甚至是计算机科学不同于其他学科的一个重要特性。
三、编程教学的实施途径
1.小学各年级课程规划
从学生认知角度出发,设定不同阶段目标,开设不同编程教学内容。一至二年级以通关形式的图形化编程为主;三年级结合硬件学习图形化编程;四年级通过图形化编程完成小作品创作;五年级学习代码编程;六年级通过小组合作项目学习进行游戏创编,并加入人工智能相关课程内容。
2.教室中的编程课实践
笔者承担五年级代码编程教学任务。按照原先的课程计划,使用CodeMonkey编程平台,利用通关方式教学代码编程,以提升学生分析问题、解决问题的能力。但面对疫情防控要求,走进教室的编程课脱离了计算机这一操作工具,课程的设计重点更倾向于计算思维的培养,而非技术的实践训练。无论是教学形式、内容配比还是目标定位都发生了一些变化。
变化1:为了能更好地抽离出问题模型,并与实际相结合,笔者加入了不插电游戏环节,引导学生通过肢体活动模拟机器思维和人类思维解决问题,不仅可以帮助学生将真实世界与虚拟世界进行连接,也可充分激发他们对编程学习的积极性。还可以此为途径,聚焦对人类思维方式的拆解与思考,进行自然语言与机器语言的转化。
例如,通过不插电游戏“画个圈”理解times循环中重复次数与重复单元的概念;通过不插电游戏“与朋友挥手”区分times循环与for循环的区别。再比如分析任务“让小猴沿小岛吃香蕉”,引发学生思考“如何沿小岛吃到香蕉”,想到“按顺序走到每一个小岛”,此过程即完成了对自然语言的分析、对人类思维的重审和对目标实现的过程描述,最终转化为机器语言,使用for循环解决问题。
变化2:通过CodeMonkey平台提供的情景创设,有梯度地提出问题,以完成编程知识体系的逐步架构与综合应用。在教室进行编程教学时,鼓励学生提出不同想法与算法,并进行对比。
例如过桥问题,小猴正对着河对岸的香蕉,而桥位于二者左侧。小猴怎样才能吃到香蕉?学生只学习过左转、右转、前进这三个命令时,他们大部分会运用“左行—上行—右行”的路线吃到香蕉。在教学中引导学生拓宽思路,对比不同线路可能使用到的代码行数、可行性、优化程度等,从某种程度上也是在渗透人工智能教育的目标——通过编程的方式让机器“像人类一样思考”,从而解决实际问题。
四、编程教学的探索与思考
教室中的编程课教学实践与之前校本课程实践经验的积累对比,逐渐引发了笔者对编程教学的一些思考。
首先,编程更容易推动学科融合发展。代码编程不可能摆脱数学、英语等学科知识而成为一门孤立的技术课程,反而更容易通过算法的设计,帮助学生理解数学概念;代码的读写在一定程度上也能提高学生的英语词汇量、表达及理解能力。
其次,在人工智能教育的背景下,人们更乐于见到的是成品的产出,而小学阶段要想达到这样的效果确实存在很大困难。教师可以尝试从项目学习入手,让学习者体会人工智能的思维模式,以及编程作为工具对项目的助力作用。
最后,高年级学生的认知水平可以使其对自我需求进行初步分析,并进行一定程度的创造。笔者坚持“技术是为创意服务的”这一观点。小学编程教学中,培养学生的创造力仍是一个具有挑战的课题,还需更多同行共同努力探索。期待更多的尝试者与开拓者加入到编程教学的队伍中来,为小学人工智能教育提供更多思路与可能。3E3E1EE0-62AD-4AF9-AF6B-1CBF79519B84