周显春 刘东山
摘要:当今社会人才的竞争,其本质是知识的竞争,更重要的是能力的竞争。该文从程序设计理论和实践教学入手,探讨对学生计算思维能力的培养。基于计算思维能力培养的程序设计课程教学对培养学生学习兴趣和提高其程序设计及编程实践能力,尤其是培养学生的创新能力能够起到重大的作用。
关键词:教学;程序设计;计算思维;能力培养
中图分类号:TP3 文献标识码:A 文章编号:1009-3044(2012)35-8475-03
程序设计课程已成为国内外高校计算机及相关专业必修的核心专业基础课程。在该课程的教学中,不仅应让学生学会程序设计的相关知识,使学生能够掌握程序设计的编程技巧,更应激发学生对它的兴趣,在此基础上培养学生自主探求新知识、解决问题的新方法的能力,从而提高学生的实践与创新能力,培养与社会发展相适应的应用型人才。计算思维具有强大的创新能力[1]ACM和IEEE-CS在修订后的计算机科学教程2008(ComputerScienceCurriculum2008)中明确指出应该将计算思维作为计算机科学教学的重要组成部分[2]。中国科学院院士、中国科学技术大学陈国良教授指出[3]:在大学中,计算思维不仅能振兴大学计算教育,而且会令科学与工程领域创造出革命性的研究成果。把计算思维理念引入程序设计课程的教学过程中,探索以培养计算思维能力为核心的新教学模式,在教学过程中以程序设计知识为载体,融合计算思维能力和素质的培养,着重强调创造能力和适应能力的培养,为程序设计的课程教学提供新思路。
1计算思维
当前,计算思维是一个非常受关注的涉及计算机科学本质问题和未来教育走向的基础性概念。这一概念最早是由麻省理工学院(MIT)的SeymourPapert教授在1996年提出的[4],但是把这一个概念提到前台来,成为现在受到广泛关注的代表人物是美国卡内基梅隆大学(CMU)的周以真教授(JeannetteM.Wing)[5]。计算思维提出了一系列解决问题的观点和方法,这些观点和方法有助于人们更加深刻地理解计算的本质和计算机求解问题的核心思想。
根据JeannetteM.Wing等人的设想[6],一个已经具备计算思维能力的人,如果他遇到了一个问题,他能够理解其哪些方面是可以计算的;能够使用相应的计算工具或技术进行评估,能够理解计算工具和技术所具有优点和缺点;能够用它去解决新的问题;能够抓住使用新的计算方式的机会;能够在任何领域应用采用相应计算方法。而对于已经具备计算思维能力的科学家、工程师以及其他专业人士来说,应该能够创新的计算方法来解决具体的专业问题,能够通过对海量数据分析而得到新的科学发现,能够提出之前没有想过或者由于问题的规模不敢提出但能够用计算思维进行处理的问题,能够使用专业的术语对问题及其解决方案进行解释等等。
由以上可知,抽象和自动化是为了培养学生的计算思维能力的核心内容,最能够体现计算思维的本质;因此,在教学过程中应该有意识地强化学生对计算思维的基本概念和思维方法的理解和掌握。其实,国内外教育者很早就已经开始重视计算思维的基本概念和思维方法;在ACM和IEEE-CS联合攻关组制订的计算教程CC1991(ComputingCurricula1991)中已经提取出了计算机学科的12个核心概念[7],包括:概念化和形式化模型、大问题的复杂性、抽象层次、折中和结论、一致性和完备性、效率、演化、按空间排序、按时间排序、重用、安全性、以及绑定等。这些思想、方法和原则是计算思维中最核心的内容,不断强化学生对这些概念的理解和掌握是我们今后教学的全部任务。
2基于计算思维的程序设计课程教学
2.1课程的引入
在讲授这门课程之前,首先要告诉学生,学会基本的编程不是本课程教学的重点,对他们的计算思维能力和创新能力的培养和训练才是核心;他们在经过半年多的系统学习后,不仅要掌握程序设计的基本知识结构,更为重要的是系统的计算思维能力和创新能力的训练能够为后续的专业课程的学习打下良好地基础。对本专业学生而言,不仅要掌握程序设计的相关知识,更为重要的是在具体的专业应用中能够使用这些知识构建出与具体环境相适应的的计算方法能力;从而为后续计算机的专业知识的学习做铺垫;对非计算机专业学生而言,学习程序设计的目的不是成为一名优秀的程序员,而是学习对于现实生活中的问题能够进行抽象、理论和设计,即能够分析、解决问题,这种能力的训练我们可以通过算法和计算机语言来实践计算思维的训练过程,从而达到对学生们的理性思维和逻辑思维的培养,促使他们养成一个良性的缜密思维习惯。程序设计是对学生进行思维训练的最直接、最具有操作性的平台。总而言之,从计算思维角度出发进行程序设计课程教学可以较好地达到以下目的。首先,能够告诉学生该课程的重要性,让学生能够从宏观上了解该课程在他们专业课程体系中所处的位置。其次,能够让学生知道学习该课程的最终目的,即培养通过对日常问题的构建抽象模型并在其基础上构造算法和解决问题的能力。最后,能够纠正学生普遍存在的认为程序设计就是培养学生的编程能力的错误认识,其实是通过程序设计培养他们的计算思维能力才是本课程的最终目的,这种能力才是大家应该具备的核心竞争力,从而激发他们对该课程的学习兴趣。
2.2教学过程
将计算思维与程序设计课程教学的结合主要体现在两个方面:首先要保证抽象和自动化两个核心思想贯穿于整个教学过程,其次还要根据讲授的具体知识点恰当地引入计算思维中所有的其他基本概念和思维方法。下面从理论教学和实践教学中分别挑选一个教学实例进行阐述。
2.2.1理论教学
在结构化程序设计中,常常要求程序根据对某个特定条件的判断来决定下一步要进行的操作,这种结构称为选择结构,即在两条或多条可能的路径中选择其中的一条。传统教学一般是先给出选择结构的基本结构,接着讲解具体的例子,最后总结、布置作业的过程;但是,从计算思维的角度出发,科学的方法应该从观察开始,应该带着问题观察,教学可以从日常生活中一个简单的例子开始引入,例如:双周的周四一二节有计算机课而单周周四一二节则没有课,使整个教学显得过渡自然,给同学们展示了现在所学的知识已经实实在在存在于我们的日常生活中,不仅可以拉近与他们的距离,更重要是让他们觉得所讲授的内容比较简单,为后续教学活动的开展埋下了伏笔,这一点对非理工的学生尤其重要,可以说事关教学的成败。在此基础上,采用抽象的方法,提炼出选择结构的基本结构,水到渠道,然后再引入高中所学的分段函数,这个也是很多学生熟悉的内容,可以说是初中已经接触的内容;接着把分段函数转换成对应的选择结构,这样不露声色把数学的思想灌输给学生,尤其克服了文科生普遍怕数学的心理。学生已经基本掌握的基础上,再给学生一次实践的机会,给出现实生活中一个例子:如求邮费问题;鼓励学生积极思考,同时引入计算思维的约简、嵌入、转化等方法,把复杂的问题转分解易于解决的问题并加以实现;做完这一步后,再进一步拓展,从问题入手,例如:考试成绩的评级,引入多分支选择结构,着重分析基本结构与多分支结构的差异和适用的范围,使整个知识点链自然形成。在教学过程中,运用问题诱发学生使用抽象的思想和方法,学习用抽象方法去表达自己的想法并建模,能够透过现象看本质,通过持续的训练达到完全掌握抽象这个工具。
2.2.2实践教学
理论教学完成后,学生能够听的懂,只能说明跟得上教学进度,还不一定用得上,更不要说带的走。要完全地掌握一种思维方法,仅靠课堂理论教学是远远不够的。实践教学是巩固理论知识、积累实践操作经验、完全掌握计算思维方法的必由之路。在实践教学中,重点训练学生对计算思维方法的运用、探索解决实际问题的能力;它是对课堂教学强有力的补充,也是对计算思维方法更好地吸收和巩固。为了实践效果更好,可以将实践过程细分为验证实验、探索性实验等形式,激化学生积极参加探索、探索的欲望。在实践之前,要布置精心设计好的有梯度的实验题目给学生作为课后作业,,先让学生利用课余时间独立运用所学计算思维方法完成;然后,带着独有的见解和疑问去进行实践操作,让计算机对他们的见解进行验证和对疑问进行解答;最后,教师对各种情况进行以分析、总结,进一步深化学生对计算思维思想方法的理解。例如:函数参数的调用的问题对学生来说不好理解,地址传递和值传递,给学生一种直观感受,还不能形成一套能够解决此类问题的方法,即还没有达到计算机思维自动化的要求。这时,结合计算思维的关注点分离的方法,可以在实验教学时,设计不同的实验,既有地址的,又有值传递的,还有综合的,还可以结合由浅入深的方法,将实验分为验证型、综合型和研究型三种类型的实验。验证型实验要求学生能够使用老师所教的思维方法完成实验内容;设计型实验综合运用多种计算思维方法来分析问题和解决问题;研究型实验则结合具体本专业的特点布置小型项目的课程设计题目,由学生自组小组分工合作,不仅培养了学生灵活运用所学知识的能力和团队合作精神,更能够培养学生自主发现、解决问题的能力和积极探索、创新能力,是计算思维方法进一步升华。
3结束语
将计算思维培养贯穿到程序设计教学之后,可以更好的对学生计算思维能力的培养,培养学生用计算思维来思考、解决问题的能力。量变到质变需要一个过程,这就需要授业者能够高瞻远瞩,能够从培养学生计算思维能力的角度来看待所教讲授的课程,能够将计算机思维的方法贯穿于程序设计相关的知识点的讲解中。
总而言之,,计算思维对新时代人才培养提出了新的培养要求,我们需要从更深层次重新认识并审视程序设计对于学生计算机思维培养的重要性,积极建立与之相称的计算机教学课程体系;另一方面,教师要不断提高自身业务素质,以计算思维能力的培养对学生素质培养的重要性为契机,加强对计算思维能力教学方法的研究。
参考文献:
[1]牟琴,谭良.计算思维的研究及其进展[J].计算机科学,2011(3):10-15.
[2]常亮,徐周波,古天龙,等.离散数学教学中的计算思维培养[J].计算机教育,2011(14):90-94.
[3]陈国良,董荣胜.计算思维与大学计算机基础教育[J].中国大学教学,2011(1):7-11,32.
[4]SeymourPapert.AnExplorationintheSpaceofMathematicsEducations[J].InternationalJournalofComputersforMathematicalLearning,1996,1(1):95-123.
[5]WingJM.ComputationalThinking[J].CommunicationsofACM,2006(3):33-35.
[6]JeannetteM.Wing.ComputationalThinking:WhatandWhy?[EB/OL].[2010-11-17].http://www.cs.cmu.edu/~CompThink/resources/TheLinkWing.pdf.
[7]董荣胜.计算机科学导论:思想与方法[M].北京:高等教育出版社,2007:114-116.