提高医学院校学生程序设计能力改革探索
2015-04-01李玮,李红晓
李玮,李红晓
摘要:C语言程序设计是信息管理与信息系统专业一门必修的专业基础课,作为入门级程序设计语言,对学生后续的程序设计、数据结构等课程有很大的影响。对于非计算机专业的学生,如何更好地提高学生的学习兴趣,既能让学生掌握程序设计的基本思想,又不会因为太枯燥打击学生的学习积极性和学习兴趣,本文进行了探索研究,提出一些改革方案和措施。
关键词:C语言;教学改革;任务驱动
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2014)41-0140-03
作为医学院校的学生,学习程序设计的首要目的,并不是单纯学习一门编程语言,更重要的是提高学生使用计算机解决实际问题的能力。学生学到的不单纯是程序设计语言本身,更主要的是遇到实际问题时,能够用严谨的逻辑思维分析问题,利用计算机解决问题的能力。所以我们对医学院校学生讲授这门课的时候,所有的逻辑主线都以分析、解决实际问题而展开,C语言本身的数据结构、语法等都是围绕这个中心展开。
一、教学中存在的问题
C语言本身数据结构相对简单,语法结构清晰,便于算法的描述。再加上编译环境相对简单,学生可以把更多时间放在程序设计的方法上,所以大多数学校都把C语言作为入门程序设计语言。目前我校的C语言课程针对医药管理学院信息管理与信息系统专业大一第二学期开设,大多数学生刚开始接触程序设计。由于C语言本身专业性很强,概念抽象难懂,学生普遍认为难度大,无从下手,学习积极性越来越差,逐渐失去兴趣,对后续的其他程序设计课程的学习影响很大。究其原因,笔者认为有以下几点。
1.学习目的不明确,在以往的教学中,有的学生觉得自己以后不会从事程序设计方面的工作,学习这个课没有什么意义;即使是对程序设计感兴趣的学生也会感觉C语言是上个世纪70年代的产物,我们还在学习这门课程太落后。这些学生上课、实验不认真预习,课后不总结,学习效果自然不好。
2.教师授课重点不正确。在以往的教学中我们一直沿用传统的授课模式,教师课堂讲授和学生上机操作相结合。上课的时候老师按照书上的章节授课,实验时,老师辅导学生进行调试。这样的授课方式效果并不好,上课的时候,学生好像是都学会了,但上机实验的时候会发现,学生面对实际问题显得无从下手,不知所措。出现这种局面,最主要的原因就是我们日常的教学过程大都是按照程序设计语言自身的体系结构为脉络展开的,使用的教材也一直沿用谭浩强的《C程序设计》模式,按照数据结构、顺序结构、选择结构、循环结构等章节展开,看起来也是由简单到复杂,符合人的认知规律。这样的教学模式太注重C语言本身的语法和细节,忽视了对学生程序设计思想的引导。上课的时候,教师一方面为了完成教学任务,另一方面为了让学生应付各种考试,所以尽可能地多向学生灌输C语言知识点,学生始终处在被动接收的状态,即便是掌握了老师上课时候所讲的内容,都是分散的知识点,遇到实际问题,无法用学到的知识来分析解决。对于非计算机专业的学生来说,即使以后从事程序设计的可能性不大,但是现在计算机已经覆盖到了社会的各个层面,学会如何运用计算机思维去分析问题、解决问题是一项必不可少的技能。
二、C程序设计教学方案改革思想
鉴于教学中出现的许多问题,我们提出以下教学改革思想。
1.引入“项目引导、任务驱动”的理念,激发学生兴趣。“项目引导”是将实践项目贯穿于教学的始终,用项目和任务进行新知识的引入,激发学生学习动力;“任务驱动”是在教学过程中,根据项目总体要求,以完成一个个具体的任务为线索,把教学内容巧妙地隐含在每个任务之中,让学生自己提出问题,并经过思考和老师的点拨,自己解决问题。在学期开始,首先要选取几个趣味性强或者和他们生活息息相关的几个项目给学生展示,让学生充分了解程序设计的神秘,激发学生兴趣。告诉学生这几个项目将会在以后的学习过程中,一直贯穿始终,到学期末的时候,自己将可以主宰程序的运转。把这些项目拆分成为若干任务,就是每节课他们需要学习的知识点。学生的每节课、每个实验都是为了解决整个项目中的某一个问题。这样,学生在学习的时候带着一定的目的,不会觉得学习程序设计没有用;另一方面每次解决了一个问题,都是对学生自信心的一个提升,其学习兴趣也就会越来越浓。我们以学生成绩管理系统为例,系统能够实现的功能包括:各类课程成绩的添加、修改、删除、查询、排名、统计等。学生在看完系统演示以后,对整个项目有一个总体了解。接下来是模块划分,系统能够实现的功能可以转化为C程序的函数,这样就引入了第一个知识点函数。在某一个函数中又如何来实现功能呢?这样就引入第二个知识点C程序的基本结构。查询功能涉及到函数、变量定义、选择结构、循环结构、文件操作等大知识点,函数又包含函数定义、函数调用、参数传递等知识点。这样把一个大的项目划分成为若干个知识点,学生按照项目的要求,每节课学习必须的知识点,完成项目中某一项任务。
2.注重实践环节,加强系统分析设计能力培养。实践环节不仅包括上机调试,还包括上机以前的系统分析设计。通常我们上机练习都是由老师布置课后习题,学生上机调试。书上的大部分习题都是由例题改编而成,学生需要做的就是修改例题,调试完成。这样的实验在学期初是必须的,但随着学习的不断深入,单纯的模仿很难提高学生的能力,必须要引导学生动脑筋思考。这就要求老师布置作业时要根据整个项目的结构、学生学习的进程设计作业,给学生提出新问题。这样就要求学生上交的作业不仅包括程序代码,还包括程序的分析、设计过程,这样才能锻炼学生思考、分析问题的能力。教师在进行实验内容设计上,应该考虑到学生的学习进程、学习状态,在课程的前期教学中,实验内容应该按层次划分成基本实验和提高实验。基本题应该按照模仿例题的方式,让学生通过简单的修改就能实现,比如教材中有两个数字比较大小的例题,可以让学生完成三个数字比较大小的作业,一方面学生可以尽快掌握C语言程序的基本结构,另一方面学生很容易产生成就感,激发学生学习兴趣。在课程的后期教学中,实验内容以综合性实验为主,这个时候的实验不能要求所有学生都全部完成,应该分组进行,让前期表现优秀的学生充当团队负责人,带领其他学生完成项目。为了培养学生分析问题解决问题的能力,在实验遇到问题的时候,首先要求团队之间有一个内部交流讨论的过程,这个过程应该是团队内部学生进步最快的一个过程,应该作为团队考核的一部分。如果内部不能得出结果,可以上网查阅其他资料,和其他团队或教师交流。在进行程序设计指导过程中,教师不应该统一标准,应该尊重每个学生的个体差异,对于不同的学生要鼓励其从不同角度认识问题,使用不同的方式描述算法,用不同方法求解问题,同时给予适当的科学的评价。在实验内容的设计上,针对同一个实验任务,要鼓励学生使用不同的算法来实现,从而培养学生计算思维的多样性和创新性。
3.充分利用丰富的网络资源。当前网络技术飞速发展,覆盖着整个社会的各个层面。绝大部分学生都可以通过图书馆、宿舍宽带或者手机接入互联网。这样使得学习的方式更加多种多样。为了让学生课后也能自主学习,网络学习平台是一种新型的学习方式,它在悄然地改变着我们的生活,为我们提供了良好的学习环境和互动学习的机会。我们自主开发了学生在线学习平台,不仅对学生开放了教学大纲、电子教案、实验指导等模块,学生还可以通过这个平台提交作业,单元测试,与老师在线交流,随时提出问题。这种新型的学习方式,为我们提供了新的更广阔的学习空间,也在悄然改变着我们的学习观念和学习方式。
4.构建多样化的考核方案。教学评价是检验教学质量并使教学不断改进和完善的重要环节,同时也是指引学生学习方向的一个灯塔。传统的考试基本上是期末成绩+出勤+实验报告。这种形式过于死板,理论性知识较多,实践操作较少,不利于培养学生的综合能力。老师在教学的过程中也受到考试的影响,尽可能多地灌输C语言知识点。如果不在考核中加入学生程序设计思想、分析问题解决问题的能力等,整个教学方法设计就没有办法执行。“项目引导、任务驱动”的考核方案应该包括学生的知识能力、素质表现和技能表现三部分。考核形式应该包括形成性考核和终结性考核相结合的方法,实现评价过程的动态化。每个项目考核时应该涵盖知识、技能、态度三方面。考核成绩的评定在项目化教学中进行,以项目完成情况为基础。既重视项目成果,也重视项目实施过程中的态度。根据程序设计课程的特点,我们采用全过程考核方式,将学生的成绩认定贯穿于整个学期。终结性考核即期末成绩的比例下降到50%,形成性考核即平时成绩的比例上升到50%。在形成性考核部分中,课堂出勤占20%,包括实验的出勤和参与情况、实验过程中的态度、纪律。团队考核占30%,团队成绩中,负责人占60%,其他团队成员占40%,考核内容包括团队的创新能力、协作能力、沟通能力。创新能力是指团队对于问题能给出的解决方案和算法是否合理。协作能力是指团队对于给出的综合性实验,是否能合理分配人员角色,人尽其才。沟通能力是指团队在遇到问题时的讨论情况,是否及时有效。课堂表现占30%。课堂表现分成两部分:①课上实训题目完成与操作情况。程序完成情况占60%:能正常运行,无语法错误;若有错误,经学生本人调试后能正常运行;基本功能完备;在完成基本功能的基础上,有扩展。操作情况占40%:要求操作熟练,各种操作有提示。②课上解答方法讲解部分:每讲解一题加分,如有不同解答方式可继续讲解,有创意的加分。实验报告占20%。这种考核办法一方面降低了期末成绩的比重,大大降低了学生临时抱佛脚的想法;另一方面平时考核比重增加,促进学生学习的主动性、积极性。以往学生的学习过程,随着课程难度逐步增加,学生越来越难学懂,也不愿与老师交流,兴趣越来越低。在新的考核方案中,每个学生都存在于一个团队中,有了一个互相交流的平台,有问题都可以相互交流。另外团队的成绩与自己息息相关,大家都愿意为了团队的成绩尽心竭力,既能学到更多程序设计的知识,还能培养学生团队协作、与人相处的能力。
随着社会的不断发展,社会对学生的要求也在不断提高,如何培养提高学生的创新精神、团队意识及分析问题、解决问题的能力,我们需要不断对教学方式方法改进创新,才能适应社会新的发展需要。
参考文献:
[1]张海林,杜忠友,孙晓燕.计算机专业中的C语言教改方案探讨[J].中国校外教育,2010,(08):168.
[2]刘克兴.信管专业C语言教改初探[J].科技致富向导,2010,(29):27,36.
[3]王可,何福保.《C语言程序设计》教改的探索和实践[J].考试周刊,2013,(A2):120.
[4]欧新良.非计算机专业《C语言程序设计》课程教改初探[J].长沙大学学报,1999,(02):80-81,70.
基金项目:2013年山西省高等学校教学改革项目(J2013081);山西中医学院专业建设与教学改革第三批立项项目(2013107、2013110)