首页 -> 2008年第7期

程序设计课程创新教学模式探索

作者:赖晓晨




  摘 要:以C/C++语言为例,针对程序设计课程的实际情况,提出了创新性的教学模式,鼓励学生积极参与教学环节,增加其学习热情和编程机会,达到提高实际编程能力、改善教学效果的目的。
  关键词:程序设计;互动;教学模式
  
  国内计算机相关专业本科教学中,程序设计课程占有相当比重,其中C/C++语言因其具有编程灵活、可移植性好、能直接读写硬件等优良特性,往往被作为本科生的第一门程序设计课程来讲授。C/C++语言功能强大、应用广泛,但其结构复杂,语法检查机制相对偏弱,对基本没有编程基础的低年级学生来说掌握起来相对较难。因此,如何指导学生真正掌握这门语言,进而为以后的程序设计课程打下良好的基础,是任课教师的一个重要课题。在实践中,我们把教学过程分解为四个环节,通过对课程目标合理的设计、对学生学习热情充分的激发、对实践环节有针对性的安排以及对成绩评价体系的革新,达到了教师授课有激情、学生学习有热情的良性循环,在实践中取得了良好的教学效果,本课程的经验对于其他程序设计课程也具有现实意义。
  
  一、合理的目标设定环节
  
  目标设定环节的主角是授课教师,本环节主要包括以下几个内容:教学目标设定、教材选定、授课内容选择、多媒体课件制作以及作业题目、上机实习题目设计等,是课程开讲前的准备工作,准备工作要充分细致,以确保优质教学的顺利完成。
  通过对目前C/C++教学现状的调研分析,发现本课程讲授过程中存在一些问题,比如学生认为本课程难度很大,理论与实践衔接不紧密,学完之后仍然不会独立编程等。因此,本课程教学目标设定为:经过本课程学习后,学生能够比较轻松地独立编写500行左右的一般应用程序,通过查阅资料以及向教师适当咨询,可以编写系统相关的程序,同时树立起独立解决问题的信心,这个目标的实现要经过大量编程练习以及思考总结。教师在课上给学生演示基于相关知识点的程序实例不少于400个,本课程结束后,学生应完成约4000行练习代码。
  目前国内外的相关教材很多,但是没有一本教材完全适合教学。国外教材内容编排比较新颖,贴近实践,但是对知识的讲授普遍不够系统,连贯性差;国内教材内容安排系统,讲解细致,有助于初学者理解,但是内容更新方面普遍滞后。因此在教材选择方面,我们提出了不指定教材,而是以多媒体课件为主,以多本推荐参考书为辅的模式,其中课件的内容以国内教材为骨架,以国外教材中比较新颖实际的部分为血肉,取各家之所长,再由教师综合对比、提炼和取舍。授课时全程采用多媒体课件,以课件为线索,扩展的内容由学生自行从参考书中查阅。实践证明,这种模式比只采用一本教科书的模式要好。
  授课内容的选择是课前准备环节的重要部分,目前国内C/C++授课内容中普遍忽略了对调试、编程规范、多平台下C/C++编程的讲授,而这些在实际编程过程中又具有重要的意义,因此,在课程内容中,增加了Windows平台下使用VC++进行程序调试的内容,以及目前国内主流软件企业的编程规范等相关内容。当学生对编程已经比较熟悉之后,又增加了Linux平台下使用vi/gcc/gdb/make工具链的内容介绍,同时,取消了不大常用的位运算、共用体等内容。
  程序设计语言课程是实践性很强的课程,因此设计了一系列课后作业题目以及上机练习题目,使学生平均每周有200行左右代码的作业练习量,每次上机实验完成200行左右的代码量。作业题目选择要配合课上讲授内容,同时具备一定的难度,激发学生思考。
  
  二、互动式授课环节
  
  本环节的主角是学生,核心内容是激发学生学习兴趣,保障教学顺利高效完成。教师授课不能纸上谈兵,尤其是对编程课而言,要注重实践。在课堂环节中要鼓励提问、培养互动式授课氛围,引导学生多思考,培养学生的自学能力。教师的一切活动要以学生为中心,教师不但是知识的提供者,而且是学生学习的服务者。
  课堂讲授的每一个知识点,都要体现为具体的编程实例。每一个实例都要现场运行,以及有目的地修改后再运行,要把这一完整的过程展示给学生,让学生在实践中迅速理解相关知识点。要达到这一效果,需要对多媒体课件进行认真规划,每一个例子都要在课前充分调试运行,授课不应该成为教师的独角戏,教师可以在程序实例中安排一些bug,讲授完相关知识点之后,由学生在课上思考如何排除这些bug,集思广益,给更多学生提供思考空间。同时,通过学生现场调试,让其他学生看到调试中容易出现的问题,编程最重要的部分在于算法和调试,调试的重要性远大于仅仅把程序写出来,使学生领会多种调试手段不但可以减轻教师的负担,更重要的是可以使学生真正掌握编程的思路和独立解决问题的方法。
  例如:在讲到变量时,设置变量未赋值即使用会出现数据错误的bug;讲到数组时,设置数组元素溢出的bug;讲到动态内存分配时,设置内存泄漏的bug等。然后由学生来调试解决这些编程错误。以上方式在实际教学中取得了良好的效果,学生积极性空前高涨,课堂讨论气氛非常热烈。
  兴趣是最好的老师,激发学生的学习兴趣进而使之自主学习要远远好于填鸭式的知识灌输。在课堂上,通过对一些适合学生年龄的有趣问题的探讨,能够提高学生的学习热情。例如在讲随机函数的过程中,要求学生编写一个“龟兔赛跑”的程序,利用随机函数生成龟兔赛跑时每一步的步长,在屏幕上打印出龟兔的运行轨迹。再如当讲到多维数组时,要求学生编写一个翻转棋的小游戏。通过这些教学方法,可以培养学生的学习兴趣和热情。
  在教学中为了鼓励学生勤于思考,教师应该在授课时提高提问的比重,在多媒体课件编制过程中暗藏适量的“陷阱”和问题,需要学生在课上通过思考来发现和回答。鼓励学生在任何时刻都可以举手提问,某些学生不理解的知识点可能恰好也就是其他学生同样不理解的知识点,通过课上答疑可以极大地提高时间的利用效率。通过师生的讨论可以加深学生对知识点的理解,使教师更好地掌握学生的接受程度,同时还可以营造出活泼的教学环境和热烈的教学气氛。
  在课堂教学中,学生不但是知识的接受者,还应该是知识的发掘者和传授者。对于一些较容易的知识点,以及一些作业题目解法,可以适当地安排学生在课上用10~15分钟左右来讲解,然后教师点评。这样不但可以培养学生的自学能力,还可以培养他们的表达能力以及责任感、使命感。
  例如在讲到多平台下编程时,会使用到GNU编程工具链,主要包括全屏幕编辑器vi,GNU C/C++编译器gcc、GNU调试器gdb以及自动化编译工具make,在熟悉了Windows平台编程和调试后,学生在教师的指导下已经具备了自学以上GNU编程工具链的能力,因此可以安排不同的学生分别查阅相关资料,然后在课堂上对工具链的各个部分做一个简要介绍,由于Linux系统的

[2]