普通高校C程序设计基础课程教学改革初探
2011-12-31李卓赵津燕李益民
李卓 赵津燕 李益民
(北华大学计算机科学技术学院,吉林 132021)
引言
C程序设计基础课程是许多工科类普通高校计算机和非计算机专业公共基础必修课,多为大学一年级新生开设的首门高级程序设计课程。通过这门课的学习,学生不仅要掌握C语言本身的基本概念和语法规则,更要掌握程序设计的思想、方法和技能,为后续课程的学习和本专业应用打下较扎实的理论和实践基础。通过以往的教学实践,我们发现很多大学新生认为C程序设计基础课程是一门比较难学好的课程,由于内容多、课时紧、知识与高中相比跨度大,使得一些学生在学习过程中有畏难情绪,学习兴趣不够浓厚,往往出现教师教的累,学生学不会的现象。所以提高这门课程的教学质量,激发学生的学习兴趣,对于培养学生程序设计能力、灵活的思维方式以及较强的动手能力都是非常重要的。
1 理论课教学改革
1.1 教学内容的改进
C程序设计基础是一门理论和实践紧密结合的课程,而实践必须要在理论的指导下才能正确进行,所以对于理论课教学内容的设定和调整是提高教学质量的前提。传统的教材基本上是以一门语言的自身体系的脉络来展开,过于注重语句语法的细节,没有把编程解题思路放在主体地位[1],使得部分学生学完后有种“只见树木,不见森林”的感觉,遇到本专业领域的实际问题时,不知道如何去分析和解决,学以致用的能力没有得到很好地培养。
对于教学内容的改进可以从以下两个方面来进行:其一,内容的精简与整合。具体而言就是对于一些过多过细的语法点要进行精简,而对于一些前后联系比较紧密的内容可以不按照教材上的书写顺序来进行整合。例如,输入输出函数中对于格式控制符的介绍很详细[2],在教学中,我们可以将一些不常用的格式控制符的使用说明作为精简的内容,学生在使用时可以通过查阅资料方式来获得。又如,还可以将预处理命令部分作为精简内容,因为这部分内容易于理解可以留给学生进行自学,使得学生在自学过程中提高了独立分析和解决问题的能力。另外,对于指针[3]的学习一直是本门课程教学的重点和难点,由于数组和指针这两部分的教学内容联系紧密,可以将其进行整合。例如,可以在一维数组的讲解中引入指针的概念,使得学生更容易理解什么是指针,从而为进一步应用指针打下良好的基础。
其二,内容的补充与扩展。为了提高学生的程序设计能力,在以C语言本身知识作为教学内容的基础上,还要补充一些数学建模、算法设计、程序设计风格以及软件工程等方面的知识,使得学生在学习过程中不局限在对于一门语言本身的掌握,而是能从更高角度来认识和感受程序设计的精妙之处,做到“既见树木,亦见森林”。另外,随着互联网技术的飞速发展,还可以指导学生充分利用网络来获取书本之外的宝贵学习资源,例如,一些优秀的程序设计论坛,免费的视频学习网站等,从而扩展学生的视野,激发学生主动学习的内在动力。
1.2 教学方法的改进
传统的“填鸭式”教学方法存在的弊端已经越来越明显,为了更好地实现教学内容的组织思路[4],应该采用能够激发学生学习兴趣和主观能动性的教学方法,对传统教学方法进行改进,具体的改进方式主要有以下两方面:其一,基于问题的启发式教学。也就是说在教学中,要围绕所要解决的问题,以学生为主体,教师为“协作者”逐步引导学生掌握解决问题的方式方法。例如,在讲解“冒泡排序”算法时,教师可以在介绍该排序算法思想的基础上,以一组具体的数据为例,引导学生来模拟计算机完成排序的过程,并启发学生如何从程序设计的角度来实现模拟的排序过程,进而由具体数据排序过程扩展到对任何N个数据进行冒泡排序规律的寻找,最终得到整个排序算法的代码框架。在这一过程中,将学生作为解决问题的主体,教师作为辅助者,在一个个问题获得解决的过程中,可使学生获得学习的成就感,从而提高学习兴趣。
其二:适当进行角色互换。在课时允许的情况下,可以事先选择一些内容,让学生自学,然后学生采取自愿原则作为教师讲解这部分内容,而教师则扮演学生角色。待学生讲解完毕后,师生一起以讨论方式对该生所讲解的内容进行点评和补充。例如:在学生学习完一维数组的基础上,就可以选择二维数组作为教学内容进行角色互换,在这一过程中不仅可以提高学生的自学能力和表达能力,激发学习的主观能动性,而且在角色互换的过程中还能让学生体会到教师备课的辛劳,从而在学习过程中能更尊重教师的劳动成果。另外,教师在角色互换过程中,还可以从学生身上获得一些教学启示,从而达到教学相长的目的。
2、实践课教学改革
C程序设计基础课程有其自身的特点,学生听不会,也看不会,只能练会[5],为了巩固和加强理论课教学内容,提高学生实践技能,培养工程意识和创新能力,必须加强实践训练,使学生在大量的练习中掌握知识,提高程序设计能力。
为了真正提高学生的程序设计能力,我们对实践课教学主要从以下两方面进行改进:其一,实验课的实验题目分梯度进行设置。传统的实验题目对所有学生都是统一设定的,这样往往就会出现一些学生“吃不了”,而另一些学生“吃不饱”的现象。为了满足不同程度学生的学习需要,我们将实验题目划分为三个梯度,分别为:验证型题目、半设计型题目和设计型题目。其中,验证型题目不仅给出题目描述而且还给出了程序代码,通过这类题目可以培养学生读程序和调试程序的基本能力;半设计型题目给出了题目描述和至少一种解决问题的算法描述,通过这类题目可以培养学生部程序设计和编写能力;设计型题目只给出题目描述,要求学生自己建立解决问题的数学模型并最终通过程序来实现,通过这类题目可以培养学生算法设计、程序设计和程序调试等多方面综合实践能力。
其二,以项目为驱动,分小组进行课程设计。实践课教学的改进除了常规实验课改进之外,还要在学生基本完成C程序设计基础课程学习之后,分出两个星期的时间进行课程设计。学生自由组成课程设计软件开发小组(即开发团队),每组为3人左右,并选举1人任组长。每个软件开发小组可以选择教师拟定的课程设计题目中的一个课题或自选题目进行小型项目的开发,每组独立完成设计任务。课程设计按小组验收,要求学生演示设计的程序,讲解设计思路、方法、解决的主要问题,教师根据具体情况向每个学生提问2至3个问题。另外,每位同学在课程设计验收结束后要上交一份内容充实、写作规范的设计报告。经过这样的实践训练,不仅培养了学生综合运用所学知识独立完成课题的能力,而且还培养了他们的团队合作精神,为今后在学习过程中工程意识和创新能力的进一步提高打下了扎实的基础。
3、考核方式改革
现在还有许多高校的C程序设计基础课程教学评价方式以笔试为主,这样就会导致很多学生对于上机实践不够重视,出现“高分低能”的现象。为了提高学生的实践能力,在日后激烈的就业竞争中能够脱颖而出,我们需要对本门课程的考核方式进行改进:其一,加大上机实践考核比例。具体而言,就是将期末笔试成绩与上机考试成绩的考核比例设定为1:1,其中上机考试成绩又由平时实验课成绩和单独的上机考核成绩两部分组成,如果单独的上机考核学生没有通过,则本门课程成绩直接计为不及格。其二,调整上机实践考核的时间。由于学生期末考试复习时间比较紧张,所以可以考虑将单独的上机考核时间安排在第二学期开学的第一周进行,这样既可以缓解学生期末考试的压力,另外一些在学习过程中实践能力较弱的学生还可以利用假期时间进行充电,最终达到提高学生实际动手能力,多编程序,编写好程序的目的。其三,笔试采用“教考分离”方式。也就是说任课教师不能作为本门课程期末试题的命题教师,考试题目由试题库随机抽取产生,从而可以更客观地考核学生对课程的掌握程度。
4、结论
如何提高C程序设计基础课程的教学质量,切实培养学生的程序设计能力,是一个非常值得去探索的课题。笔者从理论教学、实践教学和考试评价方式三个方面对C程序设计基础课程教学改革提出了一些改革的思路,在实际教学中也收到了较好的教学效果。随着社会对高等教育人才需求的改变,我们也要与时俱进,在教学中不断探索和实践,使得培养出来的学生能够学有所长,学以致用,成为适应社会发展需求的合格人才。
[1]李静雯.关于提高C语言教学质量的探讨[J].电脑知识与技术,2007(04):1149-1150.
[2]黄群.C语言程序设计课程教学设计探讨[J].计算机教育,2010(05):78-81.
[3]谭浩强.C程序设计[M].北京:清华大学出版社,2005.
[4]何钦铭,颜晖.“C程序设计基础及实验”国家精品课程的建设经验[J].计算机教育,2008(19):28-31.
[5]吴文虎.精心铸精品理念须先行-谈“程序设计基础”课程改革[J].计算机教育,2008(13):46-49.