基于小学生认知发展的Python语言校本课程开发策略
作者: 潘洪波【摘 要】小学生学习Python语言的目的不同于成人。小学生学习Python语言是为成长而学,侧重于基础性。在编写基于小学生的Python语言校本课程时,要立足学生的长期发展,循序渐进,因材施教,既要使编写内容正确,又要让学生感到有趣。要关注小学生思维的完整性和逻辑性训练,关注培养小学生的思考力、创造力,为学生的未来发展助力。
【关键词】为成长而学 信息科技教育 编程学习 Python语言
一、提出问题
现在有一种流行的说法:Python语言最接近自然语言,语法简洁、清晰、易懂,拥有众多的第三方库,非常适合编程初学者学习使用。
如果初学者是成年人,这种说法完全正确。如果初学者是小学生,这种说法就值得商榷了。Python语言最接近自然语言,这个“自然语言”是指汉语吗?不是,是英语。小学中高年级才开设英语课程,如果按正常的教学进度,小学五、六年级的学生英语刚入门,他们可以把学会的简单的英文单词、语法迁移到Python语言中,但想以“最接近自然语言”为突破口来学习Python语言是不现实的。
Python语言的语法是简洁、清晰的,但对小学生来说是不是易懂的呢?简洁的语法,有时是会增加学习难度的。例如,赋值语句tot+=2中使用了由“+”“=”构成的增强赋值运算符“+=”,这样的语句很简洁、清晰,但学生在学习时需要转个弯,先转换成烦琐一点的普通赋值语句tot=tot+2,才能更容易消化、理解。同时,计算机高级语言的语法结构和汉语的语法结构是不一致的,在进行编程时,要从母语的表述方式转换成用计算机语言来描述,这涉及思维方式的转换,对小学生而言特别不容易。
拥有众多的第三方库,对于项目应用的开发者来说,可以提高工作效率,但也容易让人迷失在库的海洋里。小学生可支配的时间有限,以“众多的第三方库”作为学习内容的利弊,也是值得探讨的。
对于小学生来说,想要学会Python语言是不容易的。这种“不容易”提醒所有的教育者要正确面对现实,才能找到正确的解决方法;这种“不容易”也激励着教育者思考:如何才能让“不容易”变得“容易”呢?开发基于小学生认知规律和学习发展规律的课程是重要的一环。
二、解决策略
在开发小学生Python课程时,要明白成人与小学生学习Python语言的目的是不同的。成人往往是为工作而学,为开发某个具体的项目或应用程序而学,侧重于应用性。小学生是为成长而学,以Python语言为载体进行思维的完整性和逻辑性训练,掌握利用计算机解决问题的方法,培养思考力,激发兴趣,侧重于基础性。
“为成长而学”是小学生学习Python语言的目的,在这个目标的指引下,开发的课程要做到对、好、趣、高。
(一)“对”
编写的内容要正确,这是最基本的要求。但由于Python语言的独特性,做到“对”并不简单。例如,一般程序设计高级语言中的变量是“箱子”,赋值是把某个表达式的值装入“箱子”的过程;而Python语言中的变量,是对象的标签,是对象的引用,赋值是把变量指向某个具体对象的过程。只有基于“指向”“引用”的认识,学生才能理解多变量同时指向同一个组合类型对象时,修改某个变量指向的对象元素后,其他变量的值也会发生变化。因此,不能把Python语言中的变量比喻成“箱子”。
又如,一般程序设计高级语言中for循环是计数循环,而Python语言中的for循环是遍历循环,遍历循环可以实现计数功能,但它不是计数循环,学生只有从“遍历”的角度去理解,才能明白遍历循环的循环体中对循环变量的重新赋值修改不会影响循环次数,不能把遍历循环简单处理为计数循环。
(二)“好”
这个“好”一方面体现在编排顺序上,要循序渐进,不能把知识点简单地堆砌起来。知识点集中呈现的课程对于编程零基础的学生来说,是不适合的,就像把各种字、词集中整理在一起的字典不能作为学生学习语文的教材。在案例中循序渐进地学习各知识点,是小学生学习编程的可行路径。在解决问题的实践中引出新知,适可而止,由浅入深,由易到难,不求概念化,逐步系统化,实现从以语法为核心的知识体系的编排转向以解决问题为核心的能力体系的编排。
另一方面体现在编排内容上,要做到因材施教。Python语言是一种生态语言,生态语言关注的不是每个具体算法的逻辑功能和设计,而是尽可能利用第三方库进行代码复用,像搭积木一样编写程序,提高工作的效率。小学生可从算法的角度学习Python语言,注重基础性,弱化应用性,关注思维活动。数据、算法、算力是人工智能的三大技术基础。选择算法作为学习内容,也符合时代发展的趋势。那么,选择怎样的内容才算是从算法角度编排的呢?如累加求和,已知某一个数字列表中各个元素的值,求该列表中所有元素的和。从计算生态的角度出发,直接学习内置求和函数sum( )的调用方法,代码简洁,编程的效率高。从算法角度出发,应学习计算机高级语言累加求和的一般方法(先将累加器清零,再遍历列表中的每一个元素,依次累加各个元素的值,最后输出累加器的值)。虽然这种求和方法的代码长,编程效率低,但能让小学生明白累加的一般过程,学会思考。站在一般程序设计语言的视角选择学习Python语言的内容时,既要关注Python语言个性化的内容,也要关注程序设计语言的共性知识,两者有机结合,通盘考虑,适当地从语言细节上解放出来,才能更有利于学生的成长。
(三)“趣”
开发的课程要让学生感到有趣。“趣”是有层次的。第一层次是精美的画面,用图吸引学生。对于低年级的学生来说,这个显得特别重要。他们处于从形象思维过渡到抽象思维阶段,图对他们有吸引力,但学生的兴趣不持久。对于小学高年级的学生来说,因学习而体验成功的快乐、因学习而实现自我价值引发的兴趣是最持久的、最可贵的,这便是第二层次的“趣”。因此,开发的课程一要有插图,二要设计有梯度、有层次的问题,在解决问题的过程中利用自然语言、流程图或伪代码语言等方式,呈现解决问题的过程与步骤,让思维活动可视化。同时,设计习题,促进学生学会触类旁通,为学生体验到编程的快乐、实现自我价值、保持学习的动力提供可能。
(四)“高”
编写课程内容的指导思想要高。教师要跳出学科看问题,跳出技术看问题,要从人的发展、培养人的角度来考虑。从人的发展角度看,多数学生将来不会成为程序员或计算机科学家,因此,不能把编程看作一种狭隘的技术,而应把它当成一种解决问题的方法,培养学生分解、抽象、建模、设计算法的能力,并引导学生将这种能力迁移、应用到解决其他学习、生活中的问题中。从培养人的角度看,编程只是学习的载体,不是学习的目的,学习的目的是能让学生在学习编程的过程中得到成长,训练思维,培养学生的理解力、思考力、创造力,为学生的未来助力。因此,在开发课程时,应在科学的、发展的人才观、成才观、教育观的视角下组织教学内容,让编程成为一种素养。
一本基于小学生的Python语言校本课程,能够帮助更多的学生学习有趣的编程,能够让更多一线信息科技教师少走弯路,这是一件很有意义的事。
【参考文献】
[1]熊璋.“科”“技”并重:义务教育信息科技课程标准解读:访义教信息科技课标组组长熊璋教授[J].中国信息技术教育,2022(9).
[2]潘洪波.小学生Python趣味编程[M].北京:清华大学出版社,2024.