仲璐珊
目前,编程教育在中小学教学中普遍开展,对于小学阶段的学生来说,学习编程最主要的是提升思维方式和学会如何解决问题。编程教育在实施过程中的定位虽然是辅助性的,但是其独特之处在于计算思维,可以帮助学生解决语文、数学等课堂上解决不了的问题,而学生学编程最主要的也是学习解决问题的思维方式,学会让计算机帮助我们解决一些重复烦琐的问题,并引申应用于一类问题。
之前笔者对于编程教育的初步理解就是拼积木,教师带领学生完成一项程序,教师演示讲解,学生跟着做出来,课程结束,这也是日常教学中最常见的教学方式。但是,学生在这个过程中只会关注到这个程序怎么做和做出来了没有,至于为什么这么做和这个程序的应用往往会被忽视。那么在教学实施过程中往往会出现以下问题:
1.部分学生程序正确完成,无事可做,开始玩耍。
2.部分学生程序出现错误,无法排错,焦虑地呼唤老师,当这样的学生超过五个以上时,教师顾不过来,课堂秩序混乱,学生成就感不高,失去兴趣。
3.少数学生基础较好,尝试自行添加新内容,偏离教学内容。
4.少数学生基础较弱,跟不上课堂节奏,放弃学习开始玩耍。
经过一年的教学实践,笔者在课堂实施方面有了一些收获,在此与大家分享。
学会分析问题
在现实生活中我们会遇到各种各样的问题,应用到课堂中就是一个一个的案例,那么在教师讲授之前,首先要带领学生们进行问题分析:以项目式学习为例,遇到一个案例,首先明确这个案例要解决什么问题,我们要达到什么样的效果,明确起点和终点,引导学生去思考,从毫无头绪到学会梳理思路,这个思考的过程是非常重要的,即如何解决问题。在思路明确之后,引导学生进行程序编写就非常顺畅了,这个过程主要就是考察思路是否清晰,在学习的开始首先要沉淀下来,需要教师引导学生进行冷静思考和有序讨论,而不是用过于频繁的趣味环节来打断学生的思考。学生每节课的收获应该是本节课学会了解决什么问题并能迁移应用,而不仅仅是本节课完成了一个程序。
小学阶段的编程教学一般是以编写游戏为主题,小学生对游戏有天然的兴趣,但他们更喜欢玩由他们支配的游戏。假如教师对课堂节奏控制不到位,其效果就会大大降低。那么,这时教师就可以和学生一起来设计游戏的内容和规则,教师课前展示设置好的素材,比如小兔子和小乌龟,让学生思考:小兔子和小乌龟这两个角色之间可以发生什么故事呢?怎么利用程序来编写我们的故事?将学生的兴趣和思考结合起来。当然,这需要教师提前预设一些场景,如龟兔赛跑等程序。其次,设计时要注意循序渐进,一开始不能设计得太难,不然学生很难上手,容易失去兴趣甚至感到厌烦。
善用思维导图
在课程分析阶段使用思维导图帮助学生理清思路是非常有效的一种方法。但是在实施过程中经常会遇到的问题就是,导入时的思维导图非常漂亮,但是整节课接下来的内容完全没有用到,只在结尾匆匆展示收场,只理清了教师的思路,学生的思路是跟着教师走的,是不独立的。所以思维导图最好由学生和教师共同参与完成,一起制订课堂目标,这会让学生更有参与感,出现问题后学生可以定位自己在哪一步出现了问题,便于排查错误,部分进度快的学生也可以有目标地进行下一步操作。那么,有了课堂目标,教师授课的每一个环节就变得更加清晰,每完成一个阶段目标,一定要再次回顾思维导图——我们解决了什么问题,接下来要解决什么,增强学生的成就感,让学生成为课堂的主人,让学生知道自己学习的方向。
此外,每一节课的知识体系都以思维导图的形式体现,可以整合归纳本章节甚至是本学期的内容,知识以网络图的形式呈现,在进行连续性项目实践时,可以方便學生自主、系统、连贯地梳理和归纳总结学过的知识点。此外,知识导图的绘制完全可以在一个单元或某一项目结束时让学生自主完成,三、四年级的学生可以借助Word工具实现,五、六年级的学生则可以利用PPT演示文稿展示交流,这样不仅可以将知识点转变为图文并茂的知识导图,还有利于培养学生的总结概括能力。学生通过浏览自己亲手梳理的思维导图,进行系统化学习,以灵活的方式拓展视野。
敢于“尝试错误”
编程的目标是解决一类问题,而在解决问题的过程中达到目标的方法并不是唯一的,根据学生自身情况,可以使用学生了解的各种方法,在运用不同的方法解决问题的过程中,难免会遇到各种各样的错误,程序员每天都需要处理很多BUG,所以要让学生知道程序出现问题也是课堂的一部分,而如何解决问题才是最重要的。
在学生实践环节会出现这样一种情况:讲的东西都懂,做起来不会,10分钟练习,8分钟在喊老师。当提问题的人数过多时,教师分身乏术,学生都在等待老师,课堂秩序混乱。出现这种情况的原因归根结底在于,学生不查找错误原因,遇到错误无从下手,只想等待一个标准答案。这样看来,教给学生如何试错就非常必要了,其中最关键的是一定要让学生知道试什么,评价标准是什么,怎么进行修改调整再次尝试,形成一个良性循环的过程。编程在小学阶段以图形化编程为主,图形化的好处是可以直接看到结果,当程序与预期结果不符合时,首先要让学生自己来定位错误,可以跟着思维导图一步步排查,断开程序模块查看效果,在哪一步出错,这个过程相对简单,学生可以做到,不需要教师全盘接手,代为操作。
学会分类思维
在项目式学习中,当遇到复杂的案例时很多学生都会有畏难心理。这一方面是由程序涉及的元素过多导致无从下手造成的。这就需要有条理地对角色进行分类以帮助学生理清思路,逐个击破,迅速找到入手点。例如红绿灯,“红灯停,绿灯行”是它的规则,涉及到的角色有红灯、绿灯、黄灯,还有行人等。那么在实现过程中,首先要对角色进行分类(分为灯和行人);接下来再对两个角色进一步分类:灯有三种颜色——红、黄、绿,行人有两种状态——行走或者等待;然后梳理这些变换之间的关系:灯的颜色根据什么进行改变,行人的状态和灯的颜色之间的联系……在刚开始一定要让学生养成分析程序的良好习惯,让学生拿到一个程序之后先进行拆解分类,再一步步联系整合。
另一方面是由复杂的逻辑造成的。例如加法运算的程序,我们通过计算可以直接得到答案,但是计算机如何实现呢?这就需要我们将眼睛看到的效果和程序实现的方式分开,将模糊的语言转化为精确的计算机能识别的语言。我们在数学课上学到的技巧需要教给计算机吗?其实是不需要的。我们通过技巧可以避免大量烦琐重复的计算行为,但是计算机恰好适合解决这种大量的重复运算,我们只需要告诉计算机加法运算的基本规则,然后让计算机帮我们执行即可。
编程教育正在逐步普及,作为信息技术教师必须积极接受新思想,将编程教育与多学科融合,打破抽象思维和具象思维的边界,将现实中的真实项目转化为信息科技的课程资源,让学生在信息化环境中能够从容面对挑战,真正成为未来世界的主人公。