基础课与创新能力

时间:2022-10-03 12:36:32

基础课与创新能力

创新能力、素质教育属于当今教育领域最为热门的话题了,从学龄前到大学教育,无不积极探索和尝试。这着实是一件可喜之事。然而对于“能力”、“素质”的内涵,却是众说纷纭。其实这的确没有一个放之四海而皆准的定义,在不同的教育阶段、不同类型的学校,根据不同的培养目标,能力和素质的侧重点也是不一样的。本文结合作者在清华大学的教学实践,着重分析在大学本科计算机程序设计的基础课中,如何培养学生的创新能力。

一、创新能力乃天赋潜能

说到创新能力,往往总觉得是少数精英才具备的。其实创新能力正是人类与生俱来的能力。创新能力不是空中楼阁,而是实实在在体现在学习能力和工作能力之中。学习能力是一个人获取新知识、新信息,掌握新理论和新方法的能力;工作能力是发现问题、分析问题和解决问题的能力。而创新,就是要发现别人没有发现的问题和现象,得出别人没有得到的、与众不同的分析见解,研究出新的理论和方法去解决问题。

从呱呱坠地开始,孩子就睁大探寻的眼睛,不断地认识周围的世界,对一切新事物充满好奇,无所畏惧地去尝试一切,对于玩具也总有自己独特的新玩法,总有拆开重新装配的欲望。但是,后天的教育、前人的经验不断地束缚了这种创新意识。我们现在已经意识到这一点,所以大力提倡培养创新能力。其实不如说是保持天赋的创新能力,至多是发掘人类本身所具有的潜能。当然,我并不是说中规中矩的教育和学习前人的经验不重要。无以规矩不成方圆,前人的经验也是前人创新探索的结晶,绝对是珍贵的。只是以什么样的观点和思想方法去学习甚为重要。

二、创新能力的培养关键在于教育思想,基础课至关重要

在大学的课程中,谈到创新能力培养,便自然联系到先进的实验设备、前沿的科学技术、尖端的研究项目。诚然,这些对于培养学生的创新能力非常有益,但是并非只有具备这些条件才能培养学生的创新能力。同时这些也都只是外在的条件,教育思想和观点才是最主要的。在强调培养学生能力的今天,我们采用了诸如网络教学、实践教学、案例教学、项目训练,等等新的方法和手段,更多的方法和手段仍在不断涌现。然而这些都只是外在的形式,形式必须为思想和目标服务才有意义。有了正确的教育思想,在任何条件下以任何形式都能够充分保护和发掘人类的创造性潜能。如果教育者的思想首先受到禁锢,那么一切的先进设备、优越条件便都会成为协助禁锢的工具。反思一下,为什么在自然科学如此发达的今天我们却感到了学生创新意识的危机?

人类创新意识和能力的保护和发掘,开始得越早越有益,这也正是我们现在从小提倡素质教育的原因之一。在大学教育阶段呢,基础课相对而言对于创新能力的培养起着最为重要的作用,这一点却常常被忽略。一谈到创新,往往首先想到要通过什么样的尖端课题培养优秀的博士生,要让教师和学生在世界顶级刊物发表优秀论文。而基础课,总是被认为与创新不沾边,只是传授知识、奠定知识体系结构的基础,这其实正是基础课教育不被重视的原因。

在学前教育、基础教育阶段,在大学的基础课学习阶段,培养创新能力的关键在于引导学生发现和运用自身潜在的创新精神,养成思想不受禁锢,勇于质疑,敢于探索,善于动手实践自己的独特想法的基本素质。如果说基础教育阶段是从人文角度对这种基本素质的全面培养,那么大学的基础课阶段,就是从专业角度,对创新意识在专业领域的延伸起着关键作用。如果没有这种基础的奠定,在专业研究领域进行创新便成为空谈。

三、学习能力是创新能力的基础

要创新,首先需要站在巨人的肩膀上,要学习、掌握现有的科学与技术。而学习过程中采取的观点和方法是关键。

以计算机程序设计类的基础课为例,这样的课程一般都是安排在大学一年级。我们要向学生讲授程序设计语言、程序设计方法、算法,以及函数库/类库中对常用算法的实现。如果只是要求学生学会这些现有的理论和已经实现的技术,并且达到熟练运用,那么我们就是在扼杀学生的创造性。为什么这样说呢?因为如果他不知道有这些现有的成果存在,他发现需要解决的问题时总会想办法去解决,而创造就发生在“想办法解决”中。但是现在老师告诉他:现在有实现技术了,你学会用就可以了,他便不再质疑、无需创造了。如果每一门基础课都这样,学生也就习惯于拿来使用,丢掉了创新意识。

这样说,并不是不要学习。如果不学习,就丢失和浪费了前人的创造。如果一切总是从开天地研究起,人类就会永远停留在懵懂和愚昧状态。只是学习的时候,不能迷信任何理论,不能依赖任何技术实现。要有独立的见解和立场。比如介绍一种程序语言时,首先要以发展的观点来介绍。这类课程和教科书上一般都会介绍计算机程序语言的发展历程、程序设计方法的演变,可是很多老师只是将这些作为开场白,学生也只是听热闹、听故事而已,这就没有达到目的。介绍历史和发展,最主要的是向学生传授一种发展的观点,让学生知道每一种新的理论、方法、技术都是为了解决什么问题而出现的,还要启发学生,未来他将面临更多、更复杂的新问题,那时候,他应该去发展新的理论、方法、技术,去解决新的问题。

在讲解程序设计语言的语法时,如果仅仅讲解和验证语法,学生会越学越烦,会觉得语法太多、记不住,会连学习兴趣都失去了,更谈不上什么培养创新能力了。所以应该首先提出一些新的问题,让学生思考如何解决,当学生发现用已经学过的语法不能解决,或者不方便解决新问题的时候,启发学生:如果是你来设计编程语言,你希望设计什么样的语句用来解决这种问题呢?这时学生会有各种各样的见解。让大家充分思考,然后引出新的语句,同时说明,这只是一种设计,目前来说相对比较合理,但是随着新问题的出现,语法还会不断发展的。

在基础课中要鼓励学生去反思、去批判现有的程序语言,要珍惜学生在学习过程中迸发的创新火花。比如经常会有学生质疑,为什么一定要这样写?为什么那样写不行?如果老师简单地回答:这是语法规定,你必须遵循,那样就阻止了学生质疑,而质疑正是创新的萌芽。所以应该首先肯定学生的质疑精神,然后告诉他:既然这种语言是被广泛采用的国际标准,就一定有它的道理,但是要真正明白其中的道理,你还需要深入学习其他课程,比如编译原理。你的疑问先留着,等你首先理解了这个语言背后依据的理论和实现技术,你再深入质疑。那时候如果你有更好的观点,可以通过标准组织的途径,给国际标准提出修改意见,或者设计出一种新的编程语言。这样,学生就会愿意去深入学习现有的知识,但是又不迷信任何权威。

在程序设计基础课中总要介绍一些常用算法的,但是又没有时间详细地讲算法理论,因为后续还有计算方法和数据结构课程。这时切忌让学生死记硬背书上的算法,对每一个简单算法,都要让学生理解为什么是这样设计的,而且要鼓励学生自己设计出不同的方法。这时有些学生就会写出各种不同的算法,那就引导他简单地从时间、空间效率,程序的可读性等比较明显的角度去评价、对比不同的算法。告诉学生,如果将来你解决新问题时,没有现成的算法,或者分析了现有的算法不能满足你的要求,那你就需要自己研究新的算法了,这就是创新。这时学生好像豁然开朗:原来创新并不是什么遥不可及的事情!

四、发现问题和解决问题是创新的开始

所谓创新,直白来讲,就是发现了新的需要解决的问题,在广泛研究了现有的理论和方法以后,认为不能解决,或者解决得不够好,于是去研究新的理论和方法。所以要能够创新首先必须善于发现问题、勇于解决问题。这种素质也必须从基础课开始培养,如果在基础课中学生习惯了只完成老师规定的作业(包括大作业),那么做研究的时候要他自己选方向、选题目,就会感到突然和茫然。

在几门程序设计课程中,我都是让学生自己选题、设计大作业。从开学初就让学生自己去发现有什么问题需要用计算机来解决,然后通过课程的学习逐步设计解决方法,并实现。在整个过程中,学生要经历选题(通过调研发现问题)、设计、实现、测试、答辩。当然,由于所学的知识有限,很可能只能解决整个问题的一小部分。但是学生学会了如何去发现问题、分析问题和解决问题,这是学习如何研究的开始。如果仅仅完成规定题目的大作业,学生只是完成任务,至多达到技术培训的目的。

五、学术道德是科学研究的基本素质

创新实际上应该是一个很自然的过程,对于“新”的探索和研究应该是发自内心的,没有太多功利的。事实上一些伟大的科学家只是出于对科学的热爱、对自然界的执著探索去进行研究,正是这样的研究成果为世界创造的巨大了财富,为人类带来了广泛的利益。学生从学习阶段开始,对研究就不能抱有功利心,而应该有更多公益心。只有这样,将来在研究工作中才能够真正尊重科学、尊重他人的成果,才能严谨、诚实,才能做出真正有价值的研究。相反,如果在学习基础课的时候,可以为了分数不择手段,那么将来在研究工作中为了沽名钓誉也会不择手段。

所以在基础课中,培养学生良好的学术道德便是一个重要任务。但是这种培养不是通过说教,说教是没有用的,要通过教学过程中的每一个环节,去养成。说到这里,不得不说现在我们整个社会对于养成学生诚实、善良的品格所发挥的正面作用不够,以至于在大学的基础课里还要去认真培养诚实与善良。如果在大学本科还不培养的话,那么进入研究工作以后,个别人的学术道德就很成问题了。

在大学里,学生之间抄作业,请别人作业,抄袭论文,考试作弊等现象时有发生。虽然各个学校的管理制度越来越严,但是个别学生还是会铤而走险。在基础课中,学生数量很大,而教师人力却很少,一味地靠监管实际上并不可行。而如果采用正确的引导,往往会收到很好的效果。有时候学生违规,是因为不知道什么是正确途径,是因为没有勇气承担自己的失败或失误。比如就抄作业这一现象来说,有些学生就是不会做,实在完不成作业。原因呢,可能是没认真学,也可能是能力有限。但是他不想因此而丢分,或者不能承受丢分这个事实,又不认为抄袭是欺骗,所以他抄作业。在我的课上,我允许学生借鉴别人的作业,但是要明确注明借鉴了谁的,如何借鉴:全抄并且没看懂、抄了并且看懂了、抄了以后看懂了自己又作了修改(注明修改之处)。然后建议他一定要将这些题目真正学会。

在完成大作业和学期论文的过程中,更要引导学生正确引用别人的成果。鼓励学生就自己的选题广泛查阅资料,借鉴已发表的论文和网上开放源码的程序,然后在这个基础上做出自己的创新或改进。同时在源代码中、在报告和论文中要清除准确地注明引用出处。这样学生就学会了如何合法地使用现有的成果,并在前人的研究基础上创新。

做老师的都遇到过,有些学生考试不及格就以各种方式向老师求情,有送礼的,有痛哭流涕的,还有与老师争吵的。看到这样的学生,我觉得非常痛心。不是因为他一门课没学好,而是因为他不能承受这小小一点失败,却要求老师与他合谋弄虚作假让他逃过这一劫。遇到这样的学生,我就帮助他学会接受失败。失败的经历也是一种锻炼,接受失败,跌倒了自己爬起来也是必须的素质。因为在学生将来的研究工作中失败一定多于成功,伟大的成就都是建立在众多失败的基础上的。如果一个研究者不能接受失败,如果失败了就想到用虚假手段蒙混,那注定是不会得到真正有价值的研究成果的。

基础课很重要,这似乎总挂在嘴边上却又总得不到落实。通常认为基础课只是单纯积累知识基础的,老师只要将知识讲清楚就可以了,基础课中的教学研究在大学里是不算研究工作的,甚至不算是工作。这是因为,基础课与以后的研究工作的关系,基础课与创新能力的关系没有没广泛认识。在大学的基础课中,重视创新能力的培养不是太早、而是太晚了,这本应该是从幼儿教育就开始并贯穿始终的。那么现在我们这些教基础课的老师,应该首先将基础课教学与创新能力的培养结合起来,认真研究其中的理论和规律。这是造福学生、造福未来的事情。

上一篇:营造使用计算机教学的安全环境 下一篇:网络课程在独立学院教学中的应用