重构算法、编程与计算思维学习的融合关系

2023-03-07 16:41王爱胜山东省青州第一中学
中国信息技术教育 2023年5期
关键词:编程算法思维

王爱胜 山东省青州第一中学

随着《普通高中信息技术课程标准(2017年版2020年修订)》和《义务教育信息科技课程标准(2022年版)》的颁布与实施,基于“计算思维”核心素养、面向“数据与计算”实施算法教学已成为中小学信息技术(科技)课程重要的教学内容之一。在高中阶段,随着各省市高考、学业水平考试的推进,算法与程序设计能力正在成为重要的评价目标;在初中阶段,承接之前的中考与等级考试,人工智能、算法领域的数字素养与技能必将成为新的评价要素。因此,必须基于内容、教法与评价重构算法、编程与计算思维的融合关系,让计算思维价值更明确,让算法学习更有效,让编程起到对算法、计算思维培养的支撑作用,从而构建起更加开放、务实的融合的关系,深化新课程发展。本文将结合编程教育的历史发展、内容分类与教学方法,探讨如何重构编程、算法与计算思维学习的融合关系。编程、算法、计算思维及人工智能教育关系模型如下图所示。

编程、算法、计算思维及人工智能教育关系模型

●探索算法、编程与计算思维融合的历史基础

早在20世纪60年代,计算机文化兴起,以程序设计为代表的计算机教育在大学首先得到发展;至80年代中后期,编程教育逐渐进入中小学教育。以编程为基础的计算机文化教育,为后来航空航天、电子通讯、计算机网络等科技创新提供了人才基础,催化了全球化技术创新形式、消费方式和文明生态,信息化生产与生活的质量、速度、范围得到空前提升。但在90年代中后期,随着软件操作教育的兴起叠加网络娱乐的冲击,技术教育中的算法与程序设计一度被弱化,这也成为核心技术创新人才缺乏早期培养的关键因素之一。

回顾这段历程,可以了解到,编程教学内容曾从Fortran、Basic、Pascal等算法类语言学习,发展到Foxbase、C、C++、易语言等开发类语言设计,再发展到VB、VFP等可视化语言应用,直至现在的Java、Python等开源类语言创新,以及各类图形化编程语言、人工智能编程语言等。编程教学方式受限于计算机语言语法学习与范例模仿,算法应用与创新思维培养往往滞后于技术发展,随着计算思维成为学科核心素养,算法与程序设计教育迎来了新契机。计算思维并非独立于算法与编程,但因其是基于两者发展起来并向更多领域推广,所以应当为算法与编程学习提供更深远的学习目标与课程价值。

●辨析算法、编程与计算思维的内在联系

在一线教学中,如果对计算思维概念进行割裂式应用,会导致简单地把计算思维等同算法或编程,或者把计算思维仅仅作为一个目标放在教案中成为形式。因此,如何通过有效关联与深化实践来达成计算思维与算法、编程的内涵融合成为必要的研究。

周以真教授在2006年提出“计算思维是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的一系列思维活动”。2012年,周以真教授又进行了计算思维的新阐述:“计算性思维能够将一个问题清晰、抽象地描述出来,并将问题的解决方案表示为一个信息处理的流程。”2013年,英国专家提出计算思维包括算法、评估、分解、抽象、概括这五个方面的要素。2015年,国际教育技术协会和计算机科学教师协会指出“计算思维是一个用来解决问题的过程,该过程包括问题结构化、数据分析、模型建设、算法设计、方案实施和应用迁移等特征”。2017年我国颁布的《普通高中信息技术课程标准》将计算思维定义为“个体运用计算机科学领域的思想方法,在形成问题解决方案的过程中产生的一系列思维活动”。对照可见,计算思维是不断发展的,经历过从宏观的软件工程思维向微观的问题解决思维进化。在计算思维的发展中,算法是其中的关键要素。

计算思维是一种人的思维方式,既有独特创新,又有文明继承,并非全新概念。例如“分解”,若独立看也是数学、物理、化学等学科必要的思维方式之一;又如“抽象”,是人认知事物、表达事物的基本思维方法,难以想象正常人看到篮球不认为是圆球,圆即是对球的抽象认知。若让受过教育的人绘制一个篮球,起码要能够绘出一个圆,而具备更高抽象能力的人,会再加绘弧线来表达篮球的特征,这都是对篮球不同程度的抽象表达。如果要继续描述,将会用类别、颜色、重量、直径、材质等数据共同形成描述球的数学“模型”。针对类别,可以“分解”出铅球、排球等球的“分类”形成子问题。不论什么球,要计算体积需套用球体积计算公式,形成解决“球体积”这一类问题的通用“模式”。在计算中,“从直径测量,到半径计算,再到体积计算的整个数据处理过程”就形成算法。如果需要首先判断球的类别、重量等,也可以在算法设计之中构造“识别”球类的“智能模型”。借此我们可以审视广义的计算思维。

信息技术(科技)课程需要计算思维来做什么呢?笔者认为,不应仅限于用数学计算过程来培养“计算思维”。在进行算法教学时,不单纯利用数学学科的归纳、概括、微分、积分这些数学思维去计算,而是要借鉴、吸收、融合其他学科思维,设计算法及程序来解决问题。例如,一个数列求前n项和不是本学科解决的重点,改为求何时前n项和会超越某个标准值,用传统的计算难以适应任何情况。这时,用编程利用循环与累加即可计算与判断,体现出计算机算法与计算思维的独特价值。

●针对算法、编程、计算思维的教学模式

从计算机教育发展来看,围绕编程教学发展形成了不同的教学方法。

第一类教法重基础知识学习,基于“计算机语言教学”形成。从20世纪80年代大学数学系或物理系广泛设置计算机专业开始,到90年代编程进入中小学教育,教学内容多数以计算机语言为主,它是由计算机语言的基本语法、基本程序结构(顺序、分支与循环)及其他算法(递归、排序等)应用构成。教学方法有程序范例教学等,以数学问题计算进行程序验证。评价以语言知识点掌握、程序设计考查为主。优点是知识体系清晰,范例适合课堂学习;缺点是编程与算法各自独立,知识点多,算法思想培养欠缺,较难形成思维能力。

第二类教学重算法应用过程理解,基于“算法教学”形成。从20世纪90年代末开始,部分较发达地区的中小学编程教育开始探索基于算法的编程教学,教法以“任务驱动”为代表,每节课以具体任务引领,分数学模型的建构、算法分析和程序设计三部分学习。虽然也会按计算机语言学习为进程,但内容上以算法为主线组织,范例一将“100内的偶数”“求圆面积”这类简单问题变为成绩排序、密码判断等更侧重算法解决的问题。这类模式的优点是淡化烦琐知识,不追求命令格式参数等细节,凸显算法设计能力;缺点是对语言知识掌握不系统,算法灵活变通时缺乏技术支撑。

第三类教法重作品创作操作,基于“图形化编程教学”形成。2010年前后,创客教育、机器人教育、图形化编程等针对软件、硬件作品设计的项目化教学兴起,编程作为实现技术手段再次异军突起。尤其是图形化编程平台融合硬件设计作品让学习内容丰富多彩,多以作品创作、产品创意为内容,进行项目教学。优点是能激发学生的创新思维、设计思维;缺点是受限于硬件产品或过度依赖于厂家资源,且受众较少。

第四类教法是重算法思想,基于“生活算法教学”形成。本世纪初,一线教师在算法教学中开始关注生活实例,其中以北京武健老师为代表的“生活算法”教学研究最为系统。在生活算法中,可以通过生活类比认知算法原理与过程,进行情境教学。例如,打算明天去公园玩,但如果天气不好,那只好在家中看电视。这个过程可以用分支结构的流程图进行表达。优点是生动、形象,通俗易懂,让算法走下神坛,达成学习生活化;缺点是容易发生内容简化、类比失真,产生计算机算法层底理解不够等问题。在生活算法方面,笔者也创作过《皮皮闯边城》编程故事,尝试把算法进行拟人化、故事化,进行过趣味化实验。

第五类教学法是重计算思维,基于“数据与计算教学”形成。高中必修一内容界定为“数据与计算”,义教把算法界定为“身边的算法”,基于计算思维教学实施项目教学、情境教学,以数据的输入、处理、输出、控制等作为大线索,以数据的搜索、运算、分析、存储、加密、安全等细分内容,培养数字素养与技能,算法与编程应得到更紧密的关联。优点是与时俱进让计算思维得到显性发展,算法生活化有利于素养的形成;缺点是高中内容理论难度大,义教小学阶段学龄小理解弱,偏向生活化,淡化代码,编程技能弱化,另外在课堂学习中受限于课时等问题也亟待突破。

当然,除去以上模式之外,在具体的实施中还有其他学习模式,如在信息学奥赛中,基于数据结构、动态规划等诸多高阶算法的编程设计的难度超高内容的刷题练习等。

●构造算法、编程与计算思维融合的教学方法

由于对算法、编程及计算思维定位的差异,教材、教学内容组织不同,教学方式也有差异,如分别采用范例教学、情境教学、任务驱动、主题活动、问题解决、项目教学等。笔者基于一线需求设计过半成品加工教学策略、微项目教学法来解决主题教学和项目学习的瓶颈,对于更核心体现技术价值与计算思维有较好效果。无论什么教法,都应注意融合算法、编程与计算思维的价值取向与课堂效益来组织设计,以下提供大单元与独立课时两种设计方案。

第一种方案是大单元教学设计。在教学模块和大单元中计算思维教学更易设计。例如,图书管理、电话簿或购物结算等真实项目,首先根据需求进行数据获取、检索、计算与输出等模块化概要设计,在“分解”不同功能模块后,算法就可以使用自定义函数设计各模块功能;其次,在查询或计算时对对象、范围、条件等特征进行“模式识别”,“抽象”出主要特征,如查询搜索唯一编号、模糊查找名称等,并量化关系形成“查询模型”“计算模型”等;再次,套用“模式”就可以处理所有商品等数据;最后,主体内容是设计“算法”形成“代码”,经过界面设计、模块功能设计等完成程序,并进行运行调试。后期,再通过迭代优化功能和泛化成通用软件,最终形成软件系统。

需要注意的是,在大单元教学中,每节课都要按计划进行,中途不宜过多开展单纯算法课或编程课,脱离计算思维。

第二种方案是独立课时教学设计。融合计算思维进行独立课时的教学内容与过程,让学生达成算法的“知其所以然”是计算思维的着力点。下面以“圆面积”为例探讨各类教学模式的特点:①语言教学。单纯计算机语言教学,往往直接给出程序代码范例“求多个圆的总面积”。内容侧重于变量、表达式、运算符、输入/输出语句及循环算法。②算法教学。提出“有n个不相交的圆形图案,排列组成花坛,最小圆半径为a,依次半径加长1米,求图案总面积”的任务。通过任务驱动、问题引导学习算法,包括数据初始化(半径为1)、形成计算模型(求圆面积公式)、循环控制计算所有圆(循环n次,每次循环半径迭代1,累加出总面积s),涉及数据输入、运算、输出与循环结构等。③作品设计教学。要求“用多个圆图形进行创意,如绘制总面积为s的多彩气球等作品”,侧重圆形绘制,涉及圆形、半径与位置、循环结构等,可拓展色彩、填充等绘制命令。④生活算法教学。研讨“如何描述用手工计算多圆形面积,用流程图如何绘制或根据生活经历阐述哪些功能可以让计算机重复任务自动完成”,侧重思考与表达的方法,涉及流程图、伪代码等。⑤计算思维教学。探索“花坛建设项目中,要用n个圆形设计图案用草坪覆盖,创意图案并计算草坪面积需求”,以开放型内容激发思维,包括“分解”问题预设外切圆、同心圆、内切圆、相交圆等不同的子问题;探索各种组合是否或如何影响面积变化;“模式识别”可用于所有圆位置关系特征分析;“抽象”对图案、草皮及具体圆的大小、位置简化,聚焦“圆”的半径、交点等主要特征,建立判断关系的数学模型,形成面积计算公式的数学模型等;“算法”即是整体上进行问题解决流程设计,用自定义函数设计模块,用分支语句判断位置关系,用循环自动化计算以及全程变量管理等,形成程序代码。另外,泛化、迭代、评估等步骤是为完善程序、形成通用软件服务的思维,不再赘述。

通过以上各种层次的算法教学对比可以感受到,在大单元设计中更易遵循计算思维来设计教学方案,较小的课堂任务要实现多项计算思维元素非常困难也并非必要。新课程提倡在每节课中分阶段、分层次落实大单元设计的学习环节,也可以减小每课时对计算思维的过分追求。总之,重构算法、编程与计算思维融合的关系,需要深刻理解编程是算法的技术支撑、算法是编程的设计方法,而计算思维是处理问题过程中的思维方式,不宜割裂对待,这样才能达成知识、能力与思维融合的创新人才培养与公民素养发展。

猜你喜欢
编程算法思维
思维跳跳糖
思维跳跳糖
思维跳跳糖
思维跳跳糖
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
纺织机上诞生的编程
基于MapReduce的改进Eclat算法
Travellng thg World Full—time for Rree