一、教学目标要定位在培养有创新精神的高素质人才
可能有的人会说,一门课程就提出这么高的教学目标,是否太高了。我们想,学生在校不过学30门课程,每门课程都不提,这个目标怎么实现?
科学技术在加速发展,不断会给教育提出新的需求,教育观念必须跟进。“教育必须培养人的自我决定能力,而不是培养人们去适应传统世界”;如果只是去适应传统世界,那就谈不上创新了。教育最重要的是要唤醒学生的力量,培养其自我性、主动性、抽象的归纳力和理解力。
已往的高级语言程序设计课程教学效果欠佳,不能培养人的自我决定能力,不能唤醒学生的力量,无法培养其自我性、主动性、抽象的归纳力和理解力。这是因为原来的教法是以高级语言本身为脉络展开的,过于注重语句语法,没有突出基本概念、思路和方法,难以调动学生学习的积极性。编程本身不是枯燥乏味的事情,原来的教法使学生感到乏味。怎样让学生感兴趣,怎样做才能唤醒学生的力量,提高学习的积极性,是该课程能否成功的一个关键。这就使得我们想到,一方面要在教学的理念上下功夫研究怎样以人为本,怎样在每一个教学环节上都想方设法去调动学生的积极性;另一方面,也要考虑新世纪对计算机学科教育提出的新要求。在计算机学科中,“构造性”和“能行性”是学科的最根本特征。按照这个学科根本特征的要求,需要加强基础理论的教育,由此强化学生“计算思维能力”的培养,而计算思维能力在较大程度上是以思维方式的数学化为支撑的。在程序设计基础课中如何培养学生的计算思维能力,加大抽象思维能力和逻辑思维方法的训练力度是我们教学研究的重点。
“程序设计基础”定位在什么地方?这是改革的关键。仅仅是教高级语言中的语句、语法当然不行。按照专家们下的定义:
程序设计 = 高级语言 + 数据结构 + 算法
对大一新生,在他什么都还不知道的情况下,教什么?怎么教?将基础打在哪?
我们在接手这门课时进行了深入分析,认为利用计算机这个先进的智力工具,编写程序以解决人们遇到的各式各样的问题,需要一种新的思维方式:计算思维,涉及编程的思路、基本概念和基本方法,重点是对问题进行符合逻辑的、科学的分析,找出解决它的抽象方法,抽象到数学层次上去。这是最基础的和最本质的。学生没有这种能力是写不出程序来的。为了培养计算思维能力,除了课堂上的电子教案重点讲思路、讲如何对问题进行抽象之外,还辅以比较多的需要动脑筋进行抽象才能解出的问题。在这一过程中,让学生加深对学习算法、数据结构的重要性的认识,也通过比较多的练习来熟悉和掌握C/C++的基本语句和程序结构。
在实践中我们体会到,计算思维不是只想不做,更不是纸上谈兵,计算思维是当今数学已经进入机器时代后,将计算机视为计算工具的思维。人们依托计算机编程环境,对所要求解的问题进行分析研究,将其抽象成数学模型,想出计算步骤,编程加以实现。可行与否,正确与否都须在机器上进行验证。想得对还必须做得对。因此,强化实践又是这门课所必需提倡的。这里,反映了理性思维和理性实践的辩证统一关系。
为了让学生明白该课程在人才培养计划中的地位和作用,我们在课堂中通过介绍一些已毕业大学生和在校博士生的体会,告诉同学,这门课程是理工科学生的一门“看家本事”,打好程序设计基础,对用好计算机这一“人类通用智力工具”,意义重大和深远。只有掌握好信息处理工具才能发挥出超凡的创造能力。同时,我们也把课程的主旨和教学设计原原本本告诉学生,让他们一上课就对该怎么对待,该怎么上有思想准备。
二、将知识、能力、素质融会贯通于教育的全过程
在课程中我们强调能力,不等于不注重知识,要建立知识是载体的概念,具有较强能力和良好素质的人,必须掌握丰富的知识;能力的培养与素质教育要部分地通过知识的传授来实施;能力和素质在许多场合下是通过知识表现出来的。
在课程中应该怎样传授涉及程序设计的知识?我们认为,应该推崇以探索为本的学习,鼓励将知识型教学改进为研究型教学。我们课堂上讲授的编程实例有多种思路和解法,鼓励学生百花齐放,各抒己见,标新立异。在平时的习题上,也有一些属于没有固定解法的提高题,让学生去探索好的解法,有时还让他们在全体同学面前交流。对于一些高手,也给他们构造不同级别的探索空间,引导他们在世界大赛的氛围中学习实践,取得经验,提高能力。
对程序设计课而言,编程能力是计算思维和技能化知识的综合体现。只记住若干语句而不会解决实际编程问题,谈不上有什么能力。计算思维正确与否也必须经过实践的检验。从编程这一特殊的课程要求看,要把知识运用的综合性、灵活性与探索性作为重要的内容,强调能力须以丰富的知识作为支撑,上机实践是既动手又动脑的过程,是编程能力赖以生长的土壤。不上机就没有能力提高的土壤。因此,我们提出强化实践环节,提出理性思维和理性实践,提出“你不是听会的和看会的,而是自己通过上机练会的”。上机编写程序去真的解决题目中的问题,体现了知识运用的综合性、灵活性与探索性。很多人觉得学习编程很难,我们觉得难就难在这个知识运用的“三性”上。怎样才能化难为易?强化上机实践是化难为易的金钥匙。纸上谈兵去解决这“三性”是不可能的。这也是我们为什么在改革课程设计时,要以强化实践作为突破口的根据。我们还认为,理论联系实际的学风在每一门课程中都应该提倡,这会对学生形成科学的唯物主义的世界观有好处。涉及计算机的课程大都实践性极强,特别是程序设计,纸上谈兵无异于自欺欺人,不动手实践绝对学不会。不引导动手,学生会很快感到乏味,很快知难而退。想方设法给他们创造动手的条件,帮他们解决动手时遇到的困难。在完成课业、解决一个个难题的同时,他们会有愉悦感和成就感。这里我们说让学生“感兴趣”,不仅是讲课内容和讲授方法要有“趣”,更重要的是让他们自己动手做事,题目做对了,有“愉悦感”和“成就感”。前面我们说过,编程能力是计算思维和技能化知识的综合体现,因此,能力的提高应该是训练的结果。我们将实践环节赋予训练的含义,有目的地训练学生以下五种能力:(1)读懂题目,找到问题,并将其抽象为数学模型;(2)构思算法步骤;(3)编写程序;(4)调试程序;(5)运行程序和分析所得结果,提出改进的意见。
在课程安排中怎样体现素质教育?我们认为,素质是知识和能力的升华。素质教育是以尊重学生的主体作用、主动精神,注重开发人的潜能,形成人的健全人格为根本特征的教育。素质教育要求学生在学校里学会“怎样做人,怎样做事,怎样求知,怎样健体”。虽然我们不是政治课,但是我们也可以在一些教学环节中发挥“教书育人”的作用。比如在课程中,我们提出“养成良好的编程习惯”这个教学要求,强调程序的可读性和规范性,让学生在作业中严格遵守下述原则:程序构思要有说明,变量要注释,程序要符合规范,严谨、认真、一丝不苟。把学生的敬业精神和良好的职业素养纳入到日常的教学要求中来。
|