镇江船艇学院信息技术教研室 杜晓静 何秋燕 杨 珍
以计算思维为导向的程序设计基础教育探索
镇江船艇学院信息技术教研室 杜晓静 何秋燕 杨 珍
本文简要介绍了计算思维的概念和特征,从程序设计理论和实践教学入手, 探讨对学生计算思维能力的培养。
教学;程序设计;计算思维
2010年“第六届大学计算机课程报告论坛”中,陈国良院士指出,计算思维能力是大学计算机基础课程教育过程中一个重要的培养目标。人类科学发展的三大支柱是理论科学、实验科学和计算科学,与之相对应的是人们认识世界、改造世界的三种思维方式,即理论思维、实验思维和计算思维[1]。
程序设计基础课程是高校非计算机专业必修的公共课,教学目标是培训学员的基本编程能力、逻辑思维能力和抽象思维能力。当前程序设计基础的教学中存在如下两个主要问题:第一,学员的计算机理论知识储备不够,没有成体系的专业知识结构,因此,学员对计算机的“思维方式”与传统解题方式的区别难以理解,接受较慢。第二,在实践中出现“重结果、轻过程”,“重编码,轻算法”的现象。学员往往把学习重心放到基础语法的学习上,全神贯注于看到程序“运行结果”,不注重从宏观的角度总结问题,也不注重求解的构建过程,忽略了思维方式的锻炼。因此,在教学中的首要问题应该是培养学员的程序设计和计算思维能力。
目前国际上广泛认同的计算思维定义来自美国卡内基·梅隆大学的周以真(J.M.Wing)教授,周教授于2006年提出:计算思维是运用计算机科学的基础概念进行问题求解、系统设计和人类行为理解,它是涵盖计算机科学之广度的一系列思维活动[2]。计算思维的本质是抽象(abstraction)和自动化(automation)[3]。抽象是通过简化、转换、递归、嵌入等方法,将一个复杂问题转换成许多简单的子问题并进行求解的过程,这是所有科学发现的必然过程;自动化是充分利用计算机运算能力来实现问题求解,以弥补人的计算缺陷,这将丰富计算机的应用范围。因此计算思维是一种形式规整、问题求解和人机共存的思维。
需要指出的是:计算思维不是侠义的计算,而是运用计算机基本概念去求解问题、设计系统和理解人类的行为[2]。
思维方法比知识本身更重要,作为从事计算机基础教学的一线教师,应该在日常教学中潜移默化地训练和培养学员的计算思维能力,提高他们的计算思维素养,从而进一步培养和锻炼学员的创新能力。
教师对学员进行直接教学指导产生应该保证基于计算思维,然后再运用其它教学手段和方法来辅助和引导学员进行知识点的构建和学习问题的思考与解决。通过计算思维的一系列方法——递归,关注点分析,抽象和分解,保护、冗余、容错、纠错和恢复,利用启发式推理来寻求解答,在不确定情况下的规划、学习和调度等,达到引出问题,深入探究、找寻答案,讨论交流、得出结论,反思自评、内化知识的目的。当学员掌握了知识点的同时也掌握计算思维方法之后,再通过已获得的知识和方法自主建构学习的知识和学习的框架,相互间交流协作,同时运用计算思维方法达到迁移拓展科学知识的目的。在这整个学习过程中,所有的学习过程都通过一系列基于计算思维的学习方法展开。
程序设计基础课程是理论与实践并重的课程,在实际教学过程中两部分的教学都必须以面向计算机思维为导向,否则该课程的教育就是不完善不成功的。
将计算思维与程序设计课程教学的结合主要体现在两个方面:首先要保证在整个教学过程中要贯穿抽象和自动化这两个核心思想,其次要根据讲授的具体知识点恰当地引入计算思维中所有的其他基本概念和思维方法。
传统教学一般是先讲解本次课所学语法的基本结构,接着讲解具体的例子,最后总结、布置作业的过程。从计算思维的角度出发,教学内容采用“问题导入语法、语法引入应用、应用面向实践”的方式,突出知识点与技术点的关联性,注重内容在应用上的层次性。
以循环结构为例,该结构要求程序根据对某个特定条件的判断来决定是否重复多次进行某一特定的相同操作。教学可分以下几步进行:
①初始时结合学员日常生活举例:列队报数,没有报到队尾时每名学员要在前一名学员数字上加1后大声报出,使整个教学显得过渡自然,给同学们展示了现在所学的知识已经实实在在存在于我们的日常生活中,不仅可以拉近与他们的距离,更重要是让他们觉得所讲授的内容比较简单,为后续教学活动的开展埋下了伏笔。
②采用抽象的方法,提炼出循环结构的基本结构,然后再引入学员中学就已熟悉的等比数列;接着把等比数列前n项求和的算术问题转换成对应的循环结构,这样不露声色把数学的思想灌输给学员。
③在学员已经基本掌握的基础上,再增加一次实践的机会,给出现实生活中一个例子:如求班级平均分问题;鼓励学员积极思考,同时引入计算思维的约简、嵌入、转化等方法,把复杂的问题转分解易于解决的问题并加以实现。
④再进一步拓展,从问题入手,例如:九九乘法口诀表,引入多层循环嵌套结构,着重分析基本结构与多层循环嵌套结构的异同和适用的范围,使整个知识点链自然形成。
在整个教学过程中,运用问题诱发学员使用抽象的思想和方法,学习用抽象方法去表达自己的想法并建模,能够透过现象看本质,通过持续的训练达到完全掌握抽象这个工具。
计算思维目前是程序设计类课程教学关注的热点。最终目的是提高学生的程序设计能力和分析解决问题的能力。因此,我们要充分认识到计算思维的重要性。在教学的实施过程中要突出运用计算机知识解决问题的思想,培养并训练学生运用计算思维去思考并解决问题。
[1]陈国良.计算思维与大学计算机基础教育[R].济南:第六届大学计算机课程报告论坛,2010.
[2]Jeannette M W.Computational Thinking[J].Communications of ACM,2006,49(3):33-35.
[3]董荣胜,古天龙.计算思维与计算机方法论[J].计算机科学,2009(1):1-4.
[4]贾茹,郝长胜,裴衣非.VB程序设计课程的计算思维教学实践[J].电脑知识与技术,2011(25):6266-6268.
[5]吴绍兵.计算思维和程序设计能力的培养[J].计算机教育,2011(16):11-4.
[6]周显春,刘东山.基于计算思维能力培养的程序设计课程教学研究[J].电脑知识与技术,2012(35):8475-8477.
杜晓静(1975—),女,镇江船艇学院讲师,研究方向:网络安全。
何秋燕(1981—),女,镇江船艇学院讲师,研究方向:网络安全。
杨珍(1977—),女,镇江船艇学院讲师,研究方向:分布式数据库。