APP下载

C语言程序设计课程教学改革与实践

2014-04-29任淑美李宁湘陈杰

计算机时代 2014年7期
关键词:C语言程序设计教学设计教学改革

任淑美 李宁湘 陈杰

摘 要: 为提高C语言程序设计课程的教学质量,让学生更好地掌握核心技能,针对课程中教学难点多、语法知识多、学生重视程度不够等问题进行了认真分析,同时结合笔者在长期的教学实践过程中积累的经验,从教学目标、教学设计、教学内容选取、教学方法应用、考核方式等方面进行教学改革,提出了相关的解决方案,取得了较好的教学效果,教学质量明显提高。

关键词: C语言程序设计; 教学改革; 教学方法; 教学设计

中图分类号:TP311.11 文献标志码:A 文章编号:1006-8228(2014)07-65-03

Abstract: C language programming is a common core curriculum in software technical majors of vocational colleges and the software development knowledge essence. In order to enhance the teaching quality, the problems in teaching the C language programming in several years are studied. Based on the training objectives, a teaching reform plan is presented regarding to course contents, teaching material building, teaching methods and teaching results. Corresponding solutions are provided in this article. Teaching reform has obtained good effects and the teaching quality is progressed significantly.

Key words: C language programming; teaching reform; teaching methods; teaching design

0 引言

C语言课程通常在大学新生入校的第一学期开设,是学生接触程序设计的第一门课程,学习难度大,要取得好的成绩相对比较困难。如何在较短的时间内使学生掌握C语言的基础知识,获得编程能力,达到教学目标,是进行教学改革的重点。本文对实际存在的问题进行分析,结合作者近十年的C语言课程教学经验,在教学设计、课程内容组织、教学形式、教学方法和考核方式上大胆尝试改革,积累了一些实践经验,取得了不错的教学效果。

1 C语言程序设计课程教学现状及问题分析

长期以来,在“C语言程序设计”课程的教学过程中,存在着诸多影响学生学习积极性,影响教学质量的不利因素。从主观上来说,如教学方法陈旧、教学手段单调、学生学习积极性不高等;从客观上而言,C语言本身也有知识点多,概念抽象,编程算法使用灵活等特点。以下综合分析现存的几个具体问题。

1.1 教学方法没有创新

教学方面仍沿用老一套的理论加实验模式,实践训练与课堂教学未能很好地连贯,理论教学与实际应用脱节。教师的讲授照本宣科,忽视培养学生的实践能力和创新能力,较少考虑学生的实际学习状况,提供给学生主动思考的机会不多,重点和难点把握不好,引导学生积极思维方面欠缺。

1.2 教学手段相对单一

在教学安排上,理论课和实验课分离,在多媒体教室上理论课,然后过几天再在实验室安排实验课,这样对学习基础和自觉性稍差的高职学生来说很不合适。C语言程序设计这门课程需要实践教学,引入真实案例,培养学生分析问题和解决问题的能力,通过“教、学、做”达到对知识的深入理解和熟练应用。

1.3 学生基础知识薄弱

用C语言进行程序设计需要较为灵活的思维,而高职学生数学基础和逻辑思维能力较弱,习惯于死记概念、硬背知识点。教学中应训练他们思考问题、分析问题和解决问题的独立性。进而,培养其主动性。

1.4 概念抽象,知识点多

C语言中有大量的难以记忆和理解的概念,名词术语多、使用灵活、逻辑性强,在使用时容易出错。部分学生对抽象的内容始终难以掌握,甚至思维混乱,如++i,i--等。学生在学习中对一些复杂、灵活、综合性的算法,感到太难接受,独立编程时不知从何入手,渐渐失去学习的兴趣。

1.5 对学习重视程度不够

教师和学生均对本课程重视不够。有很多学生认为,这只是一门基础课,在以后的学习和实际工作中作用不大,在程序设计工作岗位中很少会使用到C语言,更愿意花较多的时间去学习C++、VB、JAVA等语言,从心理上抗拒这门课程的学习。而有的学校也对本课程重视不够,少有安排具有丰富教学经验的教师承担本门课程的教学。

2 教学设计及课程内容组织的改革与实践

为了探究适合高职软件技术专业人才培养的C语言课程教学特点,笔者经过多年的一线教学实践研究与探索,重新进行教学设计,对课程的设计思路是:以学生为主体,以教师为主导,基于实际工作任务精心构建课程内容,通过项目驱动、任务引领的模式培养学生的程序设计能力。

2.1 教学设计

从分析学生的基本特点入手,融入现代教育理念,重新进行课程的教学设计。本着“以学生为主体,以教师为主导,以实际案例为主线”的教学基本原则,积极鼓励学生通过“认知、理解、应用、综合”四个阶段的学习,达到使用C语言熟练编写程序的学习目标。

2.1.1 以学生为主体

教学以学生为主体,变常规的“教学”为创新的“导学”。充分利用现代化的教学设备提供学习资源,发挥学生的主体作用,提出问题,引导学生分析问题和解决问题。

对于第一次接触程序设计的学生,其编程训练应从小程序和一些简单问题起步,通过一些常用的经典算法和相应的案例学习,逐步掌握编程方法,待有了一定的知识储备后,再逐渐加大练习的难度,实现从算法到程序代码的转化,使学生能够将一个实际问题描述为一个计算机算法,然后再编写相应的程序代码。

2.1.2 以教师为主导

教师课前要了解学生的基本学习情况,了解其已有的知识结构和技能,根据学生的实际情况设计教学环节,根据知识点设置可扩散思维的问题,有重点地讲解,引导学生积极思维和主动学习。对于少数学习特别优秀且自学能力强的学生,可适当加快教学引导,增加学习难度和深度,这样可以在学生中树立榜样,带动其他学生自觉利用所学知识解决相关问题,提高学习质量[1]。

从第一次课开始,教师就要引导学生主动学习。选取的素材可以是当前最热门的IT话题,也可以从不同的专业角度和实际应用为学生介绍学习本课程的意义和作用,同时介绍一些历届学生参加省级和国家级的程序设计竞赛所取得的成绩,列举一些学生被选拔到知名企业实习的例子,如微软实习生等,引导学生对学习本门课程产生较大的兴趣。

2.1.3 以实际案例为主线

教学中引入实际案例,根据解决案例中的问题需要的知识结构选取教学内容,以实际编写解决问题的程序代码作为学习的主线。选用的案例如:“计算机三角形的周长和面积”、“计算机模拟抽奖”、“竞赛现场评分统计”等,选择案例的难度要形成一个梯度,随着学习的深入,学生的编程能力增强,逐渐形成系统化的程序设计思维。

常规的程序设计课程通常都注重语句、语法,以程序设计语言自身的体系展开,学生学习时难免会感觉枯燥难学,学过后又少有用来解决实际问题。而以实际案例贯穿整个教学过程,训练学生像程序员一样思考问题,使之逻辑思维更加严密,有利于学生整体素质的提高,更有利于程序设计课程整体教学水平的提高[1]。

2.2 课程内容组织

2.2.1 课程内容选取的基本原则

教学改革首要任务是教学内容的选择,如何选取教学内容是改革的第一步。“C语言”的语法结构复杂,对初学者学习难度大。高职学生虽然学习基础比本科生略差,却乐于动手、可塑性较强。基于此,课程内容选取的原则是:根据学生情况、课程特点以及后续课程对知识结构的要求,从实际工作需要出发,按所学知识够用好用的标准,确定本课程的必修内容。

2.2.2 课程内容的选取

本课程选择具有实际应用的典型案例作为具体的教学内容。将多个小项目按照编写程序的难易程度渐次推出,使学生把所学内容紧密结合实际应用,在基于工作过程的学习中获得职业能力。本课程具体内容的选取如表1[2]。

3 教学形式及教学方法的改革与实践

3.1 教学形式

⑴ 根据C语言知识结构的内在联系,依次安排教学内容。以各个小项目的开发工作主导教学过程,将课堂学习和工作过程学习融为一个整体。

⑵ 运用项目导向、任务驱动的方式,设计课程引入、启发、讲解、讨论、实训等过程,采用教学做一体化的形式带动学生自主学习,通过工作任务进行能力训练。

⑶ 在每个学习单元中均将应掌握的知识融入项目开发任务中,进而转化为学习任务,激发学生的学习兴趣,让学生在主动学习中完成各个任务。学习过程中注重教、学、做相结合,从讲解、演示、练习、讨论,递进到学生自主学习、独立完成任务。

⑷ 教学过程中注重学生能力的培养。如自主学习能力及独立思考、分析问题、解决问题的能力等。

3.2 教学方法

为确保课程教学目标的实现,让学生通过学习高级编程语言的知识,能够使用C语言编写应用程序,同时培养学生程序设计的思维能力以及探索创新的能力,我们在教学中引入了多种方法进行改革,取得了不错的教学效果。

3.2.1 分析案例,启发引导, 增强学习兴趣

每一次上课都引入一个实际案例。教师对案例进行分析,讲解案例中涉及的知识点,然后提出相关问题,给出初步解决方案。比如递归算法一直是C语言教学中的难点,通过分析如“扫雷游戏”这样学生比较有兴趣的问题来讲解算法的构造, 学生较容易理解递归算法的工作框架及流程。讲解二维数组也是通过“学生成绩计算与统计”这个项目来完成的。通过具体的案例分析, 既能把抽象问题具体化,又可以调动学生的学习兴趣,较快接受新知识[3]。

3.2.2 知识讲解与应用并重,训练程序设计思维模式

讲解C语言的知识点时,不能只侧重于简单的语法知识介绍,还应注重知识的连贯,同时辅以相应的应用技能训练,以免学生死记语法而忽略了程序设计方法。强化“自顶向下、逐步细化分解”的程序设计思维训练,培养学生在编写复杂代码之前能将复杂的问题分解为若干个逻辑结构合理的简单算法的能力,探索解决问题的方法。

3.2.3 “教、学、做”一体化

“教、学、做”一体化的教学方法,符合学生的认知规律,适合运用于项目导向式的案例教学。课堂上教师注重把握好“应用为主线,减少抽象理论描述”的原则,将“精讲多练,以教师为主导,以学生为主体”的教学设计理念贯穿于整个教学过程。注重调动学生的学习积极性,启发学生勤思考、多动手,充分利用好学生的“听、思、做、练”各个阶段,及时检查思和练的效果,培养学生求真务实的科学精神[4]。

3.2.4 分组讨论,培养团队协作能力

对于难度不大的学习内容,可安排学生自学,而对于综合性较强的学习内容,则可以安排学生分组进行讨论。自学和讨论的结果由学生在课堂上向同学讲述,让每个学生都有积极参与的兴趣,这样既能活跃课堂气氛,又能培养学生的自学能力和团队协作精神[5]。

3.2.5 课内外训练相结合,培养学生综合应用能力

课内教师进行引导教学,通过典型案例讲解程序设计的基本方法、程序测试方法、程序调试和排错纠错方法,并为每次课设计相应的实训项目。课内时间有限,鼓励学生课外进行自主学习,将课堂上学习过的内容融会贯通,充分地消化和吸收。安排有一定挑战性的实训项目,鼓励学生课外多训练,倡导学生课后以寝室为单位,组成学习小组,进行讨论、分析和解决问题。鼓励学生积极参加各类程序设计比赛,以赛促学。如参加广东省举办的“高校杯”程序设计比赛,进一步提高学生程序设计的兴趣,提升综合应用能力。

4 考核方式的改革与实践

考核采用闭卷上机编程和实训项目答辩相结合的形式。

4.1 闭卷上机考试

上机测试占总成绩的70%,考核基本知识的掌握情况。主要考核基本语法、常用算法、编写小型程序、测试小型程序和解决一般问题的能力。

教师根据考核要求给出7个编程题,让学生任选5个。题目涵盖基础知识的80%以上,对每个编程题提出具体要求,如使用冒泡法排序、使用选择法排序、使用函数、使用指针等非常具体的要求,以较为全面的考核学生对知识的掌握情况。

4.2 实训项目答辩

实训项目答辩占总成绩的30%,考核学生运用知识的能力、综合程序设计的能力、分析问题和解决问题的能力,以及团队合作能力。以下给出具体实施方法。

⑴ 教师给出8-10个实训项目,供学生任意选择一项。

⑵ 学生5-6人为一组,在给定的项目中选择一项,也可以自行拟定其他的项目。

⑶ 成立答辩小组。答辩小组由任课教师、课代表和各小组指派的一名同学组成。

⑷ 答辩时,先由各小组指派一名同学对他们的项目设计进行讲解,然后小组其他成员接受答辩小组的提问。

⑸ 成绩由答辩小组各成员现场打分,分数统计后去掉最高分和最低分,取平均值记入小组每个成员的成绩表。

这样的考核方式,有利于学生灵活运用所学知识,有利于创新思维的培养。

5 结束语

通过改进课程教学方法、重新序化教学内容、不断完善教学手段、改进考核方式等教学改革,有效提高了学生主动学习的积极性。以往不及格率最高的C语言课程,近三年的及格率均在90%以上,30%以上的学生获得了优秀,对于课程设计绝大多数学生都完成得很好。我校大一学生在2013年的“蓝桥杯”全国软件专业人才设计与创业大赛中取得了一、二等奖的好成绩,这从一个侧面验证了教学改革是卓有成效的。

虽然高职院校对基础核心课程不断提高重视程度,但C语言程序设计课程的教学方法、教学内容、考核方式的研究和改革是一个长期的课题,必须与时俱进,在教学实践中不断探索新思路。

参考文献:

[1] 鲁红英,肖思和,孙淑霞.“C/C++语言程序设计”课程教学改革与实践[J].计算机教育,2013.7:95-98

[2] 康玉忠,甘宏,段传林.C语言程序设计项目教程(第1版)[M].中国商业出版社,2010.

[3] 李杰,刘延岭,苏建华.C程序设计课程教学方法的实践与探索[J].计算机与网络,2014.1:127

[4] 董淑娟.高职“C#程序设计”课程教学方案研究[J].教育与职业,2012.20:125-127

[5] 袁学倩.《C语言程序设计》课程教学改革的探讨[J].职校论坛,2012.21:137-138

猜你喜欢

C语言程序设计教学设计教学改革
以“学生为中心”的《C语言程序设计》教学设计探究
基于翻转课堂的《C语言程序设计》课程教学系统的实现与研究
浅谈《C语言程序设计》课程的教学改革
《C语言程序设计》课程的教学改革与实践
高中数学一元二次含参不等式的解法探讨
“仿真物理实验室” 在微课制作中的应用
翻转课堂在高职公共英语教学中的应用现状分析及改善建议
提高课堂教学有效性的研究
基于人才培养的技工学校德育实效性研究
现代信息技术在高职数学教学改革中的应用研究