LOFTER for ipad —— 让兴趣,更有趣

点击下载 关闭
我在小学教Python
无我 2022-09-20

从2018年9月至今,我已经在小学一线进行了长达四年的代码编程教育探索。从学习Python到一次次教育实践,默默一路走来,有学生学不会时的沮丧,也有看到学生成长时的喜悦,有枯燥教学环节无法吸引孩子时的自责,也有带孩子比赛获奖后的自满。

学习编程的本质是教孩子一种用计算机科学解决问题的思维方式,这种思维被称为计算思维。2022年,义务教育课程方案和课程标准中对计算思维的解读为:计算思维是指个体运用计算机科学领域的思想方法,在问题解决过程中涉及的抽象、分解、建模、算法设计等思维活动。

毋庸置疑,计算思维是目前非常热门的词汇,也是未来时代学生必备的核心素养之一。但是如何培养计算思维?涉及智能硬件的人工智能课程、scratch等图形化编程、python等代码编程,不同学校都在进行积极的教育探索。虽然载体各不相同,但殊途同归,都是以信息学科育人的四大核心素养为目标。这四大素养分别为:信息意识、计算思维、数字化学习与创新、信息社会责任。我之所以选择Python作为教育载体主要处于以下几点考虑:

1、数学思维+算法思维+工程思维+编程思维的综合运用才能高质量培养计算思维。

从计算思维的概念可以看出,计算思维指的是用计算机科学领域的思想和方法去思考解决问题的方案。什么是计算机科学领域的思想方法?这就包括编码、数据结构,顺序、分支和循环等控制程序的基本结构,还包括枚举、二分、回溯、递归、模拟、分治等算法。计算思维是一种思维活动,而这一思维活动是建立在这些知识架构之上的,人很难超越自己的认知局限去思考问题,这也是为什么不懂编程的人很难提出用计算机解决问题的方案,因为他们不知道计算机能做什么。

计算思维的核心是算法而不是编程,这一点毋庸置疑。但是我想说的是,如果在设计算法的过程中只是使用了抽象、归纳、类比、推理、演绎等数学思维,却没有考虑数据结构、程序运行流程等计算机概念,那其实只是培养的仅仅是数学建模和逻辑思维,如此一来信息课就上成了数学课或是奥数课。数学思维和计算思维是有本质区别的,这一区别主要体现在是否在思维过程运用了计算机科学领域的思想。

不懂编程的人认为编程是一门技术,懂编程的人认为编程是一种思维方式。早在1995年,在访谈乔布斯的时候,乔布斯就曾经说过:“学习编程会教你一种新的思考方式。”编程既是技术也是工具,更是一种思维方式。计算思维的培养可能不等于编程教育,但是编程教育绝对可以培养计算思维。当你不断学习数学,随着一次次思考和解决问题,你必然提升了数学思维。当你学习了各种建筑学知识,当你完成一个个项目,你必然提升了工程思维。同样,在你用程序解决一个个问题的过程中,必然会提升计算思维。而反过来要想绕过数学计算和建筑学知识去提升数学思维和工程思维,这显然不切实际。绕开编程去想办法提升计算思维也是同样的道理。现在有一种只教算法也能培养计算思维观点,这个观点我觉得其核心问题在于“能”字。能只是最低标准,而教育应该追求更好的效果。从网上看到一幅图觉得很贴切,在计算思维的培养过程中,需要用到数学思维、工程思维、算法思维以及编程思维。这四者之间相互交融,最终形成学生的计算思维。做为计算思维的子集,单独拿出任何一项都不会有很好的效果,正如生活中没有学科界限,综合运用多种知识和思维才能解决问题。 


2、设计算法和实现算法带给学生的是完全不同的学习体验。

培养计算思维是否一定要学习编程?学习算法是否一定要通过编程实现算法?这些一直未有定论,特别是对于没有编程经验的人来说容易对编程产生抵触。在我看来,编程既是实现算法的工具,也是检验计算思维的手段。数学建模——设计算法——用程序实现算法——调试和改进算法——解决问题,这是用信息科技解决问题的完整路径,我认为这也是计算思维培养的最佳路径,设计算法是这一路径中的重要环节,但是只谈算法却不能实现和验证算法,这有点像纸上谈兵。学习的意义在于将理论与实践相结合,编写程序、调试代码的过程能够帮助学生更好的理解和掌握算法,学生亲历从数据建模到算法设计,再到代码录入、调试与改进算法,学生经历这一完整的解决问题的过程是非常有必要的,当学生通过计算机实现了自己的想法,体验了机器相对于人类高效、自动化的特点,才能真正的对信息科技有所感悟。当学生在使用程序实现了人力所不能为的时候,他们的信息意识才能真正得以形成。


3、代码编程与图形化编程的比较。

我既体验过ActionScript3.0和Python等代码编程、也体验过scratch和makecode等图形化编程。图形化编程可以说是专为小学教育而生,如今已经成为儿童编程教育的主流。作为编程教育普及,图形化有其绝对的优势,毕竟学生和教师的门槛都不高,简单的图形拖拽操作就能体验到编程的乐趣。但任何事物都有相对性,有利的一面也凸显出其劣势。为了降低学习门槛,程序指令被封装为积木,我能够明显感受到积木拼搭的繁琐界面操作对思维专注力的影响,就像是写作文的时候需要频繁从字典里选词而不能随心所欲的由心1创作。而与积木拼搭式编程相比,代码编程更像是对思维的直译,代码编程可以在大脑和代码之间以最直接、最灵活、最开放的方式互相转化。在学习了基本的指令和语法后,代码编程在操作上几乎是所想即所得。模块拼搭往往会分散很大一部分精力在界面操作上,每条指令都需要从各种菜单中找寻模块进行拖拽、组合和各种设置,随着程序算法的复杂度提高,处理拼搭操作费时费力的缺点越发明显。此外,代码编程要求学生用键盘一行行录入指令,还要随时关注指令的语法规则,这看似苛刻,但录入代码的学习体验非常锻炼孩子做事的专注力。


4、学习Python可以在培养计算思维和技能学习上一举两得。

近些年,图形化编程有效降低了学习年龄和学习门槛,很多孩子选择了以图形化编程作为学习代码编程的过渡。然而在我看来,以今天小学高年级孩子的数学知识、计算机应用水平、逻辑思维水平足以支撑他们直接走进代码的自由世界。Python简洁的指令和贴近自然语言的语法使得图形化编程的过渡显得没有必要。做为一门世界通用语言,全世界有数以千万计的人正在学习Python,国外有很多学习Python的书籍都是针对小学生的。我在参考了这些书籍后初步得出结论:小学高年级学生学习Python不存在思维障碍,学生完全有能力在教师指导下设计程序、实现算法。如果能在培养计算思维的同时让学生学习和体验一门有用的技能,何乐而不为呢。

很多人觉得小学生没有能力学习代码编程,这也是我最初的想法。但是在不断的实践和迭代之后,我发现这其实是一种想当然的假设。著名的物理学家费曼曾经说过,即便是大学的知识,他也能通过恰当的类比举例,用通俗易懂的方式让小学生理解。换句话说,学习内容的难易程度是相对的,学生能否学会的另一个关键因素在于教师怎么去教。我想作为一个教师一定都体会过,对于同样一节课,最初的教学方法和经过多次试讲调整后的教学方法所产生的教学效果可能大相径庭。从选择Python到教育实践探索,从课程到兴趣班,从书上和网络上筛选教学内容到贴近学生生活的原创设计,从教知识技能到培养计算思维,在这一过程中我越来越沉浸其中,因为每一次迭代都会看到教学效果的改变,每一次改变都意味着我在与孩子一起成长。

不得不说,天赋异禀确实存在。每个孩子都是与众不同的,有的擅长音乐、有的擅长美术、有的擅长演讲、有的擅长研究。我相信随着编程课程的不断完善,每个孩子的思维都能得到发展。如果能够发现并发扬一些孩子的兴趣特长,让他们成为对国家有用的人才或者成就他们的幸福人生,我想这就是教育的意义。


推荐文章
评论(0)
分享到
转载我的主页