刘海平
徐州市第三中学 江苏徐州 221000
任何学科的教学开展都要注重对学生核心素养的提升。对于信息学科,核心素养的培养一定要强调学生的计算思维能力方面的培养。它是学生发展核心素养的重要组成部分,对计算思维能力培养的重视程度也关乎我国未来的创新竞争力。而创新竞争力恰恰是世界各国在新一轮竞争中要角逐的重点。国际社会的人才流动其实也是创新人才的流动。鉴于此,在新一轮普通高中信息技术课程标准中,计算思维能力被列入信息技术课程的核心素养。
下面,将结合自身的教学实践,对如何在高中信息技术课堂中有效培养学生的计算思维进行探讨。
卡内基-梅隆大学的周以真教授于2006年提出了计算思维(Computational Thinking)的概念。其实计算思维概念并非专指计算机学科,而是一种通用的思维方式。但相对于计算机学科,计算思维的概念特别定义为运用计算机科学的基础概念进行问题求解、系统设计、人类行为理解等涵盖计算机科学之广度的一系列思维活动。其本质是对问题模型的抽象和自动化。它类似于数学解题的“已知→求解”的过程,也就是通过将一个个具体问题及其解决方案表达成计算机可以处理的形式,并通过设计计算的方式,将我们感知的客观世界解释为一个复杂的信息处理过程。用更容易理解的方式,计算思维其实就是:把一个大问题分解为一个个子问题,再将子问题进一步分解成子子问题……直至无须分解为止。而问题解决方式是从底层开始,首先,分别执行一个个最小规模的子问题;按照问题划分的结构将各个小问题的结果组合成整个问题的结果。也就是自上向下进行结构化设计,然后将其“分而治之,各个击破”。
当今社会已经进入大数据时代,而这背后无不是信息技术在提供强力支撑,可以说信息技术工具的使用已经渗透到人类生活的诸多方面,比如,人脸识别技术的使用,比如数据可视化的应用等。从小的方面讲,每个个体都在感受着信息技术带来的生活上的转变,信息技术让人们的生活更加方便、快捷且高效。从大的方面讲,信息技术对国家的政策制定、经济走势的判断、就业形势的分析等也起到了至关重要的作用,所以培养学生信息技术的技术思维能力变得比以往任何时候都重要。作为信息技术的教育工作者,我们应该明确培养学生的计算思维并不是要把每个学生培养成为计算科学家,而是要培养他们的思维能力,学会使用信息技术工具解决具体的问题,从而让其更好地适应飞速发展的信息技术社会。而训练计算思维的有效工具就是程序设计,有人曾经做过调查,热爱写程序的学生,特别是掌握了方法,能够熟练写出较多程序的学生,在进入大学接受信息类专业学习,当他们接触新的概念和抽象的理论,用所学知识灵活使用时,要比没有接受编程训练的同学有着明显的优势,即使是非信息类课程的学习,他们也同样表现优秀。这充分体现出编程实践对思想方法和思维定式的培养作用。因此,编程学习,不仅仅是一种技能的掌握,更是一种可以高效训练计算思维的方式。
随着新一轮课堂改革的深入,以开放性、问题性、实践性等功能见长的项目式学习逐渐备受关注。这种学习方式以其在信息时代培养学生信息意识、计算思维和数字化学习与创新等方面的明显优势,弥补了传统讲解式教学的不足。
教师应积极转变教学理念,将课堂的工作重点聚焦到对新课标、新教材、新教法的研究上,深入了解新课程的理念,明晰新课标的要求,将先进的教学理念应用于程序设计的课堂,通过设计卓有成效的项目活动将计算思维的培养渗透到课堂活动的各个环节,使得课程项目化、课堂活动化、学习个性化。让计算思维真正得到全面发挥,从而使学生能够充分认识到计算思维形成的重要性。
例如,在讲授“周而复始的循环”这一节内容时,我将课堂设计成一个围绕游戏展开的项目活动。先通过学生熟悉的“游戏币”导入话题:“如果你是游戏的后台管理员,将如何统计游戏参与者最终的游戏币数量?”试图让学生理解循环的概念并用计算思维的理念引导学生去分析问题,设计方案,进而根据教师设定的经验值晋级规则编程计算选手经验值的问题,最终实现让学生掌握循环结构。通过该项目活动,教师明显感觉比采用传统的讲解法更能激发学生探究的乐趣,而且在项目活动推进的过程中,学生能体验到学以致用的获得感,教师也能够把计算思维中的迭代思想贯穿到课堂教学的各个环节。
许多人听到编程两字会产生畏难等抵触情绪,认为编程是和枯燥乏味、晦涩难懂的一行行数字、字母打交道,产生很大的距离感。客观地讲,编程涉及很多数理逻辑方面的知识,导致部分参与学习的人提不起兴趣,往往刚开始就败下阵来。作为教学者,必须要知道兴趣才是最好的老师,所以要仔细研读教材,钻研教法,根据不同的教学内容选择最合适的教学方法,寻找学生的兴趣点,努力让课堂的气氛变得活跃,让学生发现编程的逻辑之美,从而提高其内驱力,愿意积极、主动参与到教学的全过程,这是很有必要的。从兴趣寻找着力点,学生就能完成课堂角色的转变,从知识的被动接受者转化为主动自主探究者,从“要我学”转变为“我要学”,当学生转变学习观念时,计算思维的渗透也就是一件水到渠成的事情。
1.创设情境,激发兴趣
个人认为可以从学生实际方面出发,选择合适的、更能引起学生学习兴趣的生活案例来践行于教学中,使抽象的知识形象化。这样就可以把真实的生活情境和抽象的算法之间建立起联系,课程生活化,有助于学生计算思维能力的提升。
例如,程序设计中经常会遇到一些经典算法:二分查找、迭代、递推和递归等。这些算法理解起来相对抽象,如果单纯地给学生介绍算法思想,教学效果势必会不理想。在讲授这类问题时,教师可以尝试将问题放到生活情境中,以学生熟悉的生活事实来阐述抽象枯燥的知识,让学生学会主动分析、综合、归纳、想象情境提供的信息以便找到解决问题的规则和方法,从而达到对算法思想的理解和领悟。同时,教师还可以根据需要借助一些形象的比喻或者辅助一些益智类的游戏,让学生更好地体验生活以及游戏中所蕴含的算法思想,从而强化学生抽象思维的养成。
2.循序渐进,由浅入深
程序设计教学个人认为要从易入手,先简后难,循序渐进。在课堂教学中,教师可依据自顶向下的结构化程序设计思想将大的项目分解为小项目、大的问题分解为小问题去解决,从而避免造成学生学习的障碍而失去学习的兴趣。
例如,教材中“可以复用的代码”这节课,教材中采用摆火柴棒的教学案例,将复用代码的必要性和在生活中的应用很好地融入项目教学中,非常具有典型性。但在实际教学中,教师发现本案例涉及列表、常用算法、函数等多方面的知识,整个项目实现起来相对有难度。如果教师一开始就将复杂的问题一股脑地全部交给学生,会造成学生学习的障碍。所以,教师有必要对教材中的相关知识根据难易程度进行分类重组,在学习该项目之前,需要提前把列表和统计各数位之和的算法逐一抽取出来,事先做好知识铺垫,然后由点触面,各个击破。这样一来,教师在推进摆火柴棒项目时,就可以把着眼点聚焦在代码复用的必要性和使用方法上,这样将复杂的项目简单化,处理起来就变得容易多了。
3.体现主体,大胆质疑
新课程理念强调学生是课堂的主体,教师的责任就是帮助和引导学生在自主探究的过程中发现问题、解决问题、建构知识、学会独立思考的能力。设计算法类似于求解数学题,解决一个数学问题通常有多种途径,算法也一样,这就是算法的多样性。算法的多样性更强调和鼓励学生独立思考,自主探究,大胆质疑,尽可能让每一个学生自己找出解决问题的方法,获得成功的体验。
例如,教材第四章第一节中找出被污染的药丸案例。该案例试图培养学生能根据实际情况找到更合理的算法,更快捷地解决问题,从而达到算法的优化,让学生感受程序解决实际问题的便捷性和准确性。那么,如何突出学生主体地位,让学生获得更多的自主探究的空间和学习主动权,引导学生从多种解决方案中找到最优解,需要教师充分调动学生的主动参与意识,把课堂变成学生学习的天堂,鼓励学生独立思考,多样化、个性化地解决问题,计算思维能力的培养才能落到实处。
4.自主学习,合作探究
在高度融合的信息社会里,合作意识是现代人必须要具备的一种思维品质。合作能力更是学生未来实现自我价值的必备能力。教师要有意识地在课堂教学中贯穿合作理念,通过促进学生群体间的交流、学生个体间的交流,让每个学生都能通过合作互相学习,产生思维的碰撞,体验合作的成功,并能有机会展示自我、享受成功。学生能够在合作与交流中对问题进行多角度、多维度的思考,增进对问题的认识,从而自觉、自愿对目标问题进行整理、修正与补充,达到思维深入与发展。教师在预设分组活动时,要从任务设置、成员分工、成果汇报、小组评价等多方面落实小组探究,充分发挥每个组员在探究活动中的作用;同时加强小组间的交流与合作,分享交流成果,相互取长补短。
例如,“寻找丢失的ID”教学案例,该案例试图在学生初步了解算法优化思想的基础上,让学生明确还可以利用数值及计算的特点将复杂的查找过程换成简单的计算,体会到编程的重要性和便捷性。在该案例的处理上,教师可以尝试分组探究,引导学生分别从常规查找和数值及计算的特点两个方面设计问题解决的方案,进而在小组汇报环节通过比较两者的时间效率,加深学生对编程时间和空间复杂度的理解。
算法是程序设计的灵魂,借助流程图能加深学生对算法的理解,增强学生逻辑思维能力的锻炼,增加学生对问题解决的严谨性,更好地培养学生的计算思维。因此,信息技术教师要善于利用画程等工具软件教给学生制作流程图的方法,并在实践中借助流程图更好地指导课堂教学。一方面,借助流程图教师可实现与学生之间的良好沟通,使学生更清楚问题解决的思路,对于入手写代码的思路更加清晰;另一方面,借助流程图,可帮助学生更容易地发现程序逻辑上的漏洞,以便尽早补充完善。这样,在写代码之前,就把流程图梳理好,对于代码的设计和优化实在大有益处,特别是逻辑较为复杂的时候。
教学计划的设计合理与否,对于学生信息技术知识体系的构建和计算思维能力的培养有着举足轻重的作用。教师在研究课程体系,并据此制订教学计划的过程中,要力求科学、合理,符合学生的年龄阶段、心理特点和认知能力。根据认知规律,教师首先应该让学生对学习“数据与计算”有一个初步的了解,切入点要小。在起步阶段,教师可以安排一些寓教于乐,容易为学生接受并掌握的算法小游戏,让学生在好奇中得到愉悦的体验,从而激发其学习编程的乐趣。接着可以通过完成一个个经过科学设计的具体的项目活动,在项目式学习中逐步渗透、分析、归纳、总结编程的基础知识和基本原理,让学生在问题解决中体验到编程的神奇之处,从而产生获得感,得到成功的体验。最后通过参考、比对、分析、模仿他人的程序设计作品,从成功的范例中借鉴程序设计的思想和方法,让自己的编程水平逐步提高。这样,学生不仅能够更加系统地学习到有关编程方面的知识,他们还能够真正认识到计算思维在实践过程中的有效性,从而使其计算思维的能力和意识得到培养和提高。
在教学实践中,特别是在课程初始阶段,好多学生会遇到各种语法和语义方面的困扰,从而降低了对编程学习的热情。遇到这种情况,教师不要急于帮助学生指明错误原因,而应引导学生尝试分析程序设计思路,通过逐行阅读程序代码追踪变量的方式,自主发现错误原因。另外,在教学中教师还要有意识地培养学生为比较长的代码写注释的习惯,有效避免因时间间隔较长导致阅读代码效率的降低,从而快速地帮助学生计算思维的养成。
还要补充的是,符合计算思维的解题步骤与已经习惯的人类解题思维有着非常大的差别。在设计算法、编写程序的过程中,学生要将自己已经习惯了多年的思考、解决问题的方式抛开,学会按照描述一个具体解题步骤的方法来考虑问题。不仅如此,学生还需要思考这个问题应该怎么使用程序设计语言来实现,使用哪一个语句会更有效,采用哪一种结构更合理。综合以上两方面的原因,信息技术教师要对计算思维有一个全面透彻的了解,在教学中注意规避和弱化常规思维的干扰作用,将计算思维的培养渗透到课堂教学的活动中去,引导学生用计算思维的理念寻求问题解决的方法和途径,进而运用抽象思维将其描述成一系列可操作、可实施的方法和步骤。
总之,在编程教学中进行计算思维培养正在成为信息技术教育的关注重点。信息技术教师要将课堂的工作重点聚焦到对新课标、新教材、新教法的研究上,将程序设计知识以一种新的方式教授给学生。在教学实践中,要善于通过设置卓有成效的项目活动将计算思维的培养渗透到课堂活动的各个环节,使得计算思维真正得到全面发挥,从而使学生能够充分认识到计算思维形成的重要性。