浅谈小学信息技术编程设计对学生思维能力发展的影响

2020-03-03 08:58吴诒南莫志恒黄凯琳
师道·教研 2020年1期
关键词:编程程序思维

吴诒南 莫志恒 黄凯琳

在现阶段深圳小学的信息技术课程中,诺宝及Scratch都已列入课本教材,而在各校的校本课程中,更有开设更深难度的Scratch,以及Arduino、Python、NOIP等形式的编程。笔者在近几年的课堂教学中,深感编程设计对学生思维发展有较大的促进作用, 本文就少儿编程教育对思维能力的影响谈谈自己的浅见。

一、背景分析

美国前总统奥巴马曾提出“每天编程一小时”的活动,提倡孩子们从小开始接触和尝试编程,奥巴马自己也是以身作则,写了一段简单的代码。而在更早之前,英国就已经将“编程”列入了青少年的必学课程,随后一些发达国家也纷纷效仿,编程学习的低龄化已成为近年来全球教育的新趋势。

于我国而言,国务院在2017年下发的《新一代人工智能发展规划》文件中,明确指出应逐步开展全民智能教育项目,在中小学阶段设置人工智能相关课程、逐步推广编程教育,将中小学编程教育提到了一个较高的位置。更在2018年教育部发布的《教育信息化2.0行动计划》文件中,则提出推动落实各级各类学校的信息技术课程,并将信息技术纳入初、高中学业水平考试中,一些机器人竞赛还有相应的加分。

而在深圳,也在近年将诺宝、Scratch等编程课程纳入信息技术教材,学校更是鼓励教师开展各式编程课程做为课程标准外的补充,旨在编程教育中培养少儿的逻辑、抽象和创新思维的能力。且小学生处于身心发展的关键期,同时课业压力相对于初高中学生而言较小,是学习编程的好时期。

二、编程设计对少儿思维、能力发展的影响

1.编程设计锻炼学生的系统思维

系统思维就是人们运用系统观点,把对象互相联系的各个方面及其结构和功能进行系统认识的一种思维方法。只有系统思维,才能抓住整体,抓住要害,才能不失原则地采取灵活有效的方法处置事务。整体性原则是系统思维方式的核心。

在信息课堂编程教学中,对于不同的程序语言,均是要求学生须在每个程序任务前进行整体的分析:把一个复杂的大问题,拆解成更可执行、更好理解的小步骤(分解)→找出相似模式,高效解决细分问题(模式识别)→聚焦最重要的信息,忽视无用细节(抽象)→设计一步一步的解决路径,解决整个问题(算法)。尤其是当学生面对的是复杂度较高的任务时,孩子首先需要通过将复杂任务拆分为一個个小任务,然后逐个击破,最终解决问题、完成任务。在这个任务拆分又重新组合的过程中,锻炼学生须立足于整体,从整体与部分的相互作用过程中来认识和把握整体。

2.编程设计提升学生的抽象思维

小学中高年龄段的孩子,处于抽象思维培养的重要启发与蓄势阶段,初中阶段是抽象思维质变期,而高中则是思维成熟期。对于学龄段的学生来说,成熟前的思维可塑性大,而在初中思维质变期前,做好抽象思维的蓄势与启发准备至关重要,而编程设计,无疑是非常合适的一门课程。

学生在编程过程中,从具体问题出发,聚焦重点,忽略无用的信息,并抽取关键信息。在编程中,包含“语句、方法、类、包、模块、子系统”等不同层级的抽象,孩子们在编程过程中能锻炼聚焦关键信息的能力。

3.编程设计培养学生缜密的逻辑思维

程序设计可分为四个步骤:

(1)将复杂、庞大的问题分解成几个小问题分别解决(分解);

(2)分解完问题之后,单独检视、思考每一个小问题,搜索解决方案(模式识别);

(3)剖析问题核心,细节模糊化(抽象);

(4)确定解决路径(算法)。

学生在编程设计中经常以这样的模式进行思考,有利于潜移默化地培养他们自身的思维习惯,在算法过程中,尤其能锻炼学生的抽象思维。编程中只有“0”与“1”——“对”与“错”,没有模糊值的存在。在调试程序的过程中,须不断对程序合理性、是否符合逻辑进行判断与分析,如果程序无法正常运行或运行结果与期望值不符合,就证明算法中出现了错误,一旦程序中出现bug,我们就要重新把整个任务的顺序走一遍并关注每一步的结果,通过不断的回溯、调试和纠错,直到程序成功运行为止。

曾经有人举过一个例子:以“买苹果”这个日常生活问题为例,普通人的想法是:我要买1斤苹果,其它的再说。

而编程者的想法是:

(1)我要买1斤红富士苹果,我接受的价格是10元/斤;

(2)正常情况下1斤苹果需要1个袋子放下,以防万一我会带2个袋子;

(3)附近有3家水果店,我会依次访问这3家水果店。

可见,编程学习者的思维习惯,在考虑问题时更为缜密。而在日常生活、学习和工作中,运用编程的四步骤——即“编程思维”:分解→模式识别→抽象→算法,将大的问题拆分成多层,实现“自上而下,逐步分解,直至理顺”。

三、途径探析

如何在信息技术编程课程中培养学生的思维能力?笔者认为,可在教学中采取如下策略:

1.设计渐进式的课程体系

编程教育——尤其是在校本课堂上,教师有一定的自主性,可在课程内容的设计上循序渐进、有机衔接,每个阶段的学习更有侧重点而避免相关的重复。

可参考美国CSTA稍作优化后形成的改进版本课程体系:根据该课程体系,对三年级以上的孩子进行渐进式的编程课程设计,刚接触编程的低年段学生,以图形化、游戏化的编程为主,重在体验与乐趣,比如可采用Scratch,借助积木式的编程工具创建动画和游戏,在过程中逐步掌握控制、模块、执行、变量等编程概念,在后期学习中,可与智能硬件相结合设计难度更高的项目。

而对于有程序学习基础的四年级以上学生,经过前边的学习能初步具备逻辑能力,可在此时结合学生的兴趣设置Arduino或乐高课程,这两种编程方式可灵活结合各种硬件、传感器等设计好玩实用的作品。但在这个阶段教师须注意对学生的引导与鼓励,此时不仅要求学生要有一定的毅力,具有编写程序的思维能力,还应有一定的动手搭建能力。

Scratch、Arduino或乐高课程都属于图形化编程的范围,但后期Arduino或乐高会对学生的动手搭建能力有更高的要求,如果只实现程序但没用相应的实体作品做为载体,同样不能视为一个合格成功的作品。

Python代码编程适合五年级以上的学生,是一种面向对象的动态类型语言。面向对象的程序思想可以很好地锻炼学生的抽象、逻辑思维,代码可实现复用与封装,学生可用Python制作小游戏或开发网站等。

2.边玩边学

把Scratch做为少儿编程的起步,图形化的语言易于孩子接受和使用,且能寓教于乐,让孩子们获得创作中的乐趣。现阶段Scratch软件已开发Windows系统、苹果系统、Linux系统下运行的版本,软件中各种造型能迎合该年龄段孩子的兴趣,用积木式的图形拖拽实现程序可操作性强,而且Scratch虽然界面非常儿童化但功能却非常全面,基本的要求都可以满足,不仅可以应用在其它课程中,如在数学、物理学、或者美术课可以通过Scratch完成某些学习目标,甚至可以使用Scratch编写各式各样的小游戏,非常有趣。

笔者在教学中经常以做小游戏为任务,比如大鱼吃小鱼、接苹果、打地鼠等,将教学目标与一节课的重难点有效内化在游戏制作的过程中,学生既学到了知识,又自己制作出了游戏作品,达到了边玩边学的目的。

3.创设自主探索空间

学生在编程学习的起步阶段依赖教师是很自然的事情,但如果想要学生成为学习过程的主体, 成为课堂的主体,教学过程的设计就必须以学生为中心为起步点,立足于学生独立性的发展与自主探究,实现教与学的真正互动。

在编程教学中,教师在起步阶段可手把手带学生,一步一个脚印走得比较细致,但在帮助学生建立起初步的编程思维,以及掌握软件的基本指令之后,就应放手让学生自己进行程序的设计与编写。

例如在Scratch教学中,制作打地鼠的小游戏:

(1)教师与学生共同对“打地鼠”程序进行总体的设计分析,确定程序的流程图。

(2)教师对学生进行程序的角色分析与动作分析。

出于Scratch的游戏基于角色而设计的这一点而考虑,角色是游戏的基础,所有动作指令都添加在角色上,每个角色有不同的指令动作,通过各个角色的相互协调,最终实现预设的效果。因此笔者在Scratch教学中非常重视对程序角色和动作的分析,而学生在理清这两个要素后,基本就能把控整个程序的设计。而完成程序分析之后,筆者就将课堂时间交由学生自主把握,随堂进行观察与个别指导。

(3)学生自主完成编程,教师在学生完成程序后,回顾讲解与分析具体的脚本。

教师在整节课的过程中,最重要的步骤是与学生共同完成对程序的总体设计分析,以及完成角色和动作的分析。但在课堂结束收取学生作品的过程中,笔者常常会发现“与众不同”的作品——学生会用几种不一样的实现方式来完成程序而不拘泥于一种分析模式,在展示和解析学生作品的过程中,其实整节课也完成了让学生自主探索的目标。

总体说来,教师在编程课堂中,并不是单一的讲授与教授者,而是做为引导者与观察者的角色,程序的设计、分析及最后的脚本编程及调试,教师无法替代学生完成,只能一步一步地引导学生建构思路,最后形成自己的作品。

责任编辑 邱 丽

猜你喜欢
编程程序思维
思维跳跳糖
思维跳跳糖
思维跳跳糖
思维跳跳糖
编程,是一种态度
编程小能手
纺织机上诞生的编程
试论我国未决羁押程序的立法完善
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序