一、课程教学现状分析 C语言程序设计是高校计算机专业的核心基础课程,很多学校都开了C语言公选课,将其作为学生学习程序设计的一个入门。学习C语言需要掌握的抽象概念和语法规则较多,同时又需要通过实践培养编程实用技巧。由于计算机专业必修课程(例如C++,数据结构等)都需要具备一定的C语言基础,所以对C语言的掌握程度直接影响着后续课程的教学效果。[1,2]长期以来C语言程序设计课程的教学改革一直都在许多高校中探索和实践,提出了项目教学法、[3]案例教学法、[4]自主学习模式[5]的教学理念。但在实际的C语言课程教学中,诸多因素导致教学效果不理想,具体有以下几方面: 首先,学生程序设计基础参差不齐。一部分学生以前没有接触过程序,有些学生对学习程序不感兴趣,有些学生沿用看书加背诵学习方法,他们感到枯燥厌烦,跟不上教学进度;还有一部分学生上课时积极主动,对编程产生较大兴趣,不但能够完全掌握老师讲的课程内容,而且能够积极查阅课外程序资料,教师讲授的课堂内容不能够满足这部分学生。传统的教学方式造成教师在教学无法兼顾这两类学生。学期结束后,第一类学生普遍感到程序设计课程晦涩难懂,不会应用,无从下手,因此失去了学习热情。 其次,传统教学模式影响教学效果。在传统的教学中,教师往往以课程的理论知识点为主线组织教学,依照从讲解概念起,接着讲解语法语句,最后举例加以细化。部分教师缺乏对该门课程的整体性把握,在教学上过多注重语法结构的知识,没有把学生放在主体的位置上,师生间的互动很少。甚至有些教材内容的结构安排缺乏合理性,语法部分编写过于繁琐,学生接受的是枯燥无味的理论规则,导致学习没有积极性,难以调动学生学习的主动性。教学观念、教学手段和方法以及考核形式等都比较陈旧,不能适应新形势下的教学需求,学生学习效率非常低,无法将所学知识运用到实际中。 最后,实践环节薄弱。上机实践是学习编程语言的重要组成部分。实际授课中,重视课堂教学而轻视上机实践,理论课上既要讲基本的语法知识又要讲编程方法,占用了过多的课堂时间。实验课上进行基本的验证性实验,学生机械式的运行程序,无法真正学会如何编写和调试程序,使得理论教学和实践教学脱节。通常情况下,C语言程序设计目前的考核方式主要以笔试为主,主要考查语法和基本的逻辑推导能力,无法进行学生动手实践能力的考查,从而造成了大部分学生即使理论知识掌握较好,却不会上机编程。 二、C课程教学方法改革探索 (一)采用分层教学模式 首先,对象分层。新生入学后,系部首先通过问卷的形式对新生的计算机基础技能、学习计算机的兴趣以及课内外学习方式等情况进行了调查,并进行了计算机水平摸底测试。根据学生的实际测试水平,打破以班为集体的传统教学模式,将他们分为不同的层次分别授课。将程序设计兴趣较强、数学逻辑基础较好、有一定编程基础并且测试成绩较好的学生编入A层;将测试成绩较差并且没有编程基础的学生编入C层;其余多数学生编入B层。教师依据各层学生进行因材施教,即针对学习者不同的学习能力、态度等个体差异施行不同的教学模式,实际上是使三层学生各有侧重、共同提高的一种教学方法。 其次,教学分层。分层授课是分层教学成功实施的关键,学生是教学活动中学习的主体,教师需要对所教层次学生的编程水平有准确的认识,才能真正激发其学习激情,培养其学习能力,促进课堂教学质量的提高。A层学生一般理解力较强,学习具有主动性,教师可以引导他们除了掌握教材知识点外,推荐课外参考书,尽快参与软件开发项目或兴趣小组。B层的学生通常情况下能够掌握基本的语法规则及编程方法,但是对编程缺乏总体思路,就需要教师及时将学生学过的知识加以复习总结,在掌握教学大纲要求的知识点外可通过综合实训练习进行编程水平提升。对C层就要通过精心设计教学内容、耐心的作业辅导、适时的课后交流激发他们的学习兴趣和信心。分层教学从各层学生的实际出发,"因人制宜",关注各层次学生在学习方法上的差异,给予学生不同级别的指导,刺激学生向高层次目标努力,从而大面积地提高教学质量。此外,在实施过程中也要注意保护学生的自尊心,以淡化各层间的人为界线,避免分层带来的负效应。 最后,分层评价。分层评价是针对各类学生的学习水平,建立一套完善科学的评价体系激发学生学习兴趣、优化学习方法、树立学生的自信心,促使各成其才。对A、B、C三层的学生不同的目标要求体现在评价体系中。对平时成绩的考核对应不同层次,A层同学分组考核,分工协作完成预设项目,根据小组中的表现进行组员互评和老师评价相结合的方式。B层和C层的同学则通过上机实操进行编程水平的测试。期终试卷可在同一份试卷上进行分层,分别对应于不同层次。试卷分成基础和提高两部分。基础部分主要考核学生是否达到基本教学大纲要求,这部分是三个层次学生共同的必答卷,对于三个层次的学生同分但不同值,成绩作为课程的考核分。例如编程题标注10分,则如果A层学生做对考核分加10,B层和C层学生做对加15。第二部分为提高卷,也是A层学生的必答卷,B、C层学生的选答卷,成绩作为课程的考核分。分层考核的目的是使各层次的学生经过努力都能获得较高的分数,获得成功的体验,激发学生的求知欲。 (二)基于实践导向的任务驱动教学 以实践为导向在教学活动中要求,以专业能力要求为依据,将"教、学、练"一体化的教学模式融入教学课程设计中。根据行业需要的知识、技能确定课程内容的选取与安排,课程设计是采用真实项目贯穿教学全程,项目按照内容分成若干模块,实现将化整为零进行学习。 任务驱动下分组学习讨论是一种非常有效的方式。让学生发挥主动性自由分组,依据编程能力水平给每组指派一名组长,上课时以组为单位,分析、讨论项目任务,具体包括需要收集资料、项目进度以及具体的工作任务。小组长主要负责小组内任务分配、协调组内成员等工作,老师轮流在每个小组旁听学生的讨论并接受学生的咨询。 教师所指定的任务主要包括两类内容:一类是课本课后习题,并对完成任务所必需的知识点进行必要的说明;另一类是具有实用性的项目任务实例,让学生更直观地理解所学知识应该如何与实践相联系。第二类任务需要教师进行设计,尽可能具有综合性、可分割性,适合小组讨论解决及协作完成。 |