参透算法要诀,剑指问题解决
主持人
李维明,教育部普通高中信息技术课标修订组核心成员,正高级教师(教授)
主持人语:继教育部正式颁布《普通高中课程方案(2017年版)》及《普通高中课程标准(2017年版)》之后,目前已完成新教材的编写修订工作。更为可喜的是,国务院办公厅新近颁发了《关于新时代推进普通高中育人方式改革的指导意见》,提出了优化课程实施的新举措——结合推进高考综合改革,2022年前全面实施新课程、使用新教材,也就是在2022年之前新课程、新教材得到全面实施。为此,不少省区已经制订了全面推进新课程的实施方案,新的教学时代即将展开。为配合即将到来的新课程、新教材的教学,“普通高中信息技术新课标教学实施”专栏应运而生,目前已先后讨论了“如何实施‘三新一旧的信息技术学科教学”(共5期)和“信息技术学科课程教学条件的创设的基本策略”(共4期)等话题,得到了广大信息技术教师和教研人员的支持和认可。本期继续针对“必修模块1的教学”展开“普通高中信息技术新课标实施之教学专题一”的研讨,内容包括“必修模块1的教学概述”“必修模块1的教学建议—单元1:数据与信息”“必修模块1的教学建议—单元2:数据处理与应用”“必修模块1的教学建议—单元3:算法与程序实现(含了解人工智能)”及“必修模块1的教学测评”等专题,以飨读者。同时,也希望广大信息技术教师、教研人员积极参与,献计献策,共同促进学科课程的顺利实施、健康发展。欢迎大家不吝赐稿([email protected])。
普通高中信息技术新课标实施之教学专题一
必修模块1的教学
必修模块1的教学概述
必修模块1的教学建议—单元1:数据与信息
必修模块1的教学建议—单元2:数据处理与应用
必修模块1的教学建议—单元3:算法与程序实现(含了解人工智能)
必修模块1的教学测评
“算法与程序实现(含了解人工智能)”是《普通高中信息技术课程标准(2017年版)》(简称《标准》)“必修模块1:数据与计算”中的重要内容之一,主要包括简单算法的表示与编程实现,也包括人工智能的了解与认识等几个方面。在教学中应当以算法为要旨,以编程为手段,以问题解决为核心展开教学。
参透“算法”
算法是指一个有穷规则的集合,也就是一个解决某一特定类型问题的运算序列。在计算机科学中,为保证计算机有序执行指令,算法都具有指定输入、指定输出、确定性、有效性和有限性五个基本属性——这些定义是比较专业而又抽象的。而在《标准》中,对算法学习的要求并不是那么专业,只是“从生活实例出发,概述算法的概念与特征,运用恰当的描述方法和控制结构表示简单算法”。这里提到的算法的“概念与特征”用前述的一段文字就可概括;对如何“运用恰当的描述方法和控制结构表示简单算法”也可以分别来认识。
首先什么才是描述算法“恰当的”的方法,《标准》里并没有明确指出,但在目前教育部已经审定的几套教材中,几乎都有着同样的表述——描述算法的方法有“自然语言”“流程图”和“伪代码”等三种,而对“控制结构”也同样说明有“顺序结构”“选择结构”和“循环结构”等三种。
然后就是如何“运用”这些方法和控制结构来描述算法。《标准》中提出:“创设程序设计的活动情境,组织学生在解决问题的过程中探究顺序结构、选择结构和循环结构的特点,通过小组学习,分析问题,设计解决问题的算法。”这里提到的创设“活动情境”,是什么样的情境呢?教材中也将其具体化了:有描述洗衣机“洗衣流程”的,也有描述“红灯变绿灯”的,还有A市到B市“最短路线”的……不管设置什么样的情境,都是便于学生“探究”方法结构的特点,“设计”解决问题的算法。
倚重“编程”
所谓“编程”,就是使用某种语言进行程序设计,从而实现算法的通俗说法。在《标准》中,对编程的要求首先是“掌握一种程序设计语言的基本知识”,这是《标准》中少有的提法。何为“掌握”?一般的解释是:能理解学习材料的内涵和意义,并能在熟悉的基础上加以灵活运用。由此可见《标准》要求的“掌握一种程序设计语言的基本知识”就是要求学生能理解“程序设计语言”的内涵和意义,在熟悉“程序设计语言”的基础上,能灵活运用,从而达到“使用程序设计语言实现简单算法”的要求。
“掌握”的含义不仅仅如此,更需要“通过解决实际问题,体验程序设计的基本流程,感受算法的效率,掌握程序调试与运行的方法”。什么是实际问题呢?《标准》给出了一些例子。例如,通过编程实现枚举法中的“百钱买百鸡”等经典案例,体验程序设计的基本过程,学习程序设计的基本方法;通过设计“选课系统”“趣味小游戏”等具有一定实用价值的程序,培养学生利用程序设计解决实际问题的基本能力。
其中“百钱买百鸡”的问题,是我国古代的一道经典的数学题,解决时需要先分析问题,寻找解决问题的方法,然后再将其抽象,建立数学模型,设计出算法,用计算机语言设计程序,运算出结果。而对于选课系统,趣味小游戏则需要花更多的时间去进行需求分析,搞清楚需要解决的问题是什么,然后才能建立模型设计算法,最终达到解决问题的目的。所以,不管解决什么样的实际问题,都需要亲历计算机解决问题的一般过程:分析问题—设计算法—编写程序—调试运行。
从以上分析可以看出,编程是实现算法、解决问题的重要手段,也是《标准》必修模块1教学的重难点所在,建议教学时预留足够的课时,让学生动手设计程序、调试程序,从而掌握编程解决真实问题的基本技能,以达成本模块的教学目标。
如果把眼界再放开来看,整个高中的信息技术课程,用“数据”“算法”可以将其贯穿,而实现算法、处理数据的方法其实都与编程解决问题息息相关(如下页图)。
由此可见,“掌握一种程序设计语言的基本知识”、编程“解决实际問题”的技能何其重要。在教学中一定要对其高度重视,特别是在必修模块1的教学中,绝不能掉以轻心。
至于学习编程时选择什么语言,《标准》并未指定,不过从教育部新审定通过的五套教材来看,全都不约而同选择了当今最为流行的编程语言:Python。这是因为Python有相对较少的关键字,结构简单,有一个明确定义的语法,学习起来更加简单;Python代码定义得更清晰,易于阅读;Python的源代码易于维护;Python语言是免费使用的,获得也十分容易。当然,选择什么语言并不重要,因地制宜才是正确的选择之道。
正视AI
对于人工智能(AI)的知识,算法及硬件技术的突破,使得“昔日王谢堂前燕,飞入寻常百姓家”,人脸识别、语音识别、无人驾驶等应用,早已耳熟能详,妇孺皆知。目前的人工智能教育,社会上热度很高,但对于信息技术课程来说,不能简单地跟风炫酷,而要“通过人工智能典型案例的剖析,了解智能信息处理的巨大进步和应用潜力,认识人工智能在信息社会中的重要作用”。这是《课标》的要求,也是在高中必修课程学习期间应该达到的目标。
这里的几个关键词是“剖析”“了解”“认识”,这正好表明了对人工智能部分学习要求的程度,其中最难把握的是“剖析”。《中国现代汉语大词典》对“剖析”的解释是:“【剖析】动分析、解说。”这是动词,是需要在教学中对“人工智能典型案例”进行“分析”“解说”,从而达到“了解”和“认识”的作用。那什么才是“人工智能典型案例”?《标准》举出了实例:“例如:通过研讨人工智能在智力竞赛及图像记忆挑战中夺冠、战胜顶级人类棋手等事件……”也就是说,教学中需要对类似这样的图像识别、人机博弈等应用进行“分析”“解说”,让学生了解其“进步”和“潜力”,认识其在社会中的重要作用,从而“引导学生深入了解人工智能技术,思考人工智能发展对社会发展的影响,以及可能会引发的社会问题”。
对于教学的方法,《标准》建议:“在教学实施中,教师可通过情境模拟或实景观察等方式,让学生体验人工智能对社会发展的影响,感受人工智能与社会各领域结合所带来的巨大变化,思考人工智能廣泛使用可能会引发的社会问题及应对策略。”在新课标教材中,都设置了一些人工智能应用的典型应用案例供学生进行“剖析”,如“空调企业智能客服机器人”“智能班级交互系统”“手写数字识别”等,试图通过这些案例的剖析,让学生了解人工智能的应用,认识人工智能的作用。
按《标准》的表述,至此已经达到教学的要求。但其中似乎少了一些学生对人工智能技术的参与及体验。也就是说,之前学生学习了程序设计语言,进行了编程实践,实现了一些“算法”,而人工智能也是某种“算法”,只不过复杂程度更高而已。能否让学生通过简单的编程,调用人工智能算法来实现自己的“人工智能应用”功能,去解决应用中的一些简单的问题呢?答案是肯定的。有些教材就考虑到了这一点,设计了“编程调用平台中的智能工具”,开发自己的智能应用,如智能“信息值守机器人”“人工智能绘画”“智能客服机器人仿真系统”等,既照应了之前的语言学习,又拓展了学生的智能体验,可谓一举两得。
总之,本单元的教学内容相当重要,教学难度之大、教学时间之长可想而知,教学中必须十分重视,只有抓住“算法”核心,倚重“编程”手段,剑指“问题解决”,方能出奇制胜,取得良好的教学效果。