以能力培养为导向的C语言程序设计教学探讨

2016-10-08 15:25肖丹凤魏零
广西教育·B版 2016年7期
关键词:项目导向C语言程序设计能力培养

肖丹凤 魏零

【摘 要】分析当前C语言程序设计教学存在的问题,以及该课程的特点,找出问题症结的所在,提出以能力培养的为导向的C语言程序设计教学改革研究。

【关键词】能力培养 C语言程序设计 教学改革 项目导向 自主学习

【中图分类号】G 【文献标识码】A

【文章编号】0450-9889(2016)07C-0139-02

C语言具有功能丰富、表达能力强、方便使用、应用面广、目标程序效率高、可移植性好的特点,因此很多高校的理工科专业都将其作为计算机程序设计类课程的通识基础课,同时也是计算机专业的必修专业基础课,是后续数据结构、面向对象程序编程、软件工程等课程的基础。通过对本门课程的学习,学生可以掌握程序设计中分析问题、解决问题的能力,提高计算机应用能力和综合能力。但是,教学实际中存在不少的问题,导致难以培养学生的程序设计能力与创新能力,造成毕业后难以适应工作岗位。对此,笔者所在的教研室以应用型技能人才培养为教学目的,分析学生的现状以及C语言程序设计课程的特点,提出以能力培养为导向的C语言程序设计的教学模式。

一、C语言程序设计教学现状

(一)教学内容多而散。C语言知识点多,使用灵活,一般的教材前面几章都是介绍概念、名词、语法等,而这些又是该课程的基础,任课教师通常采用“先理论,后实例,再习题”的传统教学模式,先详细介绍C语言中的数据类型、运算符、函数语句等基本内容,而这些内容往往是比较枯燥无味的。当教师一节又一节地讲述着枯燥的基本概念,难以理解的语法等后,学生感受不到C语言的强大功能和魅力所在,相反容易产生枯燥乏味、疲倦的心理,学习激情大打折扣,给他们的学习带来了困惑。

(二)课时太少。桂林航天工业学院本科学生的C语言程序课程为48课时,理论30课时,实践18课时。对于首次接触计算机程序设计语言课的学生而言,他们缺乏计算机语言思维能力,难以在有限的课时内学好。教师通常为了完成教学大纲规定的知识点,一直赶教学进度,一堂课下来,讲授大量的知识点。“填鸭子式”的教学,学生被动地接受,而学生因赶不上教师的进度,出现即使想听也听不明白的状况。久而久之,出现部分学生因听不懂而不想听,越不想听就越跟不上进度而越学不懂的恶性循环,最终以睡觉、玩手机来打发上课时间。

(三)实验课时得不到充分使用。由于学生课堂上所学的内容没有得到充分的消化,加之学生学习缺乏积极主动性,没有课前预习课后复习,学生普遍存在“重课堂,轻实验”的态度,课前没有充分准备,到了机房才开始读题,然后再着手写程序,只能对教材上的简单例子进行验证,需要独立完成程序编写常常是一头雾水,不知如何下手。另外,程序出错提示为英文,部分学生英语基础差,一旦碰到程度调试出错,就不知从何解决,缺乏刻苦钻研的精神,甚至出现畏惧英文的反应,实验课上依赖性强,一遇见错误就问老师,等待老师解决问题,从不想办法自己解决,不培养解决问题的能力。即使老师讲解完了,下次碰到类似的问题一样解决不了,达不到举一反三的效果。这样的实验课下来,部分学生一道题都做不完,白白浪费了上机的时间。

(四)考核方式单一。C语言课程大多还是采用传统的笔试形式,笔试主要采用选择、填空及简单的程序设计题。甚至有部分老师以笔试一锤定音,很多学生为了不挂科,沿用中学阶段应试性的学习,只注重基本语法、概念等相关知识,而忽视了程序设计能力的培养,学生缺乏分析问题、解决问题的逻辑思维能力,从而失去了学习C语言程序设计课程的本意,严重偏离了应用型人才培养的目标。

二、以能力培养为主导的教学改革

针对上述问题,笔者所在的教研室经过长期的教学探索,提出了以培养能力为导向的教学模式,打破常规的“先理论后实践”的教学模式,由“重课堂、轻实践”转变为“课堂实践双管齐下”。在整个C语言程序设计课程的教学过程中,从教师的教与学生的学两方面下工夫,将培养学生逻辑思维能力、分析问题能力、解决问题能力作为主线,在培养能力的过程当中逐步引入语言知识,提高语言应用能力。

(一)项目驱动的教学方式。任课教师综合考虑学生的基础与该课程的课时数,结合专业特点,对授课内容进行精心设计。课前教师吃透课本,对课本内容进行调整,围绕教学任务精心设置教学内容,避免照本宣科。任课教师以程序设计为主线,以能力培养为导向,采用项目驱动的教学方式,设计环环相扣的具体案例,将零散的知识点融入具体的实例讲解中,打破“先基础后实例”的教学模式,避免“纯理论”的教学。通过设计一个具体的实例贯穿整个教学内容,采用循序渐进、由简单到难的方式,通过问题的深化和功能的扩展,拓宽知识的广度和深度。比如,学生成绩处理系统的实现。首先通过简单的给定一个学生的两科成绩,计算出其平均分。通过分析,需要将学生的成绩保存在计算机中,从而引出变量的定义、数据类型、数据表达式、输入输出语句等。等学生熟悉简单的顺序结构程序的编写之后,将问题深化,以学生的成绩来评定其等级,从而引出选择结构。再将问题进一步深化,以评价多个学生的成绩等级来引出循环结构。为方便多名学生成绩的存储统计,引出数组及指针的相关内容,最后可以通过结构体类型来实现优化等。整个教学内容融合为一体,由简单到复杂,以解决具体问题为导向,通过培养学生的分析能力、解决问题的能力,达到“学用结合”,最后能运用计算机语言解决具体的实际问题。

(二)提高学生的自主学习性,激发学生学习兴趣。教学过程中,教师应该以学生为中心,以学生为主导。教师在课前做好充分的准备工作,结合其专业特点,努力抓住学生的兴趣点来选择实例。第一堂课教师先演示生动形象的实例,通过实例来展示C语言的无穷魅力,吸引学生的眼球,让学生一开始就对该课程产生浓厚的学习兴趣,实现“要我学”到“我要学”的蜕变,由“被动学”变为“主动学”和“乐意学”。然后教师再进一步阐述学习该课程的目的——通过该课程的学习来达到使用计算机解决问题,引出以能力培养为导向的目的,凸显出学生的主导地位。在教学过程中,教师应该根据学生的基础来设计教案,按照学生学的规律进行教学,即学生如何学,老师就该如何教,力争达到教与学的统一。教师可以考虑将教材中的实例用贴近生活形象生动的比喻来讲解,让难以理解的知识点变得通俗易懂,激发学生的学习兴趣。比如在讲授将两个变量a和b实现交换时,学生可能一下想不到解决的方法,但如果我们先举一个生活的小例子:假定现在有两杯饮料,一杯橙汁和一杯可乐,现在需要对两个杯子中饮料进行交换,如何实现?学生立刻会联想到借助于一个空杯就可以实现了。教师顺着学生的思路讲解,C语言中变量的交换原理也跟饮料的交换一样,假定用一个中间变量t来相替代一个空杯,则使用语句:t=a;a=b;b=t来实现。这样学生很快就明白了,而且会给学生留下深刻的印象,不易忘记。

(三)紧抓上机,注重学生动手能力的提高。计算机的课程具有很强的实践性,通常计算机知识的掌握是“百看不如一练”,C语言更是如此。很多学生在课堂上老师讲解能够听懂,课本中的例题也能看懂,可一到机房碰到实际问题就是一头雾水。究其原因,就是练得太少,程序写得太少。上机可以很好地验证学生对知识掌握程度,锻炼学生的编程能力。桂林航天工业学院目前该课程的课时有限,理论30课时,实践18课时。如何在有限的时间里完成更多的任务,这要求教师从实验设计与实验辅导两方面进行改进:一是要求教师和学生实验前做好充分准备,明确每次实验的目的。教师合理设计实验内容,可以根据学生能力的差异,设计不同难度的实验题,即基本题和挑战题。基本题为必做题,是对基本知识的巩固与强化,要求大家独立编写程序,调试程序。挑战题为选做题,综合性高,供学有余力的同学选做,可以单独完成,也可以小组合作,编程能力强的同学可以带动基础差的同学。设置奖励机制,完成挑战题的学生可以加分,这样既能调动学生的积极性、创新性,也能培养学生的团队合作能力。二是实验辅导方面,目前上机的环境为Visual C++,所有的提示都是英文的,为方便学生快速找到程序出错的原因,教师可将常见的出错提示编成讲义或做成课件发给学生。一旦学生遇到问题,可以先自行对照讲义找到出错的原因,从而快速解决问题。另外,教师也应该对学生上机操作中遇到的问题和常犯的操作错误进行归纳总结,及时有效地清除学生学习过程中的障碍。端正学生的上机态度,正确引导其上机兴趣,充分调动其积极性,坚决杜绝学生利用上机时间上网、游戏、娱乐等情况的发生,从而达到事半功倍的效果。

此外,教师应该检查每个同学的编写程序,并对好的程序给予表扬与展示,指出其优缺点,并提出改进的思路。

(四)构建网络教学资源,提供课外学习环境。在注重传统教学的同时,应重视网络教学的辅助作用。针对本课程教学的特点,教师应建设立体化的教学资源,将课本知识与网络资源优化整合,将所用教材、实验、电子教案、网络课件和网络教学支撑平台等教学资源形成一体,通过文本、图形、图像、动画、交互、仿真、视频等多种媒体方式展现各个知识点,充分强调各自的特点。任何学生在任何时候、任何地方都能借助网络自主学习,将课堂教学延伸到课外,突破“时间空间”的限制。通过课程论坛实现教师与学生、学生与学生互动讨论,及时解决学生学习过程中遇到的问题。

(五)改变传统的考核机制,建立以能力为主的考核方式。课程考核是检验学生学习效果、评价学生学习成绩的重要环节,而考试则是检验学生对知识掌握的常用手段。传统的教学都是采用笔试,一张试卷定高低,从而导致采用应试型学习,学与用出现分离,学生靠死记硬背来争取高分,忽视学生编程能力的培养。为解决“会考试”和“会编程”不一致的矛盾,需要建立以培养学生编程能力为本的考试方式。教师在上第一堂课时就明确告诉学生该课程采用的考核方式,基础知识与编程能力的结合,建议笔试成绩占40%,上机实验成绩占40%,平时成绩占20%。笔试主要是考核一些最基本、关键的概念为主,题型主要包括填空、选择、读程序写结果、程序改错、编写程序等。

另外,还可以鼓励学生参加科目竞赛与全国计算机等级二级考试,学生通过备战二级考试可以加深对该课程的学习,同时也可以为以后的就业增加一个砝码。

【参考文献】

[1]叶健华,黎峰.“项目驱动+案例教学”模式在C语言教学中的应用[J].济南职业学院学报,2009(6)

[2]李翠玉,刘彤,周勇.应用型工科院校C语言程序设计课程教学改革的探讨[J].福建电脑,2014(8)

[3]陈莲君,朱晴婷.培养能力为主线的C语言程序设计教学研究[J].计算机教育,2011(7)

[4]胡春安.基于信息技术的公共基础课辅助教学模式的研究[J].江西理工大学学报,2011(6)

[5]罗强,铁治欣.C程序设计成绩与编程时间关系分析研究[J].浙江理工大学学报,2013(1)

【基金项目】桂林航天工业学院2016年度教学改革研究项目基金资助(2016JB08)

(责编 卢 雯)

猜你喜欢
项目导向C语言程序设计能力培养
基于《证券投资实务》课程的项目导向教学改革思考
翻转课堂在项目导向课程中的应用
以“学生为中心”的《C语言程序设计》教学设计探究
基于“项目导向”的税法实践教学体系研究
基于翻转课堂的《C语言程序设计》课程教学系统的实现与研究
浅谈《C语言程序设计》课程的教学改革
《C语言程序设计》课程的教学改革与实践
数学归纳法在高中数学教学中的应用研究
信息技术教学中学生自主探究能力的培养探析
基于CDIO的大学生职业素养培养研究