中小学生为什么要学习编程?作为教师我们到底是要培养未来的程序员还是产品经理?昨天我全程线上听了《中小学Python教学研讨会》,其中张越老师在分享Python教学课堂的时候就提到了这个问题。
很荣幸,我既做过程序员也做过产品经理。
1 培养程序员还是产品经理?
对程序员来说,需要专业的技能,需要把握实现技术的细节,需要不断优化代码提升程序运行的效率。那中小学的编程教育能达到这个目标吗?很显然不能。
我们大部分人都已经忘记了中小学时学过的具体知识。如果让你现在重新做之前做过的中考题高考题,你还会做吗?很可能大部分人都不会了。但这并不重要,因为我们现在的目标不一样了。
不过面对历年真题,我们还是有能力分辨出这是属于哪一类型的题目,能够分析出这类题目的大体解题思路,至少知道这道题目是可以解决的、是有解的。很多时候,这种解决思路、确定问题可以解决的信心往往更重要。
在现实世界中,我们遇到的问题大都是新问题,不大可能遇到“历年真题”,这时我们需要的是从以往的经验中搜索解决问题的思路和方法,重新整合成新的解决问题路径,再一步步去执行去检验,这就是我们所说的从旧有的经验中获得解决问题的思路。我们学习编程,最重要的是学习编程思维,也就是解决问题的思路和方法。
再来说说产品经理,顾名思义,产品经理是产品的第一责任人。对软件产品来说,从前期的需求调研、产品原型设计,到后期研发过程中的项目管理、产品上线、产品迭代优化,整个过程产品经理都要负责。因此,对把握一个产品的方向来说,产品经理至关重要。这就要求产品经理必须知道用户提出的某个需求能否通过程序实现?会对现有的程序产生多大的影响?是否有必要修改现有的程序?有没有更好的解决方案?大概需要多长时间完成?这都需要产品经理对编程有一定的认识。
所以我认为我们教授编程,是为了培养未来的产品经理,培养孩子们的编程思维,培养孩子们解决问题的思路和方法,而不是解决的问题本身。要知道,从我们每个人一生的角度来看,我们一直在不断地解决问题,我们其实就是需要不断迭代优化的产品,只有这样我们才能不断地适应这个不断迭代优化的世界。
2 讲知识点还是解决问题?
回到中小学Python教学上,要想在课堂上让学生习得解决问题的能力,教师需要在一定程度上改变以往从讲授知识点出发开始的教学方式,尝试着从一个具体的问题出发,和学生们一起探讨解决这个问题的方法并让学生们自主实践。
今天张老师分享的用Python画多彩多边形的例子就对我很有启发。
最初,学生们画出来的多边形都是黑色的。
随后,引导学生们改变颜色,可能最开始只能改成一种颜色,这只需要添加一行代码。
接着,如何变成多种颜色呢?同学们想出了用调色板的方法,这是就要用到列表的知识,创建一个调色板列表。
然后,同学们又发现了新的问题,画的多边形的边数超过了调色板中颜色的数量时程序会出错,该怎么办?这时候可以引入for循环。
还有,同学们想要颜色随机怎么办?想要一次画多个多边形怎么办?这又可以引出函数等新的知识点。
在这个例子中,就讲到了列表、循环、函数等知识点。也就是说,我们教授编程的过程其实是在引导学生们解决一个个具体的问题,启发学生思考我们的代码能否解决这个问题,可以怎样解决。这样当孩子们下次再遇到类似问题的时候,就会更容易想到解决问题的方法。因为他们是在一个个具体的场景中学习编程的,他们是在用编程不断地解决越来越有挑战的问题,而不是仅仅记住了问题的答案。
3 如何教学生编程?
在真实的课堂上,我们可以尝试通过这样的步骤进行编程教学:
01 在课程一开始就提出一节课需要解决的问题。这个问题最好与学生的实际生活相联系,这个问题可以是一个大项目中的一部分。
02 让学生思考解决问题的思路。这时要引导学生联系之前所学的知识,同时联系自己在现实生活中的经验。
03 引导学生说出解决问题的方法。现实中解决问题的方法常常能够转化成编程中的算法,或者对解决编程问题有启发。
04 对学生说出的方法进行评价。对新知识点进行讲授,用程序语言描述学生所说的算法。
05 引导学生自己编程解决问题。让学生自主练习,通过自学课本、小组讨论、学习教师提供的课件或视频资料尝试编写程序解决问题。
06 给学生展示的舞台。请完成的同学说编程的思路,边说边演示编程的过程和程序运行后的结果,这能培养学生说和写的基本能力。
07 教师进行评价和反馈。这时可以对相应的知识点进行补充说明和总结。
编程教学是一条漫长的道路,需要在实践中不断地迭代优化,以找到更好的适合所教学段学生的教学方法。一起加油。
我是华思语,和你一起认真生活每一天。