陈英
[摘 要]人工智能时代,高中生必须具备基本的编程素养和计算思维。Python走进教材是高中信息技术新课程改革的一大亮点,也是高中信息技术课程培养学生计算思维的有力举措。如何在有限的课时内,让学生了解编程、爱上编程,是高中信息技术教师需深入思考的问题。实践证明,“一例贯通”教学法能为高一编程教学减负增效。
[关键词]一例贯通;高一编程教学;减负增效
[中图分类号] G633.67 [文献标识码] A [文章编号] 1674-6058(2022)05-0096-04
一、主要矛盾
Python走进教材是高中信息技术新课程改革的一大亮点,也是高中信息技术课程培养学生计算思维的有力举措。当下,在高中开展编程教学是否可行的问题已无须讨论,关键是如何有效开展编程教学。是否可以参考大学编程教学的做法?如何让高中生了解编程,爱上编程?要厘清这些问题,教师必须静下心来,仔细剖析高一编程教学的“天时”“地利”“人和”,分析高一编程教学的现实问题和主要矛盾,只有这样,才能做到有的放矢,真正实现减负增效。
高一編程教学主要存在以下矛盾:
(一)教学难度大与课时不足之间的矛盾
编程是数学知识与计算机知识的综合体,相关知识点具有高度抽象性,对学生的推理能力、分析综合能力要求很高,因此,编程教学难度大就成为不可回避的现实问题。学生要想学好编程,不仅要在课堂上全身心地投入学习,还要在课后消化和巩固。但是,要在高一开足编程教学课时几乎是奢望,学生的课后消化和巩固更是难以实现。可见,教学难度大和课时不足的矛盾很难调和。
(二)教学知识点的严谨性与学生对教学内容的趣味性需求之间的矛盾
编程是一门具有鲜明特色的课程,其教学知识点非常严谨。虽然高一编程教学考虑到了高中生的能力水平和认知特点,对教学内容进行了适当删减和调整,但是对高一学生来说仍然是巨大的挑战,如果照搬照抄大学编程教学的方法显然不合适。高中生既理性又感性,他们既希望所学的知识点科学而严谨,又希望它有趣而生动。教学知识点的严谨性和学生对教学内容的趣味性需求之间的矛盾日益突出。
(三)单元知识点的独立性和现实问题的复杂性之间的矛盾
放眼编程教材,为了能很好地诠释单元知识点,各单元例题均选择具有鲜明特点的经典案例,比如在讲解单分支结构时会选择绝对值案例,在讲解多分支结构时则使用学生成绩等第的例子。从单元知识点的角度看,这两个例子非常经典,也便于上手,非常适合单元教学,但是,如果放眼整本教材,从课程整体知识脉络看,则有“独立”的意味。程序设计的目的是解决生活实际问题,不能只停留在单个知识点问题的理解和应用上。编程人员如果不能根据实际情境,灵活运用知识解决问题,则不能算是一个合格的编程者。而现实问题往往是复杂多变的,因此单元知识点的独立性和现实问题的复杂性之间的矛盾亟待解决。
二、化解矛盾
如此看来,在高中进行编程教学需要勇气,更需要智慧。那么,如何化解上述三个矛盾呢?笔者认为,可以从以下思路入手。
(一)大刀阔斧,去粗取精
要化解教学难度大与课时不足的矛盾,唯有在“精简”上做文章。从课程培养目标看,高中阶段只需培养学生的编程素养和计算思维,让学生对程序设计有个总体的感性认识;从教学知识点看,只需学生掌握3种基本程序设计结构:顺序、分支、循环,并能够解决简单问题。因此,教师应重新梳理高中编程教学的核心知识点,并对其做“减法”,大刀阔斧,去粗取精。
(二)选择案例,逐步求精
要化解教学知识点的严谨性与学生对教学内容的趣味性需求之间的矛盾,需要在案例上下功夫。一个好的案例,必须与学习者的生活经验相关联,而且必须是丰富的、有趣的关联。高中生的学习注意力不能长久集中,学习注意力的持久度与案例的趣味性正相关,因此,选择的案例须贴近生活且有趣,并且采取小步子、逐步求精的方式呈现。
(三)破除壁垒,打散重构
要化解单元知识点的独立性与现实问题的复杂性之间的矛盾,必须打破单元壁垒,对教学知识点进行打散重构。我们要先思考:一个案例只能承载一个知识点吗?各个单元之间能否融合重构?很显然,通过精挑细选,一个合适的案例完全可以承载多个知识点,一个合适的案例也可以打破单元间的壁垒。通过对教学知识点进行打散重构,可将多个单元的知识点融合为一个整体。
三、一例贯通,减负增效
通过打散重构操作,将多个单元知识点融入一个案例中,并将这个案例做大做精,这种方法我们把它形象地称为“一例贯通”教学法。实践表明,基于高中生的学习能力和学习特点,采用“一例贯通”教学法开展高一编程教学切实可行,且能减负增效。下面,笔者结合自身的编程教学实践,分享一个“一例贯通”的教学案例,以供大家参考。
[案例]四则运算出题器。
高一编程教学涉及程序设计的基础部分,要求学生掌握基本输入与输出语句,变量定义以及顺序结构、分支结构、循环结构的基本用法,模块化编程(函数)略有涉及。综合考虑以上教学要求,“四则运算出题器”是一个极好的跨单元融合案例。下面从知识点覆盖范围、所需课时、思维深度等方面进行说明(如表1)。
(一)单元模块教学法
传统的单元模块教学法,按知识点来划分教学单元,组织教学。虽然清晰、易于开展,但是容易造成知识点之间的孤立,使知识点之间的关联意识和关联行动不易发生,学生更多的是对单个孤立知识点进行学习和应用,这样的学习是机械的、低效的。如何让学习真正发生?这就是需要教师打破单元间的壁垒,从整本教材角度,重新思考和构建知识点,以“大单元”的视角组织教学。
教科版必修1教材第二章的内容是编程计算,共分为4个子单元,涉及“分支结构”“循环结构”“函数”三个重要知识点。按照传统的教学方式,教师会按顺序逐个击破。如在教学分支结构时,教师会从单分支结构过渡到多分支结构,如例题选择方面,常选择BMI、成绩等第等经典实例。在教学循环结构时,教师较多的是选择累加、累乘、存款计算、九九乘法表等经典实例。不可否认,这些经典实例对于单个知识点的理解非常有用,但与前后知识点间的联系不够密切。本章的教学难点是函数。函数是模块化编程的起点,对学生计算思维的培养、编程能力的提升有重要作用。按照传统做法,教师多是让学生模仿,对函数有个初步的认识,很少让学生真正体验函数在高阶编程中的重要作用。“函数”内容的教学应该以更直观的方式,让学生自己分解问题,运用函数的思想解决较复杂的实际问题。
(二)“一例贯通”教学法
针对单元模块教学存在的问题,教师对多个知识点进行整合、重构,进行“大单元”教学。从SOLO思维评价模型看,这种教学法能让知识点之间产生更多的关联,把零散的、孤立的知识点组合起来,更切合具体情境复杂性、实际问题灵活性的特点。
在进行“大单元”教学时,教师可以试着寻找一种方式,把“大单元”知识点融合到一个综合案例中。这个案例最好来源于生活,与生活经验相关联,以更好地激发学生的学习热情,实现经验迁移。而“四则运算出题器”就是一个有效整合案例。在设计“四则运算出题器”时,可从最简单的顺序结构入手,首先完成手动出题的简易加法器,接着进行对错判断,融入分支结构知识点,然后实现自动出多道题,渗透循环结构知识点,升级程序,从简易加法器升级为四则运算出题器。此处要运用函数思想,继续升级程序,使之能够提示正确率,甚至能够将结果通过Python的Matlab库进行数据可视化……本案例整合了“顺序结构”“分支结构”“循环结构”“函数”等知识点。学生在“认知—实践—认知”的过程中不断丰富自己的学科知识,提升自身的编程素养和计算思维。
1.“四则运算出题器”需求进阶分析
简易加法器(手动出1道题)—简易加法器(自动出1道题、判断对錯)—四则运算出题器(自动出1道题、判断对错)—四则运算出题器(自动出多道题、判断对错)—四则运算出题器(自动出多道题、判断对错、提示正确率)—四则运算出题器(实现四则运算模块化)
2.“四则运算出题器”的功能与知识点的对应关系
简易加法器(手动出1道题)——定义变量、转换数据类型、输入与输出语句
简易加法器(自动出1道题、判断对错)——引入随机数模块、多分支结构
四则运算出题器(自动出1道题、判断对错)——多分支结构(加、减、乘、除四种情况的分类处理)
四则运算出题器(自动出多道题、判断对错)——循环结构
四则运算出题器(自动出多道题、判断对错、提示正确率)——循环结构(循环嵌套、被除数与除数倍数问题、统计计算)
四则运算出题器(实现四则运算模块化)——函数的运用
3.“四则运算出题器”的功能实现
“简易加法器”样例1:手动出1道题。
“简易加法器”样例2:引入随机数模块,自动出1道题,判断对错。
“四则运算出题器”样例3:选择加、减、乘、除其中之一,自动出1道题,判断对错。
BUG修正:除法运算,被除数与除数倍数的控制。
“四则运算出题器”样例4:自动出多道题,判断对错。
“四则运算出题器”样例5:
BUG修正:除法运算,被除数与除数倍数的控制,并统计练习的正确率。
“四则运算出题器”样例6:运用函数,实现四则运算模块化。
以除法模块为例,加、减、乘代码类似。
至此,一个功能相对完善的四则运算出题程序的代码编写完成。通过此例,将教科版必修1教材第二章的知识点成功融合到一个样例之中。学生亲历了一个小程序的完整诞生过程,从简单到复杂,从顶层分解到局部实现。在整个学习过程中,学生的前期学习内容是后期学习内容的基础和素材,后期学习内容是对前期学习内容的拓展和提升,环环相扣、层层递进,使得学生能够不断体会学习后续知识点的意义和程序设计要精益求精,以及程序在解决实际问题方面的魅力。
从程序设计基础知识点覆盖范围看,本案例涵盖了Python编程的全部基础内容;从教学课时量看,采用“一例贯通”教学法能够节省30%左右的教学时间;从学生思维活动深度看,“一例贯通”教学法更能有效培养学生的高阶思维。“一例贯通”教学法在知识的起承转合方面更符合学生的认知发展规律,它从一个最简单的知识点开始,不断地引发学生的认知冲突,从学生已有的生活经验和学习基础出发,让学生在完善程序功能的过程中明了新知识的学习意义,主动建构和丰富新知识,让学习真正发生,真正让高一编程教学减负增效。
[ 参 考 文 献 ]
[1] 赵国庆,熊雅雯,王晓玲.思维发展型课堂的概念、要素与设计[J].中国电化教育,2018(7):7-15.
[2] 中华人民共和国教育部. 普通高中信息技术课程标准( 2017年版)[M].北京:人民教育出版社,2018.
(责任编辑 黄春香)