苏 畅,郭树强,姜万昌,刘 迪
(东北电力大学 计算机学院,吉林 吉林 132012)
要建成一个创新型国家,要实现创新型国家的目标必然要加强创新型技术人才的培养,而学生创新能力和实践能力的缺乏也是高等教育教学改革面临的问题。在高等教育的改革措施中已提出:“探索发现和培养创新人才的途径,支持学生参与科学研究,强化实践教学环节。”而加强实践教学,引导学生主动实践是创新能力培养的关键,创新的根本在实践。近年来,每年都有数以万计的本科毕业生走向社会和工作岗位,但是往往表现出不能尽快适应工作环境、实践能力较弱的问题。因此,如何在新形势下针对存在的问题,加强学生的创新和实践能力,探索一种基于创新能力培养的实践教学改革方式,成为保证人才培养质量的关键。
C语言程序设计课程是大多数高校学生的必修课,该课程主要培养学生应用计算机技术来解决实际问题的能力。与传统课程的重理论性相比,C语言程序设计课程具有极强的实践性,要求学生既要掌握理论知识,又要掌握操作技能,并能在实际中熟练应用。在研读大量相关资料[1-6]以及对多年实践教学进行分析思考总结后,探索研究基于创新能力培养的C语言程序设计教学改革,将理论与实践密切联系,提高教学效果,培养学生的创新实践能力。
通过课前对学生进行问卷调查和课上对学生听课状态的观察及学习效果的询问,以及课下与课题组老师交流,发现学生程序设计语言基础不同,参差不齐。所有学生的语言基础分为以下几种情况:很小一部分学生在进入大学之前就接触和学习过程序设计语言并独自研究和编写过程序;个别学生大学入学后在学习本门课程之前就自学了程序设计语言,有了一定的程序设计基础;而大部分学生没有任何程序设计语言基础。前两种学生上课时能跟住老师授课节奏,上课期间师生交流好,课下也能及时和老师沟通,学习效果很好。毫无基础的学生也分为两类,一类学生课前能按计划提前预习和课后复习课程内容,课上就能跟住老师教授的学习内容,另一类学生课前不预习课后不复习,课上就需要紧跟老师授课进度,部分学生表现出很吃力的状态。
虽然现在教学是以学生为主体,但还是以老师为中心。大部分教师课上期间仍然占据课堂的主体位置,课上的大多数时间还是用在讲授理论知识上,实践操作时间少,还是把关注点放在学生理论知识的掌握上,学生实践能力的培养被忽视,导致学生由主体变为客体,只能被动接受知识,主动学习的动力被消磨,师生之间的交流互动少,课堂气氛不活跃,学生学习积极性不高,学习的兴趣受到严重影响。
教师授课过程中,大多数使用多媒体和板书结合,多媒体为主,板书为辅,但板书很少,多媒体上以文字为主,内容量大,图片动画少,枯燥乏味,很难激发学生学习的兴趣。课上,老师基本是灌输知识,知识点对应的案例少,实际操作演示少,老师中很少有通过项目或任务等方式将整门课程知识贯穿起来的,不同的知识点之间处于相互独立状态,学生自己很难建立知识之间的联系。教师上课时很少根据不同的知识设置疑问或设置启发性的问题,没有很好地引导学生去发现问题、思考问题、研究问题,进而解决问题,调动不起来学生学习的积极性,最终导致学生课上参与度低,听课情绪低落,有些学生存在的问题多,自己还不知道从哪个问题问起,导致跟不上授课进度,课上就玩手机或睡觉,学习状态极差,最后成绩非常不好。
针对以上教学中存在的主要问题,基于对学生创新能力的培养,从理论教学、实践教学及课程考核方式等方面进行探索和研究,对课程进行教学改革。
合理科学的理论教学能激发学生学习的兴趣,提高学生学习的主动性,极大地提高教学的质量。
1.合理安排理论教学内容
授课教师应该根据学生的实际知识基础合理安排组织教学。课前,教师就把语法知识点布置给学生,让学生在课外进行学习;对于自学就能会的浅显易懂的知识点,老师课上就用简洁概括性的语言讲解总结概括。对于重难点难懂的知识,老师尽量化难为易,首先统一讲解重难点知识及学生普遍存在的问题,通过通俗易懂的实际例子把知识讲解明白,然后分配综合设计性的实践项目,让学生小组讨论协作开发,针对学生讨论及开发过程中出现的问题,一步步引导学生创新解题思路。例如:让学生在线学习如何定义、初始化数组,以及如何引用数组元素等,课上教学过程中,重点讲解数组语法规则中的注意事项并传授编程方法及技巧,组织学生通过小组团体协作,设计、编写并实现一种排序算法,让学生在实践操作中不断地巩固基础知识和语法,老师一步步引导学生寻求多种不同的解决方案,逐步培养学生分析问题、解决问题的能力。
2.寓教于乐
目前,很多高校中,学生都存在不同程度的缺勤或课上睡觉、玩手机,原因不同,重要的一点就是学生把学习当成任务,甚至是负担,从学习中找不到快乐,学习积极性和主动性都不高,对学习没有兴趣[7]。面对没有生气的课堂,老师教的不快乐,也只是完成任务似的完成教学。想要让学生学得好,必须要激发学生学习的兴趣,让学生在快乐中学,不是把学习当成任务,而是享受。这就要求教师在教学过程中调动学生学习的积极性,积极与学生交流互动。课堂气氛活跃了,学生学习兴趣激发出来了,学生学的快乐了,老师教的也快乐了,教学效果事半功倍。
3.混合式教学方法
(1)问题教学法
教学过程中,如果只是教师一直在讲,学生就会逐渐失去学习兴趣及学习的主动性。所以,教师应该根据教学计划及学生所掌握的知识,把每个知识分解为几个涵盖本知识点的小的问题[8],让学生来分析,研究,解决,给出详细的方案,教师根据学生完成情况进行表扬及肯定。这样的教学方法,可以带动学生,让他们能积极主动地参与到学习中,对知识的掌握理解有极大的好处。
(2)案例教学法
在实际教学过程中,教师依据要讲授的知识点,设置对应案例,通过案例将不同的知识点与实际应用相结合的方式将知识传授给学生。例如:在学习二维数组时,教师可设置一个案例,求每行数组元素的平均值,就可以联系实际去解决这个问题,这个问题类似于要求不同班级一门课程各自的平均分,思考怎么利用现在所学的二维数组的知识去解决,解决问题的思路清晰后,就可以用程序语句编写出来,然后上机运行调试,引导学生使用不同的方法解决,再思考如何按列求均值,逐步引导学生的创新意识及培养学生的创新能力。案例教学法使用得当,可以实现事半功倍的效果,学生边学习边将理论知识与实际相结合,既能促进学生对理论知识的理解和掌握,又能培养学生发现问题、分析问题和解决问题的能力,从而培养了学生的创新思维和创造能力。
(3)启发式教学法
教师在培养学生创新思维的过程中,通过对知识点进行拓展,培养学生解决问题的能力,学生在遇到问题时,很自然地就会对问题进行分析,考虑解决方法,使学生掌握理论知识的同时,又掌握了程序设计的思维和方法。在教学时,利用知识之间的联系设置深浅难易不同的,具有启发性的问题,让学生通过分析,研究,解决;或者教师可以在操作演示时设置不同类型的错误,启发学生发现问题,进而去分析解决;或给出一个题目,通过对题目的分析,引领学生逐步独立完成,在学生解决问题的过程中,教师根据学生进度提出不同的启发性问题,对学生提出的问题进行有针对性的分析指导。通过师生之间对问题的交流分析研究,既能培养学生发现分析解决问题的能力,又能激发学生学习的兴趣,同时还能培养学生学习的主动性和创造性,以及创新能力。
在实践教学的讲授环节[9],学生占据课堂的主体地位,教师占主导地位。教师在讲授知识的时候,不是“授人以鱼”,而是注重“授人以渔”。教师重点讲授知识中的重难点内容,在讲解知识的过程中,传授学生发现问题、分析问题和解决问题的能力,教授学生程序设计的思维和方法,最终实现培养学生独立的创新思维和创造性的能力。
每次实践教学的实践环节[10]分三个阶段完成,第一阶段学生按照老师提供的实验案例进行实际上机编程;第二阶段老师根据本次实验课知识要求提出新的问题,学生根据老师提出的问题,对问题进行分析、理解和解决,本阶段培养学生问题分析、算法分析及独立编写程序的能力;第三阶段学生登录考试系统进行知识测试,本阶段学生根据系统题目及已给部分程序段将程序进行完善,从而解决问题。通过本阶段的实践,既覆盖了所有的理论知识点,又培养了学生的创造性和创新思维。每次实践教学都是对学生理论知识的理解和掌握的检验。通过实践环节,学生的算法分析能力、创新的程序设计思维和程序设计能力都得到了极大的提高。
经过对课程的探索与研究,本课程采用过程化的考核方式,期末总成绩由课程实验成绩、上机考试成绩和期末笔试成绩三部分组成。
课程实验和上机考试环节重点考核学生理论知识与实际操作的结合。教师通过对课程实验和上机考试中不同问题的理解、分析、研究、算法设计及程序编写实现等过程的引导,充分调动了学生学习的兴趣及积极性,学生能研究出不同的算法及各种简洁高效的程序,在整个过程中很好地培养了学生的创新能力。期末笔试环节重点考核学生对课程基础理论知识的理解和掌握程度,以及学以致用的能力。学生通过解决一个个新的问题,既加强了学生对理论知识的掌握,又培养了学生解决问题的能力及创新能力。
通过对课程考核方式进行改革,学生学习的兴趣被激发起来,学习的主动性得到了提高,学生的理论知识掌握得更好,程序设计能力及创新能力得到了很好的锻炼和培养。
C语言程序设计课程建设经过本次教学改革取得了明显成效,学生的学习兴趣得到极大激发,学生的学习效果、学习的主动性、程序设计能力、综合实践能力、创新思维和创造性都得到了明显的提高。学生参与ACM、挑战杯及全国大学生电子设计竞赛等各种竞赛的人数和获奖项数显著增多,获奖等级明显上升。参赛人数由原来的几人增加到现在的几十人,获奖项数由原来的几项到现在的几十项,获奖等级原来最高省级一等奖,现在最高国家一等奖。在近两年的全国计算机等级考试中,学生的过级率也明显提高。随着科技的迅猛发展,每个人只有不断提高计算机技能,才能跟上时代发展的步伐。因此,对程序设计类课程教学改革的探索与研究,还需持续进行下去。