如何做好算法与程序实现教学的知识储备

    朱坤

    

    

    老子在《道德经》中有云:“天地之间,其犹橐籥乎?虚而不屈,动而愈出。”世界是不断发展的,万物是不断变化的,信息技术课程也是如此,只是它变化得更快而已。面对变化的课程,我们往往会疲惫,所以要不断地“充值”,才能够自如地在变革的大潮中乘风破浪。

    随着《普通高中信息技术课程标准(2017年版)》(以下简称课标)的颁布,以及高中信息技术新教材的使用,高中信息技术学科新一轮课程改革的内容已经明确。相比2003版的课标和教材,2017版变化显著。变化一:必修模块一“数据与计算”中将算法与程序实现作为重点,其内容的广度和深度都远高于上一轮的课标要求;变化二:新一轮教材所采用的编程语言为Python,这是大部分教师没有学习过的纯代码编程语言。算法和Python语言涉及的知识非常广泛,教师应该学习哪些内容?达到什么程度?如何学习?这些都是信息技术教师面对的主要问题。笔者从2017年开始学习Python编程语言,同时开始教学尝试,经过实践,认为信息技术教师可以从以下几方面做好知识储备。

    ● 研读课程标准,储备学科学习方向性的知识

    课标从内容要求、教学提示和学业要求等方面,對算法与程序实现提出了要求和建议。我们可以从中提炼出本学科学习的方向,明确学习的知识框架。例如,从内容要求中的“掌握一种程序设计语言的基本知识,使用程序设计语言实现简单算法”这句话,我们可以提炼出“程序设计语言的基本知识有哪些呢?在Python中对应的内容是什么?”“简单算法包括哪些内容?如何用Python实现相应的算法?”等学习方向。再如,从教学提示中的“通过编程实现枚举法中的‘百钱买百鸡等经典案例,体验程序设计的基本过程,学习程序设计的基本方法”这句话,我们可以提炼出“其他的枚举算法经典案例是什么?用Python如何实现呢?”“枚举算法之外的简单算法和经典案例是什么?用Python如何实现?”“程序设计的基本过程和基本方法是什么?”等学习方向。

    通过这样细致地研读课标,提炼出具体的问题,便可以明确应该储备知识的框架,然后按照这个框架,明确学习的方向性知识。在新版教材研读中,教师可以此为依据,有针对性地在教材中寻找答案,以便更好地分析教材、使用教材。

    ● 熟读教材,储备胜任学科基础教学的知识

    对课标的研读只能明确学习的框架和方向,而教材是对课标较为精准的解读和具体化呈现,因此熟读教材梳理知识点,能够明确具体的学习内容。

    不同出版社的教材有不同的风格和定位,在具体的内容组织上会有所差异。例如,某版教材将知识全部融入到项目中,在做中学;另一版本教材先提出项目,再介绍知识,最后利用知识完成项目。某版教材涉及turtle、time、math、sinomaps、jieba等5个模块;另一版本教材涉及math、random和Image等3个模块……教师可将多个版本的教材利用思维导图梳理知识点,进行对比综合,形成知识脉络图,进而进行针对性学习,增加教学知识储备。

    学习Python时需着重关注in操作符、列表和字典等序列类型及模块的应用,这是Python区别于其他编程语言的主要内容。例如,图1所示是使用in操作符和列表判断生字的小程序,“ok_word”是一个存放学过的字的列表,“if i in ok_word”表示如果“ok_word”列表中存在“i”。这种用法非常简洁地实现了在c++等其他编程语言中需要使用循环遍历才能实现的功能。

    ● 挖掘教材,储备适应学生个性化需求的知识

    课标提倡项目学习,教材中的范例都是基于生活情境的小项目,这些小项目一般具有一定的挖掘空间。例如,笔者看到某版教材中的范例“最强大脑”游戏时,第一反应是应该增加“如果输入超时便结束游戏”的功能。为了实现这个功能,笔者多方查找资料,最终找到了解决问题的方法。在查找资料的过程中,笔者知道了shell和命令行下运行Python代码可能得到不同的结果,知道了还有sys、msvcrt等模块可能会在教学中用到,知道了print()命令flush参数的作用等Python知识。这些知识是教材没有直接体现的,如果不进行教材范例的挖掘是无法发现的。

    虽然挖掘教材范例需要的知识不是教学必备的,但却可以在解决学生层次差异、引导学生深入学习、激发学生学习兴趣、预防课堂“尴尬”等方面发挥一定的作用。这部分的知识储备有一定的不确定性和难度,需要教师在准备教学时充分考虑,提前准备,也需要关注学生课堂上提出的问题,不断积累,以满足学生的个性化需求。

    ● 拓展教材,储备提升学科魅力的知识

    教学的重要目标之一是在学生心中种下一粒种子,使其慢慢发芽、生根、长大、开花、结果。这粒种子需要使用一些“魅力”知识来播种,而“魅力”知识仅从教材中获得是不够的,需要教师进行拓展。

    例如,图2和图3是求解非线性方程组和绘制3D等高线的代码及运行结果图。两个例子分别涉及数学学科和地理学科知识,短短的十几行代码就能够解决较为复杂的学科问题,对学生的触动是可想而知的。如果教师能够“轻而易举”地给学生呈现这样的跨学科应用范例,那粒种子一定会深深植入学生心田。

    这方面的知识储备需要在具备前面的知识储备后,在充分利用网络资源寻找范例、阅读代码、修改代码的过程中逐步提升。储备这些知识时需要注意教材是教学的重要依据。教材所承载的知识、思维和理念是源自课标的,教师在修改范例甚至自行设计范例时,不能脱离这三方面内容。同时要牢记,算法与程序实现的教学核心不在语法,也不在算法,而在思维。算法是思维的表现,语法是实现算法的工具。

    总之,储备算法与程序实现教学知识的过程不是一蹴而就的。教师需要立足课标,依托教材,从教学需求出发,明确方向,充分利用信息技术手段循序渐进、有的放矢地进行。

    本文为哈尔滨市教育学会“十三五”教育科学规划重点课题“普通高中算法与程序实现单元教学实践研究”(课题编号:HXHXZ-135-001)研究成果。