初中Python教学的组织与实践
高晓明
编程教育越来越火,Python教学也因此风起云涌。小学图形化编程方兴未艾,代码教学已经跃跃欲试,很多地方则把初中教学直接引进了Python编程的新天地。本期解码,让我们一起探讨初中Python教学的课程与教材、组织与实践中的问题与解决办法。
随着Python教学的兴起,山东初中信息技术教材(泰山版)2018年随即将Python纳入教学内容,其中,第1册用一个单元学习基础知识,第2册用一个单元学习常用算法。面对新教材,很多初一年级的信息技术教师刚开始教学时会有很多疑问,例如,为什么初一就开始学编程?编程内容这么深,初一年级学生能学会吗?下面笔者结合本教材谈一谈初中Python教学的组织规划和教学的收获。
初中低年级增加了编程内容,而且教材是普及给所有学生的,教学就得解决适应学生的年龄特征和面向全体受众的问题。初一年级学生接受能力弱,教学进度就不能太快,要让学生把每一节的知识嚼碎,一点点地吃,不能囫囵吞枣。
● 第1册Python的教材处理
第1册重视的是Python语言基本语法的学习。
微项目一,探究程序加工数据的过程,其实知识点涉及的是基本语法中的运算符,输入、输出语句,各种数据类型和变量的存储等相关知识。学生刚开始没有接触过这个软件,所以,将微项目一分成了三节课:第1节课让学生熟悉Python的软件环境、运算符和执行原理,还介绍了各种数据类型和文件存储方式。第2节课完成了《利息的计算》和相关程序,又进一步学习了数据存储方式——列表的概念。列表是各种算法中必不可少的存储工具,是计算思维的一种体现,所以必须要让学生把基础打牢。第3节课是微项目一的收尾部分,讲授了教材的拓展知识,用open()和write()函数打开和写入文件,这个知识点和程序用时在20分钟左右。剩余的20分钟时间就用来渗透微项目二选择结构的If语句的理论,让学生对选择结构先有一个大体的认识,下节课则继续深入,通过这样螺旋上升的学习,学生的印象会更深,不容易忘记。
微项目二,将知识点分为双路径分支结构语句和多路径分支结构语句,也就是if else语句和if elif语句,安排两节课进行教学。这一微项目中的程序明显增多,而且每一个程序都很有代表性,所以针对每一个程序中涉及的新知识点都进行了学习,而且要求学生自己输入一遍程序。
微项目三是关于循环结构的,仍然分为两节课,分别学习了计数循环for语句和条件循环while语句。在教学中感觉每一个程序都很有代表性,所以把教材的每一个程序都做了分析和学习,找出了每个实例的改进算法程序。
● 第1册其他章节的处理
信息技术课程一个学期才17节课,编程部分安排了7节课,剩下的10节课就分别安排给其他章节。学期刚开始,第1周先上一节信息技术的起始课,从第2周到第4周,学习计算机硬件组成,包括计算机的硬件、计算机的发展史及其分类、软件系统、如何装机等。从第5周到第12周,排除了期中考试的一周,用7节课来学习编程。从第13周到第16周,用4节课完成Photoshop的教学,包括裁剪、对比度、图像的大小、魔棒、仿制图章、文字、图像合成、蒙版滤镜,最后绘制圆锥体和葡萄。第17周,学习因特网工具,因为学生经常接触QQ、微信等工具,所以这一章节压缩到1课时完成即可。
● 第2册Python的教材处理
第2册有三个单元:Word软件的应用、程序设计的算法和人工智能。课程规划后,Word软件的应用和人工智能这两章,一共用7节课,而剩余的10节课,全部给程序设计算法。为什么程序设计算法要分出这么多课时呢?
第二章程序的算法,包括了枚举算法、迭代算法、排序算法、递归和分治算法。学习算法是一种计算思维的培养,而它要依托一种程序设计语言,要理解算法,首先要会用Python语言读懂程序。
从学生的学情来说,第一学期学生已经学过了7节课的Python语言,学生有了语言基础,但笔者更担心“遗忘”的问题。因此,讲算法之前必须先复习Python的基础语法。学生能回忆起来,才好继续学习。所以,本学期Python的前两节课是复习课,复习第1册的语法。复习课的第1节,学生先回忆基本的数据类型、输入输出语句、变量存储的方法和顺序结构;第2节复习了选择结构和循环结构。用以前学过的程序为例,略做拓展,回忆式学习。
接下来学新知识,微项目一是讨论生活中的算法之美,让学生对生活中的算法有一种感性认知,感觉内容可以不用一节课来学习,理念可以在下面的算法实例教学中慢慢渗透,所以从第3节课开始,学习微项目二的内容——枚举算法。
微项目二枚举算法分成了两节课,书中的实例非常有代表性,如“拍7游戏程序”分为“明7”和“暗7”,让学生先做只有“明7”的程序,再增加难度,要求程序中加上“暗7”的条件。学生不断地改进程序,完善思路,学起来层层递进,富有趣味性,其间还渗透了取余和取整运算符的问题。枚举的第二节课,学习了“砝码实验程序”,学生先分析清楚问题,不断改进枚举条件,来提高程序的运行速度。教材的科学探究栏目里,古代的“鸡兔同笼”问题、“求数学中的水仙花数”,都是很经典的思维学习实例,教师分分类,学生都学一遍。
微项目三迭代算法和微项目四排序算法,也都分成了两节课。在排序算法中,冒泡排序是个重点。
剩余的两节课,分给了递归和分治算法,因为这两个算法是带星号的内容,对大多数学生来说,算法有难度,所以只给学生典型例子了解,不做重点学习。
● 教学策略
1.慢就是快
笔者喜欢螺旋上升式的教学。学习新知识,要用上旧知识,复習好旧知识,再做提升。所以每一节新课开始前,总要花几分钟来复习。特别是教材每个微项目的第2节课,总要先复习一下上节课的基本概念和程序。在两个学期之间,也安排了两节复习课。这样的教学,不花哨,有效果,更扎实。同样,学生学编程也一定要上机操作,慢慢地打程序,调试程序过程才能锻炼学生发现问题和解决问题的能力。慢慢打好基础,以后才能越跑越快,这就是“慢就是快”的道理。
2.少就是多
学生学习的程序不一定要多,也不一定要花哨,但要学得经典,要吃透,例如,“拍7”程序中涉及了取余和取整运算符,这两种运算配合使用,就可以用来取出一个自然数中的某一位置的数字,所以上课时有些拓展知识也花去了比较多的时间,但这也是很值得的。
总之,编程教学是一个沉甸甸的新内容,需要教师既要遵循教材又不局限于教材,从实际出发,灵活安排,最大限度地实施新的编程教学,培养学生更有品质的技能与素养。