薛冰冰,李 敏
(河南科技大学 信息工程学院,河南 洛阳 471003)
基于问题导向的C语言程序设计教学改革与探索
薛冰冰,李 敏
(河南科技大学 信息工程学院,河南 洛阳 471003)
本文分析了当前C程序设计课程教学过程中存在的问题,提出在C语言程序设计教学中采用问题导向为主,逐层深入为辅,循序渐进地转换学生的学习目标,在潜移默化中培养学生的编程能力,从而激发学生的学习兴趣,提高C程序设计课程的教学质量,同时还提出在实施基于问题导向教学模式时应注意的问题。
C语言;问题导向;教学改革
《C语言程序设计》是高校理工类学生的一门必修课程,各院校开设C语言课程的教学目标是希望学生通过对该课程的学习不仅能够掌握高级语言程序设计的基础知识和基本方法,而且进一步培养和提高学生的程序设计和调试的能力。因C语言程序设计的开课对象为大学一年级新生,且该课程内容抽象而生涩,不像可视化语言具体生动,导致大一学生感觉该门课程晦涩难懂,入门较难。如果老师还按照传统的教学方法讲授,将造成学生对计算机的学习在刚刚开始便畏而止步渐渐失去学习的兴趣,因此我们提出在这门课程的实际教学中采用以问题导向为主,逐层深入为辅,循序渐进地转换学生的学习目标,在潜移默化中培养学生的程序设计和程序调试能力,从而激发学生的学习兴趣,提高C语言程序设计课程的教学质量[1]。
1.照本宣科缺激励。在C语言教学过程中,课堂教学普遍是按教材的章节顺序来制作课件,虽然课堂上也采用多媒体教学,却局限于讲课过程中放映课件和演示C程序的模式,且教学过程中教师自顾自地对着课件口若悬河,这就使得课堂教学乏味抽象、枯燥,导致学生听课被动消极。这种方式的教学激发不出学生的主动性和独立思考问题的能力,导致课堂气氛沉闷,学生上课精神倦怠,最终达不到理想的教学效果。
2.重理论,轻实践。大部分教师教学时一味地强调理论知识,与实践教学相脱离,导致了相当一部分学生在上理论课时不了解C语言能做什么,不喜欢听课,导致学生在理论课上既不动手写程序又不动脑筋思考问题。实践教学环节重视不够,缺乏与实际问题相结合的能力的培养。不能增强学生自主探索知识和运用知识解决实际问题的能力。忽略了学生自己动手编程能力的培养,如果只是一味地强调基本语法,不亲自编写程序,解决实际问题,永远都学不会编程。学生只有在编写调试程序的过程中才能不断丰富自己的实践经验,增强自信心。
3.缺乏从计算机的角度来思考问题。如何让计算机实现两个加数相加?如何让计算机解决鸡兔同笼问题?这些题目小学生都会做,关键是如何告诉计算机,让它来“帮”我们做。从某种意义上说我们是动动“口”,计算机是动动“手”。要让学生明白计算机只是一个“听话”的执行者。
4.无法学以致用,联系实际。在C语言如何解决实际问题方面没有太多联系,导致课程教学较为枯燥。对于学生而言,他们更乐于接受与实际相关联的内容,如果我们一味注重理论灌输与传统例题的练习,容易使学生逐渐缺乏学习兴趣,而难以达到应有的教学效果。
5.课程性质设置方面。各学院关于C语言程序设计的课程设置不同,有必修课,有考查课,设置不同导致学生对该课程的重视程度不同。因此,鉴于上述C语言教学中存在的问题,本文提出在C语言程序设计教学中采用问题导向为主,逐层深入为辅,循序渐进地转换学生的学习目标,在潜移默化中培养学生的编程调试能力这一教学改革新思路,并取得良好的教学效果。
问题导向式教学,是指教学过程是在教师的启发诱导下,以学生独立自主学习和合作讨论为前提,以学生原有知识、周围世界和生活实际为参照对象,为学生提供自由表达、质疑、探究、讨论问题的机会,让学生通过个人、小组、集体等多种解难释疑尝试活动,将自己所学知识应用于解决实际问题的一种教学形式。该教学方法的最终目的在于引导学生通过主动学习来获取新知识、发现新问题。
1.理清教学思路。问题导向式教学活动是一个不断提出问题的过程。整个课堂的内容由环环相扣的问题组成,教师将选取的问题分解成多个子任务,每个子任务都能引入新的知识点,且子任务中引入的知识点是逐步扩展的。这样,在教学过程中,学生通过子任务的逐层深入解决,循序渐进地掌握所引入的知识点。这就要求在授课过程中教师的教学思路一定要很清晰,教师的教学思路清晰是上好一堂课的关键所在,因而教师在认真分析研究教材的基础上,有意识地按重点、难点来提出问题、分析问题、解决问题,层层展开课堂教学。由于设计的子任务能够自然引入新知识,学生总是可以从一个比较容易解决的已熟悉的内容进入到新知识点的学习过程中,所以学生兴趣高,能主动参与到问题的讨论中,同时,通过不断地探索每个简单子任务的求解过程,学习者能够体验到胜利的喜悦,从而产生学习的成就感,进而转化为学习的动力和源泉。因此要求教师在进行子任务的分解时,能按照知识点逐步扩展,由易到难,均衡分解。这样学生一步步地完成整个任务之后,会非常有成就感,同时激发了编写程序的兴趣,从而产生一种学习过程的良性循环[2]。
2.提出问题。提问是“问题导向式”教学法的精髓,而问题的设计直接关系到教学的效果。总的来说,问题设计要注意难度的层次性、内容的探索性,要有利于充分激发学生的兴趣,调动学生的学习积极性。若问题过于呆板、机械,学生只是回答“是”或“不是”,教学就收不到良好效果。提问时教师可以对问题的形式和内容进行“包装”,使学生在思考问题时不会感到枯燥、乏味。例如,在讲选择结构时,教师可以提问:生活中,我们的选择是一种、二种还是多种?学生对这方面很熟悉,可以很快回答出来。教师可以继续提问:那你们知道C语言中的选择结构有几种吗?通过这些提问,学生的学习兴趣可以充分调动起来。不同的学生,其知识基础和理解能力不尽相同,有时甚至相去甚远。教师提问要有层次性,既要有简单易答的问题,也要有具有一定难度的问题。问题的设计要先易后难,由此及彼。不同层次的问题选择不同的学生回答,尽量照顾到每一个学生的实际水平,这样可以有效提升学生的自信心。为培养学生的创造性思维,教师的提问应有一定的探索性。以问题为线索,引导学生逐层寻求解决问题的方法,培养思维的发散性和灵活性。例如在讲解循环时,先提出一个基本的输出问题即如何在屏幕上输出“***”,该问题可以让学生通过自己的独立思考进行解答后然后再提出如何只用printf(“*”)来实现这一输出呢,再提出如何有很多个“*”我们应该如何处理呢。一步一步,逐层深求地引入循环。
在设计问题时。对于新知识点,教师所设计的问题,要在之前掌握的知识点的基础之上来提问题,慢慢引入一些新知识,然后通过新问题来吸引或提醒学生主动思考和解决这些问题,最终达到理解基本知识、基本概念的目的。对于综合知识点,要注意知识点之间的关系,不仅要在每个知识点上设计问题,还要从知识点的综合运用角度设计问题。C语言的知识点具有较强的连贯性,因此,多从知识交汇点设计问题有利于培养学生的应用能力和对C语言的整体把握。对于习题课,教师不仅要能熟练地解答每一道习题,而且要悟透其中的基本语法和算法。从这些语法和算法入手,对不同的题型进行归类,由此设计问题,引导学生触类旁通,尝试独立解决提出的问题,提高学生对C语言的学习兴趣。
3.分析问题。分析问题能够让学生感受、评价与研究各种各样的实践问题,培养他们解决实际问题的能力,具体为:可以培养学生的探究意识;可以增加学生的实践知识;能够提高学生的鉴别能力;同时也能促进教师教学能力的提高;例如“s=1!+2!+3!+…+10!”,在分析这个问题时,一定要抓住问题的关键。将该题目与s=1+2+3+4+…+n对比后发现该题目同样是一个数项求和的问题,这说明它还是需要用循环结构来解决,所不同的只是每一个求和项发生了变化,不再是简简单单的一个数,而是一个阶乘,而一个数的阶乘f=1*2*3*4*…*n显然又是一个循环,这样我们就分析到:求阶乘之和是一个循环,求阶乘又是一个循环,所以该问题应该是一个二重循环。其次,分析问题要遵循认识规律,由浅入深。针对上述例子,分析问题的关键后,可以继续提问。设想将10改为n,n的值由用户来指定,将又如何实现呢?
4.解决问题。解决问题即找出解决问题的方法并用C语言去描述它。描述之后可将此问题转化为上机时实验内容,解决问题的方法正确与否,描述解决方案的语法正确与否均须上机验证,这样不仅加深学生对C语言基本语法的理解,也提高了学生调试程序的能力,并且在上机练习的过程中重视知识迁移作用,以求学生能够“举一反三”,触类旁通。德国教育学家第斯多惠曾说:“教学的艺术不在于传授本领,而在于激励、呼唤。”[3]在循序渐进地解决问题之后激发学生的编程兴趣,也是问题导向式教学的主要目的之一。
问题导向学习法是比较新颖的教学方法,在实践的过程中会出现许多意料不到的问题和困惑。只有通过分析,反思教学过程中成功的案例、失败的原因,才能不断总结实践经验;也只有把握问题导向在实施过程中应注意的问题,做到心中有数,才能在问题导向学习的课堂探究活动中,刺激学生对课堂活动中问题的好奇心和求知欲,激发他们分析问题、解决问题、完成任务的成就动机;在问题从分析到解决的过程中,拓展学生的多种思维能力即发散思维与复合思维、分析与辩证逻辑思维、抽象思维与形象思维;当问题得到成功解决后,又能增强学生的自信心,激励学生新的创造动机促使问题导向学习法的应用不断成熟。
1.设置问题要精心。问题是问题导向学习法的重中之重。教师要通过精心设计问题,不留痕迹地提出问题,引导学生分析问题,帮助学生梳理解决问题的思路,使学生的思维始终处于“激活”的状态,不仅注重学生在主动探究过程中构建知识,而且可以开启学生广阔的思维空间,提高学生的逻辑思维能力,有助于增强学生的记忆力,使学生能较快地接受书本知识。
2.教师角色的把握。在问题导向教学过程中,不仅要求教师掌握更高的教学技巧,更重要的是教师要不露声色地从前台退到后台,从显性的控制到隐性的诱导。让学生真正有一个“独立”思考问题的机会,允许学生按自己的理解,用自己的思路去思考和回答问题,学生在学习中充分发挥自己的个性特长。教师不应是学习和行为的唯一评判者,除了教师的及时评价外,还要注重学生的自我评价和学生之间的相互评价,教师管理学生的方式应当充满民主的气氛,探究、冒险、提出新的想法、对失败和挫折的无所畏惧、尝试新事物后的喜悦等都只有在民主的师生关系中才能实现,这将有利于学生主体精神的弘扬与主体地位的确立[4]。
3.需要学生具有自主学习能力与合作精神。在C语言教学中采用问题导向学习法进行的教学改革,更加突出学生的主体作用。学生主动学习能力和合作精神的好坏也直接影响教学效果,在学生寻找问题答案的过程中,建立学生自己的知识结构,同时培养了学生搜集和处理信息的能力,获取新知识的能力,分析和解决问题的能力。
教学改革的研究和实践是一项长期的、持续渐进的过程,传统的教学方式和教育观念只重视知识的获取和给予,忽略了素质和综合能力,这就要求教师敢于打破传统的教学常规,不断进行教学改革与实践的探索,逐渐提高学生分析问题、解决问题、驾驭知识的综合能力,不断提升教学质量。
参加文献:
[1]杨盛泉,刘白林,刘萍萍.简谈C程序设计课程的任务驱动教学方法[J].计算机教育,2010,(6):131-140.
[2]扬朝霞.以螺旋式案例实施面向对象程序设计教学的研究川[J].计算机教育,2010,(5):116-120.
[3]第惠多斯.德国教师培养指南[M].袁一安,译.北京:人民教育出版社,2001.
[4]王志华,朱咫渝.问题导向学习法在信息素养教学中的运用[J].图书馆,2007,(4):56-58.
G642.0
A
1674-9324(2014)45-0142-03
河南科技大学校校级教改项目