以实践教学为中心的C程序设计教学
摘要:针对高校计算机专业人才培养的现状,分析在C程序设计课程传统教学过程中普遍存在的问题以及传统理论与实践教学特征,结合自身教学经验,提出以程序先行为基础和以实践教学为中心的分阶段教学改革思路。
关键词:C程序设计;高级程序设计;实践教学;教学研究;教学改革
C语言作为一门高级程序设计语言,不仅是很多高校计算机专业学生学习程序设计的入门语言,而且是非计算机专业学生的公共必修课,在培养学生分析和解决问题能力方面起着举足轻重的作用。然而,学生普遍反映学习C语言有一定难度,认为C语言抽象、不好理解,尤其对于实践部分更是一筹莫展。实际上,这种局面的出现与教学双方都有关系。
1、教学中出现的主要问题
1.1 理论教学重语法、轻算法,教学目的不强
在理论教学中,大多数教师只是按照传统的教学方法,根据选定教材并对照教学大纲逐一讲解。
这种“满堂灌”的教学方式挫伤了学生的学习兴趣,而重语法、轻算法的教学思路偏离了“教学相长”的教学理念,更偏离了这门课的教学目的。
1.2 实践环节薄弱,教学效果不佳
C语言本身是实践性很强的一门课,大量的理论知识需要在实践中得到应用和巩固,算法和编程思想需要在实践中形成。然而,实际教学收效甚微,主要原因有以下3个方面:①学生学习缺乏主动性,在实践课上随心所欲,没有目的性;②对于在实践课中遇到的困难,学生没有足够的预期,从而降低了学习积极性;③实践与理论教学联系不紧密,包括教师在理论教学中缺乏对相应实践内容的指导和教师在制订实践任务时针对性不强。
以上3个方面的原因导致学生往往直到下课都运行不了一个程序,大大挫伤学习积极性并形成恶性循环,这是一部分学生编程能力相对不高的主要原因。
1.3 考核模式单一
考试在整个教学中起关键作用,是教师教学和学生学习的“指挥棒”。对于C语言程序设计这门课的考核,大部分院校仍采用传统的笔试方式,考核的重点是语法和基本的逻辑推导能力,
忽略了学生对问题的分析和对所学知识的综合应用能力。
2、课程教学思路探索
在传统的教学方法中,教师总是把更多的精力用在理论教学上,认为实践是学生自己的事,是巩固前面所学的理论知识,加深对理论知识的理解。然而通过分析教学中出现的问题,我们认为传统的教学思路不适合实践类课程,因此提出以程序先行为基础和以实践教学为中心的教学改革思路。
2.1 程序先行,逐步强化学生的编程意识
以课本为中心的“重语法”教学模式很容易使知识脱离使用环境,使学生体会不到知识的使用价值,因此教师必须对每一小节的授课内容进行精心设计,让学生逐步建立稳固的学习兴趣,我们采用的方法是“从程序中来:到程序中去”。具体地说,针对每一小节的教学内容,教师首先提出一个较实际且难度适中的问题,然后分析问题并提出解决方法,继而给出相应程序。
在整个分析过程中教师要有意强化学生的编程意识,这个过程不仅能激发学生的学习兴趣,
还有益于学生逐步建立用计算机解题的思想。在学生对该程序所涉及的知识点在宏观上有了感性认识之后,教师再对相关的表达式和语句作进一步讲解,以使学生达到理性认识的层面,这也符合学生的认知过程。编程思想在整个理论教学中逐步渗透,而相关语法知识的学习则是采用“用中学”的方式完成。
2.2 灵活运用教学手段和教学方法,理论与实践相辅相成
好的教学方法能够活跃课堂,激发学生的兴趣和求知欲;也有利于教师分析问题,讲清所授内容;同时可以开拓学生的思路,往往能够达到事半功倍的效果。教师要根据不同的教学内容使用不同的教学方法。下面我们以“指针”教学为例说明各种教学方法。
比喻教学法是把讲授内容比作生活中某些事物,以达到辅助理解的作用。例如,讲指针的定义时,我们可以用“拜访同学”作比喻:A同学要拜访C同学,大学编程课是学什么的A本来就知道C的地址——直接访问;A去B家拿到C的地址——间接访问,A去B家拿到的C家地址就如同一个“路标”,称为“指针”。
类比教学法是将教学中出现的类似知识点进行对照讲解,以达到巩固知识和加深理解的作用,如将函数中简单变量作参数与指针变量作参数类比,类比情况如表1所示。
在比较时,将比较内容用PPT展示,并将比较内容在Tubor C(或VC)环境下的实践结果相对照,激发学生求知欲,同时适当运用启发式教学辅助讲解,引导学生自己分析并最终得出结论。随后,教师可以根据理论教学内容的难易程度,以“阶梯状”形式制定相应的实践任务:①将理论教学中的例子稍加改动,让学生进行“验证性”实验;②理论教学要适当留下“伏笔”,要求学生在实践中“求证”,如教师可将2个同是指针变量作函数参数而改变不同的值的案例相对照,对照情况如表2所示,在理论教学中只分析并讲解其中一个例子,而将另一个留作实践作业;③综合前2项实践任务,设想一个(或多个)应用题目,使学生能综合练习所学知识。
2.3 实践教学分阶段进行,逐步提高学生编程能力
在程序先行的教学思想指导下,我们将实践教学划分为入门阶段、基本编程阶段、编程能力提高阶段和综合编程阶段,分阶段教学流程如图l所示。根据学生各阶段对知识的掌握程度,教师应制订不同的实验方案和标准,并提供相应的指导。当然理论教学也应与实验方案同步,除了完成相应的教学内容外,还要分析实践中出现的典型问题,从正、反两方面强化相关知识和编程思路。
1)入门阶段。
此阶段理论教学内容大致为C语言基础知识、各类运算符及表达式、基本输入、输出语句、选择结构。学生的实验任务分为3部分。第一部分是调试任务,即教师提前给定相应程序并要求学生改错,直到出现运行结果。此类实验旨在将实践与理论相结合,让学生熟悉语法知识并轻松获得成就感,激发学习兴趣。第二部分是运行例题,要求学生运行课本上的某个例题。在编程初期,学生很容易因疏忽出现语法错误。此类实验不仅可以磨练学生,还可以强化学生的语法知识,指导学生进行理论学习。第三部分是简单编程任务,要求学生改编课本例题或解决较简单的实际问题,如实现一个简单计算器或判断某数是否为素数,从而训练编程基本技能。2)基本编程阶段。
此阶段理论教学内容为选择结构和循环结构,学生的实验任务不再有调试任务和运行例题,而主要是通过程序扩展(如由判断某个数是否是素数扩展为判断3位数的素数)、程序变换(如将程序中的Continue改为break、将1-100累加改为累积)巩固编程技能,并让学生在实践中深刻体会知识点的具体作用。
3)编程能力提高阶段。
此阶段理论教学内容大致为函数、编译预处理、数组、指针,主要让学生通过旧题新编(如判断素数)体会新知识的应用,并且加入一些实际性问题(如对一组数进行排序、删除、查等),让学生通过一题多解(如斐伯那契数列)拓展编程思路,达到巩固旧知识和应用新知识的效果。
4)综合编程阶段。
此阶段理论教学内容大致为结构体、共用体和文件,除了让学生巩固基础知识外,还针对某些实际问题(如为本班所有学生建立档案,并让学生完成查、删除、计算总分和平均分、排序等操作)让学生通过分工合作达到掌握知识点和巩固编程技能的综合应用效果。
该环节中,在编程实验题的选择上,教师需充分考虑实验题和理论教学的衔接以及实验题的综合可操作性、趣味性和难易程度。这样不仅可以使理论知识在实验中得到验证和应用,更重要的是使学生获得成就感,从而增强学习兴趣,提高学习主动性,让学生成为课堂的真正主体和主人。
2.4 改革考核模式,实施新的考核标准
考核模式由传统的单纯笔试考核改为“2+2+6”模式,即总成绩=机试成绩×20%+平时成绩×20%+笔试成绩×60%,由注重“结果”向注重“过程”靠拢。根据实际教学效果,教师可以在以后的教学中逐步完善考核机制,这样更有利于学生编程能力的提高;当考核模式成熟到一定程度时,教师甚至可以取消笔试,将考核模式改为“4+6”模式,即总成绩=平时成绩×40%+机试成绩×60%。
3、结语
笔者在多年C语言教学过程中不断探索,取得了较好的教学效果。随着学校及学院教学改革力度的加大,新的考核模式将提上日程,学生的编程能力将得到进一步提高。在此基础上,引导并鼓励学生多参加课外实践活动,也是学生综合能力提高的必备项目。我们深刻地认识到,教学需要不断地探索、改进、完善,教师在教学中应以学生为原动力,不断推陈出新,积极探索新的教学思路,提高学生学习兴趣和教师教学质量。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论