独立学院非计算机专业C语言程序设计教改简论
2011-12-31胡艳华
计算机教育 2011年20期
摘要:针对独立学院学生的特点和非计算机专业C语言教学中普遍存在的问题,提出采用模块化的教学内容、重视上机实验操作、多种教学方法的综合应用以及课程考核改革思路,以激发学生学习兴趣,提高其编程、创新能力及综合分析能力。实践结果表明改革取得了良好的效果。
关键词:独立学院;C语言程序设计;教学探讨;非计算机专业
作者简介:胡艳华,女,助教,研究方向为计算机网络。
1背景
由于计算机的普遍应用以及现代信息技术的飞速发展,社会对复合型人才计算机应用能力的要求不断提高,如何培养大学生的计算机操作技能,培养他们利用计算机解决学习、工作和生活中实际问题的能力是一项重要课题[1]。C语言是一种典型的结构化程序设计语言,是程序设计的入门语言课。通过对该课程的学习,学生能够掌握程序设计的基本思想,锻炼自己的逻辑思维能力,初步具备使用计算机解决实际问题的能力。由于C语言涉及的概念比较抽象复杂,语法规则较多,容易出错,对于从来没有接触过编程类语言的非计算机专业的学生,需要一个崭新的思维方式才能适应本课程的学习,否则,会导致大部分学生学习困难,教学效果也不理想。独立学院学生的基础相对薄弱,传统教学方法的教学效果更不理想,这是笔者从事计算机专业教学工作以来一直思考的问题。C语言教学改革必须引入先进理念,探索高效的实践教学方法[2]。独立学院以培养高级应用性人才为目标,本文从这一目标出发,对非计算机专业的C语言的教学改革进行探讨,旨在激发学生的学习兴趣,提高学生的逻辑思维能力、编程实践能力以及创新能力。
2教学探讨
2.1存在的问题
笔者对教学实践中所发现的问题进行了如下总
结:1)学生学习目标不明确,学习积极性不高。学生经常会问到“为何开设C语言课程”诸如此类的问题,并认为没有必要开设该课程,部分学生上课没有兴趣,抱学不学无所谓的态度。2)传统的授课形式结构设计凌乱、学习难度高。传统的教学模式采用以语言知识为主线,按照教材的顺序进行讲解,如变量、数据类型、表达式、数据输入/输出、三种控制结构、函数、指针、文件这种顺序进行教学。学生在学习中学到的知识点都是零星、片面的,不能将所学知识进行综合运用,学生边学边忘,学习后续内容不能与前期知识衔接,越学越失去信心和兴趣。3)教学观念陈旧,授课采用“填鸭式”教学方法,只是单纯的理论知识灌输,不能有效地综合应用多种授课方法,缺乏师生互动。4)对上机实验不够重视,学生实践应用能力差。C语言程序设计是一门实践性很强的课程,但目前的实验教学存在很多问题[3]。如教师布置与教材相符的任务,学生就对着教材验证例题。学生不明确上机实验的目的,上机前不做任何准备,导致上机后不知道要干什么,只会照抄课本例题,不能举一反三,对所要调试的程序不理解,遇到程序出错不会独立思考,只能马上求助教师,上机练习变成打字练习。更有甚者,在教师不注意的时候,学生会偷偷上网,去做一些与实际课程并不相关的事情。5)考核方式不合理,教考分离,或单纯采用笔试考核等方式,忽略学生实际动手能力的考核。笔者针对以上问题,逐一展开分析讨论,以期能不断总结经验,寻求适合独立学院非计算机专业学生的教学方式。
2.2改革探讨
2.2.1教学前的准备工作
在授课之前,先仔细研究所担任班级的专业,确定本专业学生的培养目标[4]。根据实际需求来调整教学内容和教学重点,制订相应的教学计划,与专业紧密结合,为专业学习服务。
同时,笔者建议第一次授课时,就要让学生明确学习目的,并讲解其重要性,提高学生的积极性。在第一堂课程的教学中,教师可首先演示用Turbo C编制的实用程序,让他们了解C程序的“神奇”,激发学生的学习兴趣。然后,教师可向学生讲授计算机语言的发展历史,阐明当前主流的语言很多是衍生自C语言,如C++,Java,C#,J#等,而C语言是编程的基础。掌握了C语言,相当于掌握了多门语言,而只有学好C语言,才能更进一步地学习那些高级的面向对象的语言,因此,教师应从多个不同层次来讲授其重要性。另外,让他们了解C语言也是计算机等级考试、程序员考试的一个重要内容,学好C语言这门课,可以考取计算机等级证书,提高自身就业竞争力。
2.2.2课程进行整合优化,内容选取采用模块化案例教学形式
我院采用由谭浩强主编,清华大学出版的《C程序设计》教材。
针对学生反映该课程内容抽象复杂、知识点凌乱、难以理解等特点,笔者在课程内容选取上采用划分知识模块的形式,且将程序设计思想的主线贯穿其中。在授课前,先设计若干个与模块教学内容相一致、难度适中、功能相对完整且不完全独立的案例任务,其中涉及的各知识点及其间的联系,要循序渐进,避免跨度大,这样学生在理解案例中的知识点应用范围时,就比较容易,同时也使学生知道学习这一阶段内容对自己所学这门课的作用,有利于进一步提高学生的学习兴趣。笔者将整个C语言课程[5]整合分成5个知识模块,并选择典型案例穿插到知识模块中,以提高学生的动手实践能力。
模块一,带你认识C语言。本模块精选案例为税收计算器、兔子繁殖问题、猴子吃桃、小猴子选大王、百钱百鸡问题等经典小程序。教师通过演示这些案例,让学生对C语言有一个初步认识,如C程序可以很好地解决数学问题,可以消除学生对C语言的陌生感,提高学习积极性。
模块二,基本程序设计模块。本模块以求3名学生单科的平均成绩作为案例,引导出变量、数据类型、运算符、表达式、数据输入/输出语句、3种基本控制结构、数组等基础知识。引导学生掌握3种基本结构及编写程序的基本思想,是学习C的入门必经之路。通过简单案例引出C语言的语句和语法知识,让学生不是单纯地学习繁琐的语法知识,然后,一步步地在案例的基础上扩展新知识,激发学生学习的兴趣。
模块三,函数模块。函数是程序的基本单位,每个C语言程序必须有且只有一个主函数,本模块知识需要学生重点掌握。本模块在讲函数知识及设计函数段时,继续改进引用上面的案例,以一个班学生成绩统计程序,引发出求每个学生的总分、每个学生的平均成绩、每个学生的最高分、每个学生的最低分、每个学生成绩排序、每门课程平均成绩,每门课程成绩排序等多个函数功能模块,最后进一步让学生整合成学生成绩系统。通过此案例讲解C语言中变量作用域、变量存储类型的区别和功能,函数调用以及函数的嵌套调用与递归调用方式,参数传递的方式及要求(包括数组作为函数的参数),值传递和地址传递区别。笔者讲授此例时,只通过两个函数功能模块调用为例,然后启发学生完成其他的模块,整合一个完整的班级成绩管理系统,这样能把所学的知识进行综合应用,举一反三,从而调度学生的积极性。
模块四,指针模块。指针是C语言的重要概念、重要特色,它使C具备了强大的功能。正确而灵活地运用它,可以动态分配内存和对物理地址直接进行操作,方便地处理很多其他高级语言所不能处理的问题。不掌握指针等于没有掌握C语言的精华,但它涉及到内容非常丰富,且复杂难以理解,这部分也是难点。以往教学模式,先介绍指针与地址的概念,再学习变量的指针与指向变量的指针变量、数组的指针与指向数组的指针变量、字符串的指针与指向字符串的指针变量、指针与函数、指针数组以及二级指针这样的教学顺序对指针进行讲授,学生理解非常难、更不会应用,部分学生对于指针这章往往放弃学习。
本模块采用建立动态单链表的案例,逐一引导出结构体数据类型概念、指针的概念、链表插入、删除、修改等操作、创建指针的程序(以统计若干个学生成绩为例)、计算学生平均成绩,通过此案例使学生学会了C语言中结构体的相关知识,动态分配内存和释放方法,用指针处理链表基本操作,指针数组使用方法,函数调用的参数为指针时获得怎样的函数值等一些知识。让学生首先了解指针的运用,充分调动学生学习的兴趣和激起学生的求知欲,再逐步从链表案例中启发引出新的知识点,边学边用,通过实例反复练习,使学生能灵活运用指针知识编写程序。
模块五,文件模块。本部分以上述学生成绩系统为案例,要求对输入学生的成绩以文件形式保持到外存上,求每门课程的平均成绩并以文件形式保存。通过此案例主要讲解文件的基本概念,文件的打开、关闭、常用读写方法,标准设备输入/输出函数的使用,将内存中存储的数据输出到外存上。
2.2.3多种教学方法并用,提高课堂教学效果
C语言是一种面向过程的高级语言,在理论部分,语法规则非常繁琐而复杂,在实验部分,字符化的界面又很难激起学生的学习兴趣。针对这些特点,根据模块内容不同、环境不同、对象不同设计不同的教学方法(如启发式教学、悬念教学法案、案例教学法),其中案例教学法贯穿教学始终,让枯燥抽象的理论化解在生动的语言和形象的案例中。
在课堂教学中倡导快乐教学法,创建“提出问题—解决问题—归纳分析”的课堂教学模式,围绕上述模块中精心设计的案例展开教学,在问题的解决中提升学生的成就感和自信心。课堂模块教学内容采用问题导入式,每节课都从一个典型案例入手,在复习旧内容的基础上,以问题的方式导入新的内容。归纳总结,然后再扩展问题、层层递进、不断优化。
2.2.4强化实验环节,培养学生创新能力
针对上述上机实验中存在的问题和独立学院学生自控力较差的问题,我们在上机实践教学过程中采取以下措施。
1) 对学生进行思想教育和严格管理,将上机情况和期末考试成绩挂钩,端正其上机目的,正确引导上机实践兴趣,充分调动其上机兴趣。
2) 针对上述模块涉及到知识点精心实验内容,要求学生根据所学习的知识进行程序设计。由于学生的理解水平和学习效果不一样,针对不同层次的学生,在每次实验中,将实验内容分为必做实验和选做实验。必做实验为每个学生必须完成的内容,选做部分是针对学习能力比较强的学生提出的更高层次的要求。另外笔者在设计必做实验内容时,对于经典的、易出错的程序结果题也设计在内,学生上机时可以进行一一验证,走出误区,从而提高学生阅读程序的能力。
3) 教师对上机应给予明确的要求,上机前应该以课外练习的形式布置适量题目,要求学生选取适当的数据结构,设计程序核心思想,画出流程图,写出完整的上机程序,而不能照抄书本上的例题。只有通过自己动手编写程序,才能加深对所学内容的理解和巩固,调试自己程序的过程最容易暴露学生学习的不足和缺陷,它可以巩固学生所学的知识,也可为上机做好充分准备。
4) 充分利用现代多功能教学系统,进行上机实验以辅助教学。对此,我系主要采用凌波教学系统,教师通过该系统可以严格监控每一个学生电脑,不准学生做C语言程序以外的事情,并可以检查学生的完成情况。对于上机中出现的典型问题和普遍存在的问题,教师通过广播教学方式,及时快速解决学生的疑惑,并可进行个别辅导,也可以将学生优秀程序进行展示,提高学生的兴趣。实验课结束时,让学生通过此系统提交源程序作为作业考核的一部分。
此外,笔者在第一次上机实验课上,通过一个简单程序,教会学生跟踪调试C程序的方法,使学生以后的实践课时可以试着调试自己的程序,及时发现问题并解决问题;教师应该鼓励学生利用课余时间上机,课外遇到问题学生可以随时通过E-mail和QQ及时向教师求助。这种实验方式不但着重训练了学生对于课程知识的掌握以及阅读程序和编写程序的能力,也着重培养了学生认真的学习态度和创新能力,课堂教学和实践教学相互协助,激发了学生的积极性。
2.2.5成立兴趣小组,调动学生的积极性
选取C语言学习成绩较好的、准备备战计算机二级的学生担任组长,由教师提供实用小课题题目,开展小课题研究。通过亲自调研,查阅文献、收集资料、分析研究设计实施来解决问题,充分调动学生的主动性和创新精神,同时也培养学生的团队协助精神。小课题完成之后,要求各小组的作品在全班演示,相互交流学习,并对自我作品进行点评,教师对其完成的作品进行适当表扬,增加学生学习的自信心。
2.2.6考核方式改革
笔者对非计算机专业的C语言课程采取以下方式进行考核:学生的最终成绩由4部分构成:出勤(10%)、作业诚信(10%)、实验(20%)、期终考试(60%)构成,其中,期终考试由包括笔试(50%)和机试(50%)。由于独立学院学生常有不爱学习、无故旷课、作业抄袭的不良习惯,所以特设出勤、作业诚信分,其中,出勤包括有无缺课纪录,无缺课纪录者得出勤分10分,缺课者每一次扣2分;诚信:有无抄袭记录,如果有,一次扣2分;实验:上机课表现以及提交的程序作业进行给分;期终考试:笔试部分,采取闭卷形式,主要考察学生对C课程的基本理论、基本知识的掌握情况以及理解、阅读程序能力;机试,出10道编程题,学生可以抽取其中的3道题进行编程,在60分钟内完成,主要考察学生的实际动手能力。同
时,上机测试极大地调动学生主动上机调试程序的热情。从考试结果来看,学生上机调试开发能力明显好于往届学生。
3结语
我们对独立学院非计算机专业学生在C语言课程学习过程进行探讨,通过采用模块化的教学内容、重视上机实验操作、多种教学方法的使用,以及对课程考核等方面进行教学改革,激发学生兴趣,提高学生编程实践能力。经过一年多的教学实践,师生反映良好,C语言程序设计考试通过率逐学期增加,目前以达到了93%以上。据统计,笔者负责的2010年3月与9月份计算机等级二级C考试中通过率已分别比2009年9月增加了10%和16%左右,这表明我院实行C语言课程改革已经取得初步成功。C语言课程作为高校计算机教育的基础内容,教学改革任重道远。本课题组下一步将继续展开改革探索,如编写适合我院的模块化C语言教材、重视和强化实训教学,为不断推动独立学院教育事业的发展而不懈努力。
参考文献:
[1]