段爱华 陈红琳 门秀萍 张子振 木 林
(1.安徽财经大学管理科学与工程学院 安徽 蚌埠 233030 2.呼伦贝尔学院计算机学院 内蒙古 海拉尔 021000)
随着信息技术的不断发展及其在社会各个行业日益广泛和深入的应用,越来越多的计算机软件被应用于解决各种实际问题。因此,社会对于计算机软件设计、开发类人才的需求量也是与日俱增。程序设计语言是开发计算机软件的主要工具之一,为了在较大程度上满足社会对计算机软件类人才的需求,每个高校的信息类专业都会开设程序设计语言类课程。《C语言程序设计》是信息管理与信息系统、计算机以及电子信息工程等信息类相关专业的一门专业基础课,也是其他后续专业课程的基础。因此,学生对于这门课的学习效果,直接会影响到学生对后续课程的学习积极性,以及对本专业的认知程度。这门课程的培养目标在于让学生掌握计算机与人类交流沟通的基本原理,以及如何利用C语言解决现实生活中的实际问题[1]。通过本课程的学习,使学生养成良好的编程风格,具备一定的独立编程能力。
目前国内高校关于《C语言程序设计》这门课程的教学,大多仍然是采用传统的LBL教学方式。这种教学方式往往是以教师为中心、以教材为依据的灌输式教学, 该教学法不利于调动学习积极性及培养学生独立思考能力,且应用该教学法存在导致学生对知识的运用能力较差等明显缺陷,甚至出现有的任课教师在课堂上“自娱自乐”现象[2]。而《C语言程序设计》课程内容涉及到C语言繁琐的语法较多、内容比较抽象,导致学生在学习过程中学习积极性受挫,甚至出现怕学、厌学的心理。最终使得教学质量欠佳,无法达到课程实际培养目标。鉴于以上传统的LBL教学方式缺陷与不足,本文结合在其他专业中应用的PBL教学方法,探讨其在教学过程中的优势,并将其应用在《C语言程序设计》课程教学实践中。
PBL,即Problem-based Learning,是一种以问题为导向的教学方法。这种教学方法最早是在1969年美国的神经病学教授Barrows首先提出的。因此,这种教学方法在医学专业领域课程教学过程中用的尤其较多[3]。后来这种教学方法又逐渐拓展到化学、商学、法律等学科专业课程的教学中。基于以上学科专业课程的教学实践,相对于LBL教学方法而言,PBL教学方法的优势主要表现为以下三个方面:调动学生学习积极性、建立良好师生关系以及培养学生的综合能力。
利用PBL教学方法实施教学,学生所学习的一切内容都是以问题为导向。并且问题是任课教师根据教学内容自己准备设计好,并提前发给学生。当然,任课教师所设计的问题,要使得学生解决问题之后,能够理解所学内容相关的概念以及技术原理。学生需要带着问题,通过独立查找文献资料解决问题。当然,必要时也可以通过小组讨论来解决问题。而在整个教学过程中,任课教师只起指导性作用,并直接对问题给予解答。因此,整个教学过程是以问题为导向,在问题驱动下进行的。因此,PBL教学方法可以让学生由传统的被动接受、被动式学习,变为主动参与、自主学习。使学生自觉地主动学习,增强学习意识,并发展和建立终身自我学习的理念[4]。
无论是小学、中学还是大学,良好的师生关系是保证良好教育质量的必要保证[5]。随着我国教育事业的不断发展,我国高校的招生规模也逐年不断扩大。最终导致师生比例相差悬殊。对于学生而言,高校的学习生活和中学的学习生活不同,很多高校是不安排晚自习的。因此,在大多数高校中,任课老师和学生接触、沟通交流的时间往往就只是局限于课堂上,并且只是上课的时候坐在前排的少数学生和任课老师沟通的机会多一些。所以,我国多数高校师生之间普遍缺乏沟通,教学效果得不到有效保障。
PBL教学方法需要任课老师课前提前设计好问题发给学生,并且给出指导性建议。课堂上需要任课老师参与问题的讨论,讨论结束以后任课老师需要对学生解决问题的思路、方案和结论,以及讨论过程中所发现的新问题、新思路给予评价性总结。因此,基于PBL的教学方法,使得整个教学过程都有任课老师和学生之间的互动沟通交流,及时了解学生的学习动态,并给予指导。从而形成良好的师生双向沟通关系。
首先,PBL教学方法可以培养、锻炼学生的自学能力。如前所述,基于PBL的教学过程中,需要学生自己通过各种途径查找文献资料,寻找解决问题的答案并通过问题的解决掌握教学内容相关的基本概念和技术原理。因此,这整个教学过程也是对学生自学能力的培养锻炼。当然,任课教师的指导在整个过程中也是必不可少的。
其次,PBL教学方法可以培养锻炼学生的团队协作能力。PBL教学方法教学的形式多种多样。不仅有课下的独立自主学习,更重要的是还有课堂上的分组讨论。每个学生可以针对自己所遇到的问题,在课堂上与组员及其他同学展开讨论。从而实现有效的分工合作和知识共享。既锻炼了自己的口头表达能力,又能在讨论过程中照顾到其他同学的感受,培养锻炼了大家的沟通能力和团队协作能力。
最后,PBL教学方法可以培养锻炼学生的创新能力。PBL教学方法使得学生个人的自主学习和小组内和小组间交互式学习相结合。即便是针对同一个问题,由大家的思维方式和思路不同,最后解决问题的方法也会不同。因此,这种教学方法可以让每个学生在讨论过程中获得不同思路、不同思维方式下的知识信息。并结合自身的知识结构和思维方式,在原有问题的基础上,产生新的解决问题思路。从而,有利于培养学生的思维能力和创新能力。
笔者基于PLB教学方法的以上优势,针对公选课班级,就for循环这一节内容的教授,采取PBL教学方式实施了教学实践。具体实施过程如图1所示。
图1 基于PBL的for循环教学实践过程
作为任课老师,在上课之前首先明确for循环这节课的教学目标:如何利用for语句解决需要重复处理的问题,并掌握常用的算法,尤其是最基本的穷举算法。然后根据教学目标,具体安排教学内容,提出设计相应的问题。使学生充分明确本次教学任务、教学重点和难点。从而保证学生在查阅文献资料过程中能够做到有的放矢,确保较好的教学效果。
基于for循环实现原理,提出简单易懂问题:如何判断给定的一个整数是否为素数,如果是素数则输出“给定整数为素数”,否则输出“给定整数为非素数”。虽然这个问题是传统的数值计算问题,但是由于该问题通俗易懂,可以帮助学生更好的理解掌握for循环的实现原理。任课老师在上课之前把问题通知到学生。
学生拿到问题后,首先要明确到底什么是素数。通过查阅资料很容易就可以确定所谓素数就是指除了1和它本身以外,不能任何整数整除的数。因此,对于给定的一个整数,看它是不是素数,只需要把给定的整数m被2到m-1之间的每一个整数去除,如果都不能被整除,则该整数即为素数。经过分析可确定,要解决这个问题,需要使m被除m-2次。利用穷举算法即可解决的循环问题。
通过以上任课老师的引导分析,学生可以确定在解决问题的程序中,需要设置两个变量:一个存储需要判断的整数m,一个是用来确定循环控制次数i;另外 ,还需要提示学生:“如果2到m-1中有一个数能整除m,则其后的其他数就不需要再去判断,直接跳出整个循环。”这就需要用到break语句。在任课老师的逐步引导下,每一组的学生基本都可以实现解决问题的下列程序。
#include
int main ( )
{
int m,i;
printf("m=?"); scanf("%d",&m);
for (i=2;i<=m-1;i++)
if(m%i==0) break;
if(i else printf("%d 为素数.n",m); return 0; } 通过以上小程序,任课老师可以把for循环的语法结构讲解清楚。并通过不断调整程序的结构,让学生体会for循环的语法所需要注意的问题。比如,在 for (i=2;i<=m-1;i++)后面加上分号,然后再让大家运行下程序,看看结果有什么不同。以此让大家确定在for关键字后是不能出现分号的。另外,再让学生仔细观察循环控制变量i的取值范围(上限取值选为√m),可以发现这个问题的穷举范围是可以进一步缩小的,从而将所用的穷举算法进一步优化,提高程序执行效率。 通过将PBL方法应用于for循环一节课内容的教学实践,我们发现虽然所选班级为公选课班级,但是学生对教学内容的参与度明显有了很大的提高。并且在QQ群里和课堂上,与任课老师的互动次数也多了起来,学习的主动性和积极性明显提高。由于在课堂上进行了分组讨论,让每个学生都参与问题的讨论,之前玩手机、带耳机等隐性逃课现象全部都不存在了。在问题讨论结束后,甚至有的个别学生提出,如何利用子函数来解决素数的判断问题。 基于PBL的以上教学实践优势,将这一方法应用到《C语言程序设计》课程整个教学过程中,并按照基础知识、综合知识和实用知识三个不同的层次完成基于PBL的《C语言程序设计》的课程教学。 对于基础性知识教学,主要是某种数据类型的定义、操作等,在教学过程中基于类似问题展开教学:计算机如何实现不同数据的存储?对于综合性知识教学,主要是顺序、选择、循环三种基本程序结构,以及函数和数组等知识,在教学过程中我们基于“如何实现班级所有同学多门课程成绩的录入”等问题展开教学;对于实用性知识的教学,我们主要是结合一些有实际意义的问题,进行实战训练,提升学生的兴趣和自信心,提高实践能力。总之,采用PBL方法进行《C语言程序设计》课程教学,对于学生思维能力、创新能力的培养也起到了一定的激励作用。 本文针对传统的以任课老师为中心、灌输教学模式的缺陷,基于PBL教学方法的优势和《C语言程序设计》课程的培养目标,以for循环为例,实施基于PBL的《C语言程序设计》课程教学实践。实践表明:该教学方法有利于激发学生的学习兴趣,有利于培养学生独立、自主学习的能力,以及锻炼提高学生的团队协作能力和创新能力。但是,任何一种新的教学方法对于任课老师,无论是课前的教学准备工作,还是课堂上的教学实施工作,其要求都比较高。任课老师还需要不断提高自身的教学水平和综合素质,继续不断探索PBL方法在《C语言程序设计》课程教学中的实践。(五) 发现新问题
(六)实践总结
四、结语