APP下载

程序设计系列课程教学改革之我见

2011-12-31钟治初

计算机教育 2011年24期

  摘 要:程序设计课程不但是高校计算机类专业的重要专业基础课程,甚至是很多理工科类专业的必修课程。为提高教育教学质量,文章就新办本科院校中如何开设和开好程序设计课程提出一些看法。
  关键词:程序设计;教学改革;课程设置
  
  
  程序设计课程通常由一系列的课程构成,其教学改革的问题已经有不少专家从不同的角度进行了探讨,如文献[1-3]等。程序设计的能力构成了计算机专业人才的主要能力之一,特别对于软件类、信息管理类方向的学生来说,程序设计的能力通常是衡量学生学业成绩的主要能力。因此,在高等院校中,除了计算机类专业,很多理工科的其他专业都非常重视程序设计课程的教学。程序设计教学的改革与实践不但对提高计算机类专业的教育教学质量具有重大的意义,对于提高理工科类其他专业的教育教学水平同样具有重大意义。特别是在新办本科院校中,如何开设和开好程序设计课程,是值得深入研究和探讨的一个问题。
  1 程序设计课程的历史与现状
  随着计算机科学与技术的发展,程序设计课程的教学内容和教学方法发生了重大且深刻的变化。三十年前,我国高校的计算机课程一开始是开设程序设计课程,因为当时计算机的应用还不够普及,所谓程序设计课程也只是与数值计算有关的内容。后来,随着计算机应用水平的普及,高校要求开设程序设计课程的专业越来越多,而且计算机程序设计的语言也越来越多,曾先后在高校各专业中开设过的程序设计课程有:Basic、Algol、Cobol、Fortran、Pascal、Foxbase、Visual Basic、Visual Foxpro、C/C++、Java等。目前不同专业都会从这些语言中挑选一门作为程序设计的入门课程来开设,然后有关专业还会从中再选择一门作为提高课程开设,之后再选择算法与数据结构、网络编程、数据库编程或其他应用编程作为进一步学习程序设计的课程。
  由于多年来学者对计算机程序设计的认识存在着不同的看法,因此教学过程中也出现各种不同的做法,比如重视语言中语法要素的讲解和学习,重视程序结构的理论描述,重视语法细节的学习,而教学计划中教学时数是有限的,教师对程序设计的方法论方面的教学只好一带而过,学生学完程序设计课程后对程序的理解、对应用软件中出现现象的理解、对拿出工作中遇到问题的解决方案等还是很欠缺。很多学生学完一学期的程序设计课程后,所能做的只是按照书本上的程序敲一遍键盘,运行一遍程序。
  因此,对程序设计课程教学进行研究和改革具有重大的现实意义,对提高相关专业特别是计算机类专业的教育教学质量亦具有非常重大的现实意义。
  2 程序设计教学改革的理论与实践
  2.1 教学目标应该是分层次的
  通过长期的教学实践和思考,我们认为程序设计的教学目标应该是分层次的。
  首先不同专业的程序设计课程教学目标应该是分层次的,因为不同专业的培养目标不同。现在有相当一部分的专业都在开设程序设计课程,特别是有相当多的专业都要求开设C语言程序设计课程,我们应认识到程序设计课程对不同专业学生在将来工作中所起到的重要作用。要求所有专业的学生将来都与程序员一样来解决工作中所遇到的问题是不现实的,他们将来在实际中遇到的问题可能是非常繁琐的,或者计算量很大,或者数据处理的要求很高,或者实时处理要求很高,但事实上,这些工作所需要的能力是将问题提出来,抽象成一种计算要求。软件工程就是提出问题的需求,然后判断程序员给出的需求分析是否与问题的需求相符。而这正是需要程序设计的知识和理念,也正是相当多的专业开设程序设计课程的目的。
  例如计算机科学与技术专业、软件工程专业、网络工程专业,对于程序设计课程的要求必然会有所不同。软件工程专业的培养目标决定了对程序设计课程的要求较高,而计算机科学与技术专业的毕业生毕业后很多只是从事与计算机相关的工作,对于程序设计课程的要求相对来说只是培养计算思维。
  其次,计算机类专业开设程序设计课程的教学目标也应该是分层次的。就计算机类专业毕业的学生来说,毕业后也不是所有的学生都从事软件开发,还有相当一部分的学生从事计算机系统的维护,甚至从事计算机系统的应用,多数学生毕业后从事与计算机应用系统相关的工作,一大批新办本科院校计算机类专业的学生更是如此。因此,应该根据学生毕业后可能从事的工作岗位对程序设计课程的教学目标有所区分。特别是对一大批女同学,她们毕业后甚至只选择与计算机应用相关的工作。这样一批学生学习程序设计课程的目的与将来从事软件开发的学生是有所不同的。
  正是社会对于计算机应用人才的需求是多层次的,造成计算机程序设计课程的教学呈现出不同的层次需求,这也正是程序设计课程的魅力所在。程序设计课程的教学目标应该根据具体情况,分出合理的层次。要根据不同专业及方向、不同的就业岗位设计出不同的课程教学目标和课程教学要求。
  2.2 教学过程中应重视教学方法
  明确了程序设计课程的教学目标后,就要设计出合理的教学方法来实现教学目标。我们通过调研和实践发现,相当多的教师喜欢过度讲解程序设计语言中的语法现象和语法要素,由于课程教学时数的限制,结果导致程序设计方法的教学过于欠缺。我们认为如何控制好程序设计语言的教学与程序设计方法的教学关系是程序设计课程教学的关键所在。
  我们认为,为了提高程序设计课程的教学效率,应该改变以程序设计语言为主线的教学方法,同时以程序设计语言和程序设计方法为教学主线。学习完一种语言语法要素后,要重点学习如何应用该语言语法要素,如何解决一些有现实意义的问题。
  程序设计方法的教学要重点选择具有代表性的问题,从问题的描述、存储结构的选择、算法的描述、结果的分析多方面来考虑。同时要对问题的扩展及思考的方向留给学生课后进一步思考,将进一步提高学习的可能留给有潜力的学生。
  我们选择Josephus问题作为一个重要例子,因为该问题的存储结构可以选择数组、链表、队列等,而且算法可以有不同的选择和描述,特别是问题本身还可以有拓展,比较适合不同层次的学生进行不同程度的训练。
  2.3 训练应是全方位的
  我们通过长期的调研和实践,认为对学生的程序设计能力的训练应该是全方位的。除了课堂上思维的训练、实验课上实习实验的训练外,课后的训练也是很重要的。组织学生参加各种比赛、设计各种趣味程序的训练、让学生参加到教师科研项目中软件代码的编写等,都是很好的训练方法。
  实习实验课程对训练学生的程序设计能力是最基本的。首先要重视实习实验课程的教学管理,每一次实习实验都要有基本的目标要求,要有基本的训练项目,同时要根据实际情况分层次设计,最好开发辅助的系统来管理学生的实验完成情况。对于刚开始学习程序设计的学生来说,要重点训练学生解决问题的规范性,也就是说编写的程序是否符合目前技术上的规范要求。而对于经过一段时间程序设计训练的学生来说,重点应该训练学生思维的开放性,鼓励学生创新程序设计的方法,从不同的侧面来考虑问题,提出解决方法。
  对学生的课后训练,我们主要是针对一部分对程序设计课程兴趣较浓的学生提出一些问题,或者让学生提出一些在实际生活中遇到的问题,然后对问题进行分析,得出模型,进行软件需求的分析与设计。由于学生众多,提出的问题也会多种多样,教师主要是帮学生指出思考的方法,提出解决问题的可能方向,提供可以找到的参考资料。
  
  总之我们认为,对学生程序设计能力的训练可以有各种各样的方法,可以全方位地对学生进行训练。
  2.4 课程考核应是多样化的
  在高等院校开设任何一门课程,最终必然要涉及到考核问题。考核方法的不科学,对实现课程的教学目标必然会大打折扣。目前考核课程的主要方法有书面闭卷考试、上机考试、提交实验报告和实验作业、提交书面作业。我们认为除了上面这些考核方法以外,还可以将参加软件设计比赛、国家级计算机等级考试、软件设计师考试,参加教师科研项目中程序代码的设计与编写等纳入程序设计课程的考核。考核的要求也可以分层次来处理。凡达到基本考核要求的学生可以给予70分,而达到更高要求的学生可以在此基础上增加分数。让学生通过努力可以达到基本要求,付出更多的辛勤可以得到更高的分数。
  书面考核目前还有保留的必要,取消书面考核会让学生养成一个习惯,拿到问题不是先思考,而是立即坐到电脑前开始敲代码,结果编程的质量不高。尽管程序设计最终的代码要在电脑中运行,但思考和设计应该在电脑之外。我们认为前面提到的任何一种考核方法都有其积极的一面,也有其欠缺的一面,任何一种考核方法都不能代替另一种考核方法。因此授课教师要根据学生的情况设计出合理的考核方法组合来引导学生的学习。通过学习和考核后,学生能真正理解程序设计的思想,在工作中能够用程序设计的思想看待问题、解决问题,正确理解计算机软件解决实际问题的原理。
  当然,所有考核中,我们认为机试是最重要的,建议上机考试的比例不能低于40%,但也不是比例越高越好,特别是对于程序设计的入门课程,提交实验报告和实验作业也要有一定的比例。具体各个项目的考核比例要与当前教学班及学生的情况而定。
  2.5 课程开设应与具体的专业接轨
  目前学习程序设计课程的学生数量巨大,清华大学出版社出版的谭浩强老师主编的《C程序设计》教材重版多次,发行数量巨大,也正说明了这一点。清华大学出版社出版的其他种类的程序设计教材同样也种类繁多,数量巨大,说明高校中开设程序设计课程的专业众多,学习程序设计课程的学生数量巨大。我们认为,各专业和各专业方向在开设程序设计课程时要有所选择,特别是在程序设计语言的选择上要兼顾专业特色、毕业生毕业后从事的岗位设计要求,同时要考虑目前程序设计技术的进步。目前二三类本科院校和新办本科院校中的一些专业容易在开设课程中跟风,别人开设什么课程,也跟着开设什么课程。不同的专业和专业方向,要真正认真研究本专业及专业方向的培养目标,研究开设程序设计课程在实现培养目标中的地位和作用,选择合适的教学内容,采用合适的教学方法,提高教育教学质量。
  3 结语
  在高校各相关专业中开设程序设计课程是一个系统工程,该课程在不同的专业和专业方向中地位有所不同,其知识范围及培养的学生能力在不同就业岗位中所起的作用也有所不同。随着计算机科学技术的进步,随着计算机应用的发展,程序设计语言、程序设计方法也会随着变化和发展,程序设计教学改革的研究也会不断深入。
  
  参考文献:
  [1] 付沙. 高校程序设计课程教学改革与实践[J]. 计算