浙江省杭州市丁荷小学 艾靖雯
随着信息技术的快速发展,教育发生了翻天覆地的变化。2017年7月,国务院印发了《新一代人工智能发展规划》,要求在中小学阶段设置人工智能相关课程并逐步推广编程教育。显然,编程教育逐步变成信息技术学科必不可少的一个重大板块,而培养学生的计算思维是学科的核心素养。因此,编程教育应当普及化,学生必须掌握一种适应时代的编程语言,将想法通过计算机编程来实现。该语言以简单、优雅、速度快的特点深受大众的欢迎。它可以通过调用库函数完成诸多任务,帮助解决开发、大数据挖掘、人工智能等各行各业的问题。
Python是完全面向对象的语言,具有优异的扩展性。它可以通过调用函数、模块、对象来扩充。学生输入一系列的代码,借助指令与计算机实现对话,从而更多地关注到计算思维与逻辑结构,以简单的英语表达句的形式让代码易读、简单、清晰。该语言具有以下特点:语法简洁,结构清晰、通用灵活。当你理解一个Python程序时,就好比阅读英语句子。小学生在整个编程过程中不再过多在意语法问题以及计算机基础内容,把关注点集中在巧妙运用计算机处理任务和问题的方法上。这对于小学生来说,不仅降低了学习新的编程语言的门槛,也给他们带来了很好的学习体验。Python语言教学能更好地发展学生的核心素养。学生在编程的过程当中,会出现一系列的问题,那么要如何处理这些问题?学生要学会自主学习、查阅资料、寻找同伴的帮助,并找出命令当中存在的bug来修改、完善。学生在修改的同时,不是简单地学习了几句代码,而是在整个处理问题的过程当中,提高了自己英语阅读、数学逻辑、计算思维的能力。
在小学高段编程教学当中,通过Python教学可以让学生围绕问题进行分析—理解—编写—调试,也极大地提高了学生的计算思维能力和实际解决问题的能力。与此同时,将真实情景下的问题作为出发点,学生可以将问题与进阶编程教学中的逻辑思维联系起来,能够更好地去理解生活当中的设备的工作原理。
2017年教育部公布的《普通高中课程方案和20科课程标准》中指出:信息技术学科帮助学生掌握信息技术基础知识与技能、增强信息意识、发展计算思维。在“算法与程序设计入门”模块中,积极引导学生学编程。
目前,小学阶段的编程教学以图形化编程为主,它是乐高式的玩具语言。在实际的教学当中,我们可以发现,高段学生的数理逻辑能力已经逐步形成,图形化编程教学的实施会存在以下几个问题:第一,图形化编程的模块扩展有限,它只能实现部分交互性的程序,一些逻辑性强的问题不能解决。第二,图形化编程不利于学生思维的发散,而在进阶编程语言教学中,将计算思维与理论实践相结合。在课堂教学中,从实际问题出发,对问题分解剖析,思考解决该类问题的算法过程,这也极大程度地提高了学生的计算思维能力。第三,图形化编程的脚本较为冗长烦琐,给编程员的视觉阅读效果不佳,这个时候Python编程语言的优势就凸显出来了。
因此,针对上述问题,我们在小学高段信息技术教学中加入了Python编程语言。Python自带的基础绘图库,主要是作为程序设计入门,可以借助Turtle来创作出各式各样的图形,我们可以想象一只海龟,位于坐标为0的中心上,通过计算机命令,使海龟能够运动起来,最终形成了我们想要绘制的图形。在设计的过程当中,让学生掌握了基本的程序结构,例如常见的顺序、选择、循环结构等。结合小学高段学生的认知能力,我们设置了11课时的绘图主题课程,如图1所示,每个章节以项目化学习的方式落实知识点的渗透,通过小任务促进学生自主探究、合作学习。与此同时,还实现了信息、数学、科学、艺术、英语、美术学科的融合,例如项目中提到的有关数学知识点的物体坐标、画圆、画直线等。教师改变了原有编程课的枯燥模式,把课堂还给学生。
图1
Python的强大之处在于自身带有许多的库,而Turtle就是其中之一,它的定义为“海龟”,我们通过“海龟绘图”一课带领学生走进编程的世界。设计思路:本节课以创设海龟绘制图形的情境来激发学生学习的兴趣,教师进行讲解引入新知,结合教学案例,组织学生自主学习,学生在案例学习中来认识Turtle库中的基本命令,并通过任务驱动法让学生运用新知、模仿练习、创新作品、交流展示。
出示各式各样的多边形,让学生猜一猜这些图形是如何绘制出来的。播放海龟绘制图形的视频,揭晓答案。兴趣是学生学习最好的出发点,激发学生学习兴趣,才能让学生产生求知的欲望,带领学生学习,为后续课程讲解做好铺垫。
教师结合绘制正方形案例讲解该库中的基本命令,如图2所示,教师可以将基本命令表发送给学生便于参考。在编辑器中输入对应代码,这个命令是导入一只叫t的“笔”,接着是让海龟前进100的距离,并向右转向的角度为90度,最后是让代码重复了四次,最后你会看到绘制出的是一个正方形。学生通过案例练习后,理解脚本原理,教师可以基于正方形的任务延伸出多边形的任务,由此来拓展学生的思维。例如:“三角形需要转向的角度是多少?”引导学生运用橡皮当作画笔t来试一试。通过以上案例,我们可以发现该进阶编程语言通俗易懂,学生只需要根据问题将基础命令进行组合,就可以进行交互式绘画。在课堂中可以看出学生在完成任务时的喜悦感,也为后续的学习增强了信心。
图2
通过基本命令的学习,引导学生发挥想象力,在任务单上绘制出想画的图形,可以参考右表中的命令在编辑器中自主创作,编写代码。例如让画笔在某个位置进行绘制,还可以同时设置画笔和图形的填充色。在本环节当中,可以采取分层教学,让每位学生的能力和个性差异得到充分的体现,从而实现知识的迁移。学生创作过程当中,积极引导他们归纳总结,不能简单地停留在完成的作品上,而是对原有作品进行延伸。
根据课堂预留时间,教师挑选代表性作品进行展示交流。在分享环节当中,教师积极鼓励学生上台交流,呈现作品以及针对作品讲解思路。在整个交流环节中,学生活跃的发言带动课堂氛围。通过生生评价、师生评价,学生在交流中发现了在编程过程中遇到的难题,巩固了本节课的知识点,并在自我反思中提出对作品进行改进的建议与拓展的思路。与此同时,教师针对学生在编程中存在的问题进行整理和知识点归纳、讲解。部分学生还能提前将其他命令加入本节课的制作中,如循环、颜色等,为下节课的开展做了铺垫准备。
根据课堂教学实践反馈,我们可以看出,小学高段学生的认知以及数学逻辑思维已经形成,他们有能力学习和吸收进阶编程课程的内容。与此同时,让学生提前认识、学习Python也为后续接触人工智能领域打下坚实的基础。需要明确的是,编程教育不仅仅是学习编程语言的技巧,而是帮助学生架构新的计算思维模式。通过认识、理解、感受编程语言的算法、逻辑,引导他们在解决实际生活问题当中形成知识技能,而这恰恰是编程教育的目的所在。