• 工作总结
  • 工作计划
  • 心得体会
  • 领导讲话
  • 发言稿
  • 演讲稿
  • 述职报告
  • 入党申请
  • 党建材料
  • 党课下载
  • 脱贫攻坚
  • 对照材料
  • 主题教育
  • 事迹材料
  • 谈话记录
  • 扫黑除恶
  • 实施方案
  • 自查整改
  • 调查报告
  • 公文范文
  • 思想汇报
  • 当前位置: 雅意学习网 > 文档大全 > 公文范文 > 正文

    让大脑成为计算模型的容器——算法、编程在计算思维教育中的作用

    时间:2022-11-06 08:15:04 来源:雅意学习网 本文已影响 雅意学习网手机站

    王荣良 华东师范大学

    算法是大学计算机专业的核心课程。算法学习的主要内容有算法策略(如穷举、贪心、分治、回溯)、算法实例(如查找、排序、遍历、哈希以及基于队列、堆栈、二叉树、图等数据结构的具体算法)、关于算法复杂性的分析。

    《普通高中信息技术课程标准(2017年版)》指出,一个具备计算思维的学生,必须具备三方面的特征:①在信息活动中能够采用计算机可以处理的方式界定问题、抽象特征、建立结构模型、合理组织数据;
    ②通过判断、分析与综合各种信息资源,运用合理的算法形成解决问题的方案;
    ③总结利用计算机解决问题的过程与方法,并迁移到与之相关的其他问题解决中。据此可知,掌握算法是计算思维的三大必备要求之一。

    小学五年级课标算法模块关于计算思维的要求是:通过生活中的实例,了解算法的特征与效率;
    能用自然语言、流程图等方式描述算法;
    知道解决同一问题可能会有多种方法,认识到采用不同方法解决同一问题时可能存在时间效率上的差别。例如,可以采用“煎蛋算法”作为小学生计算思维培养的学习材料:A同学每天早上要煎三个鸡蛋作为早餐,每煎一个鸡蛋需要2分钟,锅里最多可同时煎两个鸡蛋,请问煎蛋最少需要用时几分钟?可选择的答案分别是:A、2分钟;
    B、3分钟;
    C、4分钟;
    D、6分钟。

    如何才能最大限度地实施计算思维的培养?下面,笔者回归计算思维的本源,考察计算思维对应的计算机学科以及计算思维是如何支持解决该学科的根本问题的。

    计算机学科是研究计算机的设计、制造和利用计算机进行信息获取、表示、存储、处理、控制等理论、原则、方法和技术的学科。计算机学科的根本问题是关于可计算问题的研究,或者说是解决计算机进行问题求解的可行性,即什么能被有效的自动化。可计算问题通常可以用一种抽象的形式系统即计算模型来刻画。这里的计算模型并不是指在静态或动态数学描述基础上所建立的求解某一个问题计算方法的数学模型,如圆面积或者BMI指数之类的计算公式,而是具有状态转换特征,能够对所有处理对象的数据或信息进行表示、加工、变换、接收、输出的数学机器。

    在计算机学科,存在这样一条定律:一个问题,当它的描述及其求解方法或求解过程可以用构造性数学描述,而且该问题所涉及的论域为有穷的,或为无穷但存在有穷表示时,那么这个问题一定能用计算机求解;
    反之,凡是能用计算机求解的问题,也一定能对该问题的求解过程数学化,而且这种数学化是构造性的。因此,一个问题在判明为可计算的性质后,从具体解决这个问题考虑,必须按照可构造的特点与要求,给出实际解决该问题的具体操作,同时还必须确保开销成本是能够承受的。

    所以,计算机学科的根本问题可以用两个关键词来表述——“可计算”和“构造”,即在计算机科学理论的基础上判定问题是否可计算,并且可以运用由其学科理论所支持的技术来构造可计算。计算思维作为计算机学科思维,在支持人们通过构造计算模型以及构造具体的操作步骤判定可计算从而实现自动化的工作中,具有重要的作用。

    分析“煎蛋算法”教学案例,可以发现,尽管经历了问题分析,也提出了煎蛋的操作步骤,但学生的关注重点在于完成煎蛋最短时间是3分钟还是4分钟,其煎蛋步骤的设计是为最短3分钟服务的,可以说这只是一个数学问题。只有当学生的关注点集中在算法步骤的有效构造上,才能够一步一步地完成全部的煎蛋工作,其煎蛋步骤的构造是为自动化服务的,这就凸显了“可计算”和“构造”。

    设想一下,如果是一项为机器人编制煎蛋程序的教学工作,要求用程序控制机器人完成煎3个鸡蛋的任务,并且还可以通过程序优化环节实现在最短的3分钟时间内完成煎蛋任务,那么必然要求引导学生思考算法,并在机器人或计算机上构造算法操作步骤,从而实现煎蛋的自动化。由这个案例可见,用程序描述算法与用自然语言或流程图描述算法有不一样的效果,编程教学在计算思维培养中有独特的优势,其特点在于构造工作是在计算机环境下实现的,明确需要运用计算机学科思维方法,其过程对于学生而言也是具体的、可体验的。

    计算源于数学,对可计算的朴素理解,就是能用一张纸和一支笔做有限次运算就可以完成的计算。随着数学中许多计算问题得到解决以及不可计算问题的不断积累,许多科学家认识到发展计算模型,研究最一般问题可计算的重要性。20世纪30年代是计算模型研究取得突破性进展的时期,哥德尔、丘奇、图灵等科学家提出了一批计算模型。其中,以图灵机的特点和性质更接近普通人计算的思想方法,从而被现代计算机系统的开发者所采纳。

    如果说计算模型是采用形式系统的方法对计算这一概念的刻画,那么,算法就是对计算过程步骤或状态的一种刻画,是计算方法的一种能行性实现。可计算理论证明,凡是能用算法解决的问题,也一定能用这些计算模型解决,反之,这些计算模型解决不了的问题,任何算法也解决不了。

    所谓程序,是一种事先编制好的、具有特定功能的指令序列。程序编制依据的是预先设计的算法,这些算法可以是已经存储于程序编制者大脑之中的,也可以是已经用流程图或其他形式准确描述的。在计算机学科中,一般而言,对于任何一个问题,如果有了解决该问题的算法,就可以编制相应的程序。程序是可计算问题的最终落实。

    计算模型、算法、程序构成了有关可计算问题从抽象到具象的线索。计算思维作为计算机学科思维,支持研究者对计算模型、算法、程序的研究与应用。同时,开展计算模型、算法、程序的研究与应用也是计算思维培养的有效途径。

    分析计算模型、算法、程序这一线索可以发现,对计算模型的认识与理解,以及对抽象的算法认识与理解,需要有比较强的认知能力和数学基础。因此,针对计算机学科的初学者,尤其是中小学生,简单化的算法和操作性强的程序是计算机学科入门级的学习内容,也是普及计算思维的途径。

    分析“煎蛋算法”教学案例,可以发现,该案例表面上是算法问题,但因为目标问题是求最少时间,所以该问题就转化为一个数学问题,或者是用数学方法解决运筹学方面的问题,其实施过程中可能需要用到算法工具,但教学的重点已不是算法思想。这是生活化的算法在教学中经常面临的问题。尽管算法教学应该强调每一个的操作步骤,但如果没有经历过程序实现,仍然缺少体验自动化这一计算思维的重要环节。

    对此,有教师认为,在开展算法教学时应该采用自然语言、流程图描述算法,这样在算法教学中就可以不受编程语言的干扰,只要最后采用程序验证学生设计的算法,就能达到教学目标。其实这已经陷入了悖论,因为最终由学生实施用程序验证算法,学生还是需要学习具体的编程语言用来表达算法。如果为了不学习编程语言而将验证工作全部由教师代劳,那么学生就无法感受真实的验证。

    计算模型、算法、程序这一线索从抽象到具象反映了采用计算机求解问题的逻辑路径。计算思维的培养,依据认知规律,应该是从具象到抽象理解这一逻辑路径,最终在大脑中形成计算模型。一个具备计算思维的人,能够在大脑中运用建立的计算模型运行程序或算法或操作序列,即先行于计算机在大脑中运行,并且能够将正确的执行步骤与要求准确表达与构造,从而实现用计算机求解问题。

    从简单到复杂、从具象到抽象是学习的一般规律。随着年龄的增长、认知水平的提高、计算机学科教学的不断深入,学生对计算模型的理解也会越来越全面。初学者掌握了编程工具,在大脑中建立的计算模型会是一个能够运行程序的相对具象的思维模型。

    由Robert Sedgewick等编写的《算法》一书指出,采用Java编程语言来学习算法的原因是:①程序是对算法精确、优雅和完全的描述;
    ②可以通过运行程序来学习算法的各种性质;
    ③可以在应用程序中直接使用这些算法。相比用自然语言描述算法,这些是重要而巨大的优势。

    考察高校计算机专业教学对中小学开展计算机学科教育有一定的启示。大部分高校计算机专业都在大学一年级开设程序设计基础课程,其目的为:①能够使专业初入门者直观感受计算机自动化的工作原理,为理解抽象的计算机学科思想方法做心理建设;
    ②掌握一种学习数据结构、编译原理等计算机学科后续课程的学习工具,因为这些课程的学习内容都涉及编程。

    在后续课程中,涉及的算法有可能会用伪代码甚至直接用自然语言描述,而不使用具体的编程语言。但由于学生已经有了编程基础,他们在学习这些算法的时候,可以用自己大脑中建立的计算模型运行这些算法。“在大脑中运行”正是计算思维的关键素养。与此同时,上述课程一般都会将编程实现作为作业要求学生在课后完成。

    采用特定的编程语言学习算法,存在的明显缺陷是将算法思想从具体编程语言实际细节中分离变得困难。Robert Sedgewick教授在《算法》一书中采取的策略是使用Java的一个子集,而这个语句子集只使用了大多数现代编程语言都能充分描述算法所必需的语法。

    在基础教育开展编程教学的实践中,已经出现了不少解决此类问题的策略与方法,其中,图形化、积木式编程平台可以在一定程度上避免学生对编程语句细节的机械记忆与过多关注。并且,编程积木块功能的学习,本身就是在形象化地学习程序执行流程,即算法的分支、循环结构。在这样的编程平台上,用形象的积木块拼接来表达学生可以理解的生活事件的执行流程,并且可以直接运行,其具体、直观的特点,符合低龄学生的学习要求。

    受早期编程教育的影响,仍有一些教师将编程教学与程序员培训等同,从而排斥编程教学的作用。开展编程教学不是程序员培训,也不单是为了方便理解算法,重要的是体会实现程序运行的过程原理,让学生在面对问题解决时,厘清思路、方法与手段,并规划好步骤,一步一步地完成任务本身,以此形成一种类似于计算机程序工作中的流程,形成一种思维方式,从而提高学生在解决问题过程中的思维逻辑性。

    第一,算法教学与计算思维的关系问题。目前学界对计算思维的定义仍然存在争议,而在中小学计算思维教育实践中,是否应该把算法学习的全部内容都归类为计算思维培养,甚至把计算思维教育等同于计算机学科知识学习,是一个值得探讨的问题。随着算法教学中大量生活算法的引入,其算法策略与方法都是来源于生活常识或数学等其他学科。正如同随着教育数字化转型,数字化学习的普及,学生数字化学习能力培养渠道也普及化一样,计算思维概念外延的不断扩大,随之而来的是众多学科都成为计算思维培养的阵地。不否认其他学科的学习以及学生年龄增长、认知水平提高对计算思维的养成有贡献,但计算思维培养的主渠道是什么,应该发挥怎样的作用非常值得思考。

    第二,在算法教学中使用流程图表征算法的问题。流程图是一种思维可视化的工具,长期以来广泛应用于中小学的算法教学。正因为是一种思维表达工具,学生应该能够运用流程图在短时间内有效表达思想。但在教学实践中,流程图绘制规范的要求明显增加了学生思维表达的负荷,限制了学生思维的发展。另外,有些算法,或者面向对象程序,用常规的程序流程图表示并不合适。从一些教师调研的结果来看,确实有不少学生是将待解决的问题在大脑中直接形成用程序表征的算法,并且可以“在大脑中运行”。重新定义流程图在算法教学中的地位以及探究其使用策略,以促进学生思维发展也是值得思考的。

    第三,如何让中小学生喜欢算法学习的问题。义教数学课标把“对数学具有好奇心和求知欲,了解数学的价值,欣赏数学美,提高学习数学的兴趣”列为课程总目标值得借鉴。学生的内在驱动力是发掘学生潜力、实现学生自我价值的必要因素。只有当学生具有内在驱动力时,学习才是高效和高质量的。因此,为学生创造积极的学习体验,鼓励学生保持好奇心,通过创造表达自己是激发学生内在驱动力的重要途径。

    正如Robert Sedgewick教授所说,程序是对算法精确、优雅和完全的描述。如果受硬件装备或其他因素制约,学生无法上机编程操作,那么开展纸上谈兵式的算法教学,则是一种无奈的选择。计算思维教育最基础的目标,是让学生体验、理解、实际应用、迁移这样的观点:在大脑中建立计算模型,在大脑中先行设计算法并运行正确,然后明确告诉计算机每一个操作步骤,使计算机能够机械地自动化执行。

    猜你喜欢 煎蛋编程算法 玩游戏学编程,Blockly Games上手玩电脑报(2020年31期)2020-08-20纺织机上诞生的编程数学大王·低年级(2020年3期)2020-03-12Travellng thg World Full—time for Rree阅读与作文(英语初中版)(2019年8期)2019-08-27编程屋完成数百元万天使轮融资中国经济信息(2018年21期)2018-11-29平底锅上的煎蛋艺术意林·少年版(2018年14期)2018-08-14厨房“神器”学苑创造·A版(2018年7期)2018-08-07煎蛋的艺术阅读(低年级)(2018年11期)2018-05-14学编程,先画画知识就是力量(2018年4期)2018-04-13学习算法的“三种境界”中学生数理化·高一版(2017年1期)2017-04-25算法框图的补全中学生数理化·高一版(2017年1期)2017-04-25

    推荐访问:计算 算法 容器

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章