广东省云浮市邓发纪念中学 广东 云浮 527300
摘要:高中阶段是学生形成计算思维能力的关键时期,Python编程教学是培养学生计算思维的有效方式,目前Python编程教学中学生计算思维培养的瓶颈有三方面:学生的计算机基础能力参差不齐、学生学习编程的信心不足、教师的编程教学方法较为单一。笔者以游戏教学的方式融入Python编程教学,针对不同的重难点知识设计了不同的游戏项目,寓教于乐,让兴趣成为学生自主学习的动力,培养学生的计算思维,使学生实现对知识的内化。
关键词:高中信息技术 计算思维 Python 游戏教学
《普通高中信息技术课程标准(2017年版2020年修订)》强调要重点把握信息技术学科体系结构和内容,信息技术首先是一门科学,然后又是一门技术,从IT(信息技术)时代到DT(数据科学)时代的转变,努力实现普通高中教育与义务教育、高等教育、职业教育的衔接、融合和协调发展,努力使信息意识、计算思维、数字化学习与创新、信息社会责任四大信息技术学科核心素养落到实处。
在实施教学的过程中,高中信息技术教师要充分领会学科核心素养的内涵,强化信息意识、启迪计算思维、培养数字化学习与创新能力、赋予信息社会责任。
一、计算思维的内涵
计算思维自古已有,它伴随计算工具的发展而发展。以中国古代的算盘为例,算盘其实是一种不具备储备功能的计算机,主要是为人们提供一种用计算方式来解决问题的思维方式。
计算思维(Computational Thinking)作为高中信息技术学科核心素养的四个核心要素之一,它的提出可以追溯到20世纪50年代[1],2006年美国卡内基·梅隆大学的周以真教授给出了较为公认的界定,她认为计算思维需要通过借鉴计算机科学的基本概念来解决问题、设计系统和理解人类行为[2]。
计算思维与阅读、写作及算术一样,应当是信息时代的人们具备的一种思维方式,而不再是计算机科学家的特有思维方式。计算思维是指个体运用计算科学领域的思想方法,在形成问题解决方案的过程中产生的一系列思维活动。计算思维作为一种思维方式,需要在解决问题的过程中不断经历分析思考、实践求证、反馈调适而逐步形成。高中阶段是学生形成计算思维能力的关键时期,在新课标中也针对这方面提出了明确要求,期望学生能自觉将掌握的信息技术知识应用于实际问题中,促进现实问题的解决。
Python是一种解释型的脚本语言,在目前的人工智能领域、数字挖掘领域都有着不俗的表现。Python语法规则简单,能吸引学生的学习兴趣,使学生可以轻松学会,从而可以进一步提高学生对程序设计语言的理解和应用,为其他程序语言的学习打下基础。因此,信息技术教师应当抓住 Python编程教学的有利机会,对学生进行计算思维的训练。在科技快速发展的背景下,高中信息技术教师的首要工作是转变传统教学思维,创新教学方式,突破对狭义工具论的认识,才能有效培养高中生的计算思维,帮助他们合理选择工具,来分析和解决实际生活中的复杂问题。此外,高中信息技术教师在编程的教学设计中应根据教学内容提炼计算思维的具体过程与表现,将其作为学生项目学习的内在线索,引导学生在完成不同项目的情境中,反复亲历计算思维的全过程。
二、Python教学中学生计算思维培养的存在问题
(一)学生的计算机基础能力参差不齐
我校地处粤西山区,属经济欠发达地区,教育条件与珠三角发达地区相比略显落后,受初中毕业学校教学设备、机房性能等硬件条件差异性的影响,有些学生在小学初中时期很少接触计算机,在信息技术课堂上接触编程的学生更是少之又少。而且随着智能手机的不断进步与升级,一部智能手机就能替代计算机的大部分基础功能,因此很多家庭也不再配置计算机,学生接触计算机的时间就更少了,一些学生连最基础的打字指法都没有正确掌握,这直接导致了高一新生的计算机基础能力存在明显的差异。
(二)学生学习编程的信心不足
提到编程,很多学生会觉得程序员很酷,影视剧中能“偷天换日”的黑客更酷,但他们普遍认为编程很难,有的学生甚至认为只有优秀的理科生才能学好编程,出现了“未入编程门,已打退堂鼓”的现象。由于学习编程的信心不足,部分学生在开始学习的时候不知从何下手、茫然失措,同时由于缺乏基础的编程知识,当学习到Python的语法规则和算法时,学生会觉得枯燥无味,久而久之就会产生厌学的情绪。
(三)教师的编程教学方法较为单一
在进行编程教学时,信息技术教师在多采用讲授演练法来授课,通常先讲解基本知识点,在编程环境中操作演示,然后让学生按照教师的步骤机械地敲代码,最后运行并输出结果,提交作业。编程教学变成了学生模仿教师的过程,学生对于程序代码的细节及核心思想不够了解,无法形成有效的思维方式,因此就无法形成较强的编程能力,进而难以达到培养计算思维的目标。编程教学过程的形式与方法都较为机械和单一。教师不注重改进教学方法,对于如何培养计算思维还缺乏认知,也忽视了计算思维培养的长期性和重要性。
此外,有些教师过于强调编程语言的语法规则,未能有效地组织和引导学生进行创作实践与梳理知识体系,导致学生所学到的编程知识、掌握的编程技能都是碎片化的,学生无法将零散的知识有效地整合应用到自己的编程创作中,无法将个人创意转化为创新性作品,因此计算思维也无法得到有效培养。
三、以游戏融入Python教学,培养计算思维
广东省的普通高中从2020年9月开始启用新教材,高一学生的信息技术课程使用的教材是由广东教育出版社出版的《数据与计算》(必修1),处于青春期的高一学生对于“玩游戏”充满了热情,因此笔者尝试在Python编程教学中以游戏的方式解决一些重难点问题,这样可以有效提高学生学习的积极性和学习效率,激发学生的创造力和想象力。
笔者根据学生的学习能力和课堂有效性,针对不同的重难点知识设计了不同的游戏项目,经过几年的 Python编程课堂教学经验,总结了一些行之有效的编程学习的游戏开展策略,如图 1 所示。
图1 游戏融入Python教学培养计算思维的过程
(一)输入与输出:我是小编剧
在Python程序设计学习的入门阶段,学生首先要学习两个函数的使用:input()、print(),这两个函数的作用分别是输入字符串、输出结果。但是学生经常会对 input ()函数中的提示参数和要求用户输入的内容产生混淆,同时其对于 print()函数中直接打印和打印变量值的连接方法也较难掌握。
为了解决这个难点,笔者从高一女生喜欢看小说、写小说中受到启发,想到了将程序的执行过程以“剧本”的形式呈现。在“我是小编剧”的游戏中,教师把学生分为2人一组,每组由一位学生扮演用户、另一位学生扮演计算机,他们分别设计角色对话,编写好“剧本”,并完成程序设计,各组向全班同学展示自己“剧本”的运行过程,把“剧本”演绎出来,并选出最佳“编剧”,获得最佳“编剧”的小组将会获得课堂积分。这样学生就有了很大的积极性,他们可以通过计算机编程实现他们的“编剧梦”,主观能动性和自主创造性得到了有效发挥。有些剧本的台词诙谐搞笑,引得全班同学哈哈大笑,最后全班同学在欢乐的笑声中投票选出最佳“编剧”。
具体实施过程如图2所示。
“我是小编剧”游戏把枯燥的编程课变得生动活泼、形象有趣,成功地把学生引进了编程这扇“门”,消除了一些学生对编程学习的畏惧心理,也在潜移默化中培养了学生的计算思维。
学生编写的剧本 | 《王后与魔镜》 王后(计算机):魔镜,谁是这个世界上最美的女人? 魔镜(用户):白雪公主 王后(计算机):猎人,去把白雪公主杀掉! | 《学生与老师》 老师(计算机):今天为什么迟到? 学生(用户):睡过头了 老师(计算机):什么?睡过头了? 老师(计算机):那你为什么不交数学作业? 学生(用户):忘了做 老师(计算机):你竟然说忘了做,那就罚抄100遍吧! |
程序代码 | ||
运行结果 |
图2 “我是小编剧”游戏项目
(二)常量与变量:玩转数学公式
经过上节课的编剧游戏,课堂上不再有学生开小差,学生的课堂参与度显著提高,他们固有印象里的“无聊编程课”变成了“快乐游戏课”。
变量的使用在程序设计中占据着十分重要的地位,看似简单的一个知识点,但要使学生真正理解变量的意义和用法却需要教师用心进行教学设计。在上完新授课后,有些学生依然不知道何为变量,对变量的命名与赋值就更无从下手。“玩转数学公式”这个游戏就是专门针对变量这个知识点而设计的。
笔者把学生在小学阶段学过的耳熟能详的数学公式都列出来,学生依然是每2人为一组,每组任选一个数学公式进行编写程序,假如学生选择的是“长方形面积=长*宽”这个题目,那么他们编写的程序要实现的功能是:由用户输入长方形的长和宽,再由计算机计算长方形的面积,并输出计算结果。具体实施过程如图3所示。
学生们选定题目后,小组内的两个人积极热烈地讨论研究,因为他们都想得到本节课的课堂积分:按照提交作业的先后顺序,每个数学公式都会选出前10个用时最短且运行正确的程序,并为对应的小组加分。合作小组的创建,让学生拥有了互动交流的机会,学生在组内尽情地表达自己的想法和意见,促使学生进一步发散自身的思维,持续发展计算思维。
数学公式 | 程序代码 | 运行结果 |
圆的周长=2*π*半径 | ||
长方形面积=长*宽 | ||
三角形的面积= 底*高/2 |
图3 “玩转数学公式”游戏项目
(三)选择结构:生活小管家
新课程标准鼓励学生在不同的问题情境中,运用计算思维来形成问题解决的方案,体验信息技术行业实践者真实的工作模式和思考方式。因此在讲授选择结构的时候,笔者以学生在生活中遇到的真实事件出发,把学科知识与现实生活紧密联系,设计了“生活小管家”这个游戏项目。
“生活小管家”不仅让学生真切地感受了编程在实际生活中的应用,也更深刻地理解了选择结构的重难点——条件表达式的设置,能更准确地用程序代码写出条件表达式。
编程要求 | 程序代码 | 运行结果 |
商场的水果打折销售,苹果8元/斤,购买10斤以上7元/斤,请编写计费程序。 | ||
某市实行阶梯电价:每月使用200度以内(含200度),每度电0.6元;超过200度但不超过500度(含500度)之间的部分,每度电0.7元; 超过500度的部分,每度电0.9元。 请编写计费程序。 | ||
输入一个年份,判断这一年是否为闰年。 (提示:四年一闰,百年不闰,四百年再闰。 ) |
图4 “生活小管家”游戏项目
(四)循环结构:花样年华
循环结构是编程的一个重点知识,也是难点,有些学生难以弄清循环语句的原理与功能,针对这一问题,笔者使用Python中的海龟画图来向学生直观地展现循环语句的执行过程。
在讲解循环结构的语法规则和语句结构前,笔者会让学生玩一个“花样年华”的游戏:教师给出一段基础代码,让学生运行代码,并根据运行结果的图形读懂代码,然后自己修改、增加或删除基础代码的参数值和语句,再观察运行结果。每一次修改参数,学生都能看到不同的运行结果,也创造出多种不同的“花样”图形,感受到了几何图形美。如图 5 所示。
通过不断地分析比较,学生逐渐了解循环语句的执行过程,以及循环语句中的参数的作用,这锻炼了学生的观察能力、分析比较能力和计算思维,也为下一步学生自己编写循环结构的代码奠定了坚实的基础。
程序类型 | 程序代码 | 运行结果 |
教师给的基础程序代码 | ||
学生上交的程序1 | ||
学生上交的程序2 | ||
学生上交的程序3 | ||
学生上交的程序4 |
图5 “花样年华”游戏项目
(五)综合应用:随机答题器
经过前面几节课的学习,学生已经掌握了Python编程的一些基础知识,也能够编写一些简单程序,笔者设计了一节综合应用课——编写“随机答题器”程序,该程序包含了随机函数、选择结构、循环结构等知识点,以检验并进一步提高学生的编程能力。具体实施过程如图6所示。
前几节课学生在课堂上积极做作业也许是为了获得更高的课堂积分,但后来一些同学真的爱上了编程,因为他们体验到了成功的喜悦,学生在上课前见到笔者的第一句话从“老师,这节课的作业是不是很难?”变成了“老师,这节课的作业是什么呀?我可能又很快就做出来哦。”
编程要求 | 程序代码 | 运行结果 |
【随机答题器(基础版)】 从100以内随机取两个整数作加法,若用户答对了显示“正确”,答错了显示“错误”。 | ||
【随机答题器(进阶版)】 在基础版上增加四个功能: 1.如果用户输入的答案错误,显示正确答案; 2.显示用户的答题数(即目前一共答了多少道题); 3.显示正确题目的数量; 4.显示正确率。 |
图6 “随机答题器”游戏项目
高二课程结束时,多位学生填写的结课感言中都表达了对信息技术课的喜爱:每节课都有完成作业的成就感,不是不会做作业的焦躁感;老师把比较抽象的知识讲得通俗易懂,为课堂增添了很多乐趣;信息技术课虽然算是副科,但老师还是很用心备课,把每一节课都上得有质有量,可能有些副科老师自身就会有些妄自菲薄,觉得对高考成绩没啥大影响就无需多言,所以对待学生可能没有一个负责的态度,而黎影老师恰恰相反,反而更希望通过信息技术这门课程来增长我们的知识,拓阔眼界,甚至我们有些同学会因为黎老师的教学方式而爱上信息技术。
四、结语
以游戏融入Python编程教学,能让兴趣成为学生自主学习的动力,同时也启发了学生的自主思考能力,提升了学生的思维能力,培养了学生的计算思维,使学生实现对知识的内化。但目前的教学方式仍旧有许多不足,在接下来的信息技术课程教学中时,教师应当继续根据Python编程课程的特点,做好教学方法的优化设计,从而在创新的教法中,寓教于乐,让学生“快乐学习”,循序渐进地发展学生的计算思维,让学生更自觉地利用计算思维解决现实问题。
参考文献:
[1]Matti Tedre,Peter J.Denning. The long quest for computational thinking [A ].Proceedings of the 16th Koli Calling International Conference on Computing Education Research[C].Koli:ACM Press,2016:120-129.
[2]Jeannette M.Wing.Computational thinking[J].Communications of the ACM,2006,49(3):33-35.