当前位置:论文网 > 论文宝库 > 信息科技类 > 计算机应用论文 > 正文

探讨如何在教学和实践中融入计算思维

来源:UC论文网2017-01-07 10:44

摘要:

1研究背景 随着计算机科学领域研究成果的不断丰富和完善,计算机技术已经应用于非常广泛的领域,如普适计算、商业智能、计算金融学、计算生物学、计算物理、计算医学等,并且

  
  
  1研究背景
  
  随着计算机科学领域研究成果的不断丰富和完善,计算机技术已经应用于非常广泛的领域,如普适计算、商业智能、计算金融学、计算生物学、计算物理、计算医学等,并且与这些学科之间的交叉越来越深入。鉴于很多交叉研究具有较强的工程性质,单单依靠学术教育背景的传统研究型计算机人才是不可行的,所以培养能够快速地将计算机技术应用于某一领域,解决该领域具体计算问题的计算机应用型人才就变得非常重要。
  
  以往,在计算机与其他学科人员共同开展研究时,计算机专业背景的研究人员往往被视为“编程者”,他们往往专注于在计算机上编程,实现某个具体功能、设计数据库结构、在屏幕上展现查询结果或是以代码复用为目的搭建整个程序的框架。但随着计算机变得无处不在,使用计算机的难度越来越低,设计数据库、编写计算机程序和复用他们的难度也不断降低。这是不是意味着计算机专业背景的研究人员的重要性降低了呢?
  
  当然并非如此。事实上,这恰恰是计算机领域和其他领域的交叉研究从松散耦合型合作逐渐转向紧密耦合型合作的一个标志。计算机技术人员正在从单纯的编程实现脱离出来,从配角转为主角,逐步地改变各学科研究人员对各自领域的认识和思考方式。例如,机器学习已经改变了统计学,现在各个组织的统计部门都已经和计算机领域密切合作,以完成更具创造性的工作。
  
  这种现状要求计算机应用型人才不仅应该具有扎实的编程能力和计算机学科基础,同时应该擅长抽象和分解问题的计算思维(ComputationalThinking)。
  
  对于计算机应用型人才的培养来说,如何在教学和实践中融入这种计算思维,使学生能够将其作为他们职业技能的一部分,解决未来工作中来自交叉学科的问题,是本文探讨的主题。
  
  2计算思维
  
  计算思维一词由JeannetteM.Wing于2006年提出,其定义是:运用计算机科学的基础概念去求解问题、设计系统和理解人类行为。它包括了涵盖计算机科学之广度的一系列思维活动。
  
  典型地,通过对计算思维“是什么,不是什么”的分析,可得到以下特征描述:
    
        是概念化,不是程序化计算思维远不止意味着能为计算机编程,还要求能够在抽象的多个层次上思维。
 
        是根本的,不是刻板的技能
  
  根本技能是每一个人为了在现代社会中发挥职能所必须掌握的,而不是意味着机械重复的刻板技能。
  
  是人的,不是计算机的思维方式
  
  计算思维是人类求解问题的一条途径,但绝非要使人类像计算机那样思考。与枯燥且沉闷的计算机相比,人类聪颖且富有想象力。使用计算思维控制计算设备,就能用自己的智慧解决在计算时代之前不敢解决的问题,实现“只有想不到,没有做不到”的境界。
  
  是数学和工程思维的互补与融合
  
  计算机科学在本质上源于数学思维,像所有的科学一样,其形式化基础建筑于数学之上。计算机科学又从本质上源自工程思维,因为已经建造的是现实存在的硬件和软件,这些基本计算工具的限制又迫使人必须计算性地思考,不能只是数学性地思考。
  
  是思想,不是人造物
  
  不只是软件硬件等人造物以物理形式到处呈现并时时刻刻触及我们的生活,更重要的是接近和求解问题、管理日常生活、与他人交流和互动,计算的概念无处不在。
  
  是面向所有的人,所有地方
  
  当计算思维真正融入人类活动的整体,以致不再表现为一种显式哲学时,它就将成为一种现实。
  
  计算思维的概念一经提出就产生了广泛的共鸣。2007年,微软研究院资助美国卡内基一梅隆大学建立了计算思维中心,以寻找计算机科学与其他领域交叉研究的新方法。PatPhillips对计算思维用于计算机、物理、数学、社会学、语文、美术、生命科学等学科教学的一些基本策略进行了综述[3]。2008年,ACM公布的《CC2001计算机科学教学指导草案》也明确提出应该将计算思维作为计算机科学教学的重要组成部分。PeterB.Henderson还将计算思维与数学思维(MathematicalThinking)进行了类比,认为二者同等重要,应该在人生所有的受教育阶段培养计算思维的能力[5]。
  
  3计算思维的教学实践
  
  如何明确地将计算思维融入到课堂教学,以提高学生运用计算机知识抽象和分解问题的能力,是一个挑战。
  
  在计算机基础课程的教学实践阶段,我们对学生计算思维的培养进行了一些尝试。涉及了5项计算机科学基础概念,包括:
  
  分治算法
  
  将一个大规模的问题分解为数个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。
  
  数据级并行处理
  
  将要处理的大数据集分割为数个完全独立的小数据集,再均匀地分配到物理独立的多个计算单元(处理器核)中去完成处理,最后将处理结果合并。
  
  任务级并行处理
  
  将一个耗时的大任务分解为数个规模较小、性质相同或不同的子任务,这些子任务可以独立处理,互不影响。将每个小任务分配给一个线程执行,这些线程则被操作系统调度器分配到物理独立的多个计算单元(处理器核)中去。
  
  迭代和收敛
  
  对一组指令进行重复执行,每次执行这组指令时,都从结果数据的一组原值推出它的一组新值,如果这组新值不断接近于期望结果,称其为收敛。
  
  分支结构
  
  依据一定的逻辑判断条件选择执行路径的策略,关键在于构造合适的分支条件和分析路径和流程,根据不同的目标流程选择适当的分支语句。
  
  计算机基础课程的最后一个环节是完成一个Access数据库开发系统,在教学中分三种方式开展。一是学生个人独立完成,二是学生分组完成,这两种方式均是由学生确定目标、自由发挥的。第三种方式是教师讲解上述计算机科学基础概念的理念,并指导学生将这些计算思维融入实际开发过程。
  
  结果显示,采用第一种方式开发的系统功能比较简单,包含的错误较多。采用第二种方式开发的系统比第一组有明显的改观,能看出是在多名学生的共同合作下完成的,系统中引入了更加丰富的功能,但是也包含了更多的错误。究其原因,是加入丰富功能的同时使开发变得复杂,时间也变得相对紧迫,导致不能有质量地完成系统。
  
  本文主要关注第三种开发方式。按照融合计算思维的课程设计,首先由教师列出系统的几项主要功能,引导组长(由组员轮流担任)运用分治算法的计算思维指导组内的分工,将大的功能分为较小的功能模块,根据模块的复杂程度和组内的人员数进行分工,把一个复杂的系统的开发变成一系列子模块的开发。
  
  功能模块划分后,开始具体的开发,这会涉及到很多细节的问题,比如建立数据库的表、建立表之间的关系、录入数据及基于数据库的VBA操作等。建立数据库时,运用数据级并行处理的计算思维,让每个组员分别建库,再将库合并,以提高建库的速度。教师引导学生分析并行效率,即如果库表很少,导致分解库表、建立库表、传输库表和合并库表全过程的时间高于一个人建库的时间,那么这种并行处理就不值得开发实践。同时引导学生分析建立多大的库时才有必要使用并行处理方法,得到量化的结果。同时,运用任务级并行处理的计算思维,使建库与VBA编程同步进行,这里要特别关注分工的任务量均衡性,尽量在同一时间段完成任务。
  
  当各子功能模块均实现后,整个系统的原型就建立了,这个原型并不完善,需要教师指导学生理解迭代和收敛的计算思维,不断迭代地优化系统模型,直到功能性错误完全消除,性能方面的错误足够少,视为收敛,得到完成的系统。
  
  对于完成的系统,可以再采用分支结构的计算思维,对已完成的项目进行测试和排错,即按照输入数据得到输出结果,根据结果确定处理方式。
  
  结果表明,在同等时间周期和同样分组开发的情况下,第三种方式开发的系统不仅功能丰富,错误数量也大幅减少。这是由于第三种方式有意识地引入了计算思维,指导学生分解和处理问题的关键环节,得到了更好的教学效果。在接触和实践了计算思维后,学生可以将其思维运用于后续的课程,并逐步提高这种能力。
  
  4结语
  
  必须指出的是,与培养计算思维吻合的教学方法多年以来一直被朦朦胧胧地使用,只不过在计算思维概念被提出后,这些方法才上升到另一个高度。
  
  实践表明,将计算思维融合于教学实践提高了教学质量,提高了学生解决问题的能力,对计算机应用型人才的培养大有裨益。
  
  作者:任化敏\陈明2(1.北京中医药大学信息中心,北京100022;2.首都师范大学信息工程学院,北京100048)

核心期刊推荐