APP下载

答辩考核方式在编程实践类课程中的应用

2010-12-31韩玉民

计算机教育 2010年24期


  摘要:对于以案例教学为主、项目驱动的综合编程实践类课程,其教学目标是培养学生对实用软件项目的综合分析、设计和开发能力,强调学生综合实践能力的培养。针对此类课程,文章分析了传统考核方式存在的不足,并基于改革实践,介绍答辩考核方式的设计思想、实施过程和效果,为编程实践类课程考核方式的改革提出新的思路。
  关键词:编程实践类课程;考核方式;答辩考核;案例教学
  
  目前,软件行业发展迅速,软件开发技术和工具日新月异,为适应软件技术的快速发展,软件技术人才的培养在人才培养方案、课程体系、教学模式的改革,乃至具体的课程设置及考核方式选择中都面临新的挑战。众多的软件学院软件技术类人才的培养目标通常是“培养具有较强编程能力和软件工程能力的应用型人才”,即强调学生综合实践能力的培养[1]。培养计划中会存在很多的编程实践类课程,如我院软件技术(.Net方向)和计算机信息管理专业开设的C#程序设计(上、下)、C#应用程序开发、基于C#的管理信息系统开发、ASP .Net程序设计等;软件技术(Java方向)开设的JAVA程序设计(上、下)、JAVA应用程序开发等[2]。
  笔者作为C#程序设计课程组的负责人,一直从事课程群的教研工作。课程组任课教师经过几年来不断的摸索和实践,总结出了一套以答辩方式考核综合编程实践类课程的科学、可行的方法体系。
  1传统考核方式存在的问题
  传统的考核方式有笔试、机试、笔试+机试。对于上述编程实践类课程,通过笔试或上机考试已经无法准确评价学生对这类课程的掌握情况。例如,C#应用程序开发课程是软件技术(.Net方向)第三学期的课程,在之前的两个学期里,学生已经学习了C#程序设计(上、下)两门基础课程,已经掌握了C#语言所有的基本知识点。C#应用程序开发课程主要是训练学生如何使用已掌握的C#语言正确、高效地进行企业级应用软件的设计与开发。课程中涉及到的都是成百上千行代码的中型项目实例,通过这些实例向学生传授多种在大型应用软件开发过程中用到的编程经验、技巧和方法,如软件设计模式、网络编程与多线程结合、游戏开发技巧等。
  对于C#应用程序开发,我们在第一届学生中采取了“笔试(50分)+机试(50分)”的考核方式,但结果并不令人满意。因为这门课程中需要让学生掌握的经验和技巧只能体现在大规模编码的过程中,仅仅通过选择题、填空题、简答题来考核,是不科学的,即使是编程题也不能很好地考核到这些知识点。毕竟笔试这种纸质答题方式的编程题允许学生书写的代码量太少了,而上机考试的时间又很有限,出太大的题目学生做不出来,不可能全面考核到学生各个方面的技能掌握情况。
  尽管完全机试的考核方式从一定程度上可以考查出学生的编程能力,但仍然存在一定的片面性和局限性。一方面,课程的内容包括图形图像处理、数据库应用、网络编程等多个方面,如果有些学生只对其中一个方面有很深入的研究,而在其他方面都较差,当机试题目不是其擅长的方面,就会导致其考试成绩较差,这种考核方式显然具有很大的片面性。另一方面,采用完全机试的考核方式,由于考试时间的限制,只能出与课上讲过的知识点相关的题目,不可能出一些目前较流行的但在课上没有涉及到的应用题。但是有些同学自学能力和愿望很强,对目前流行的新技术非常感兴趣,并做了大量、深入的学习。如果机试题目没有涉及这些技术,这些学生的努力就没有机会得到老师的认可,不能反映在自己的成绩单上,这显然是考核方式本身具有的局限性。
  所以,上述传统的考核方式,对于强调综合编程实践能力的高级编程类课程是不适用的,不能够科学、全面、客观地反映出学生的实际编程能力。
  2答辩考核方式的设计思想
  为了解决传统考核方式存在的各种问题,课程组的所有教师进行了深入地讨论,很多老师提出:考核方式不能孤立于教学环节,不能让学生觉得学习是学习、考试是考试,从而产生平时不努力,考前突击的侥幸心理。对于C#程序设计(上、下)这样的基础课程,教学重点就是C#语言的基础知识,采用笔试或笔试+机试的方法基本就可以实现考核目标,而对于C#应用程序开发、基于C#的管理信息系统开发、Java应用程序开发这种120个学时的大课时编程实践课,理论教学和上机学时各占一半,如果不从学期开始就给学生布置题目,很多学生的上机学时都荒废了。到第三学期,一部分学生都已经具有了较强的自学能力,不满足于只学习课堂上讲的内容,但由于教师必须照顾大多数学生的情况,这就造成了想学的学生吃不够、偷懒的学生不去吃的矛盾境况。
  
  如何能针对不同水平的学生提供不同的学习方法,尽量给予每个学生足够的辅导和督促,是每个老师都想解决的问题。这个问题不能单纯从教学环节下手,应该和课程的考核方式结合起来,一方面大力激发每个学生的学习积极性,另一方面又能使每个学生的学习成果最终能较真实、准确地体现在考试成绩上。这就需要设计一种全新的考核方式,能贯穿课程教学的全过程,并能使不同水平的学生都得到锻炼,找到适合自己的题目,在一学期的学习过程中使自己在编码能力、设计能力、团队合作能力等多个方面都得到很好的锻炼,为即将到来的毕业实习和就业打好基础。
  答辩考核方式的中心思想是,考核过程贯穿课程教学过程的始终,并针对不同水平的学生设定不同难度的题目,各题目的完成步骤要求一样,最终也都要求提交一套完整的系统代码及相关文档。这样的考核方式比传统的笔试和上机考试都更加适合该类课程,可以给老师充分的时间及多种方式来全面考核每个学生的能力,也可以更有针对性地指导学生的学习和实践。对于学生来说,适合自己水平的题目使他们既不会丧失信心和兴趣,同时也能保持学习的热情,在学习的过程中有更清晰、准确的目标。
  3答辩考核方式的实施
  答辩考核的全过程包括开题、设计开发、答辩及核定成绩四个阶段,其流程和进度如图1所示。
  3.1规定项目要求,学生自由选题
  对于C#应用程序开发、基于C#的管理信息系统开发、Java应用程序开发、ASP.Net程序设计这几门课程,可在学期第一节课时就向学生宣布课程考核方式,并告知学生项目题材不限,但必须是本课程所讲软件类型,如C#应用程序开发课程的项目必须是Windows应用程序,ASP.Net程序设计的项目必须是Web应用程序,项目的规模不能少于规定的代码量,
  
  允许以小组为单位进行团队开发。要求学生从课程开始即留意选题,并做技术可行性分析。在课程进行中,可随时找老师探讨自己的选题是否合适,老师予以肯定的,可立即进入设计和开发阶段。
  3.2题目审核与过程管理
  在第4—5周时,学生已经对该课程有所了解,对课程中教师已经讲到的或即将讲授的知识有所认识,教师会要求学生集中上报各自(组)要开发的项目题目,并附带项目的简介及用到的技术。教师要及时对这些题目进行审批,对过于简单而导致组员工作量不够或过于复杂而导致学生无法按时完成的题目予以驳回,并要求学生在规定时限内重新选题。题目审核通过后,学生自行安排设计和开发的时间和进度。教师会在上机课和课外时间对学生进行技术指导,并随时对进度检查,检查结果作为平时成绩记录。
  3.3公开答辩,多方评分
  学期的最后2~3周是考试环节,安排学生针对自己做的项目进行公开答辩。答辩时要求全体学生都参加。每个学生平均需要12分钟左右,答辩总耗时要根据班级的学生人数来定,答辩内容分为学生自述、同学提问及教师提问三个环节。要求全体学生都在场,是因为答辩考试不仅是考核过程,同时也是教学过程。在答辩的过程中,同学们可以了解其他同学所做题目的思路及使用到的技术,从而互相学习,互相借鉴,扬长补短,达到在考试中学习,在学习中考试的目的。因为很多时候学生自学的知识,教师也未必完全掌握,因此全体同学参加的答辩考核过程,对教师和同学都是一个很好的学习与交流的机会。另外,每一个参加考试的学生都需要充当评委,对答辩者进行打分,答辩最终成绩以学生打分和老师打分综合结果为准,这样更能够保证答辩的公平、公正性。
  
  答辩考核方式的具体操作步骤如下:
  1) 答辩前以项目组为单位进行抽签,确定答辩顺序。
  2) 答辩第一节课前必须将所开发的项目代码上传到教师的FTP服务器上,此后不允许修改或替换。答辩过程中演示项目时也只许在教师FTP服务器上下载代码,不许自带,保证对抽签靠前的同学的公平性。
  3) 答辩时每组学生上台先对项目进行简单介绍,然后演示项目产品的全部功能。演示完毕后,该组的
  
  每位学生都要参加答辩,但只留一位同学在台上答辩,其余同学回座位等候,防止答辩过程中交头接耳。
  4) 答辩过程中教师和台下所有学生均可从答辩人所开发的模块的功能、性能、代码、技术等方面进行提问,并有专人进行答辩记录。答辩完成后,每位学生(除答辩人)和老师都要为其打分,学生和老师可通过登录一个基于B/S的答辩考核管理程序完成在线打分。
  5) 合分时,管理程序会自动计算学生打分的平均分,教师可根据学生打分的总体状况(偏高、偏低、正常),自主控制学生打分和老师打分的比例分配,如学生打分偏高或偏低,则教师打分占较高比重;如学生打分基本正常,则教师与学生打分各占50% 等。
  6) 试卷归档时,需将各人(组)的源代码、项目申报表刻盘,与学生打分表、答辩记录一并归档。
  4结语
  我们已经在五届学生中采取了答辩考核方式,并根据学生反映及教师在教学过程中发现的问题进行不断地改进,从而使目前的实施方式日趋完善。通过对学生的调查及任课老师的反映,这种考核方式对于激发学生的学习兴趣、提高上机时间利用的效率、加大教师对学生指导的力度等方面都有显著效果。学生认为这种考核方式客观、公正,能真正反映出学生的实际动手能力。
  由于项目开发、教师平时考核贯穿课程的整个教学过程,所以教师能对绝大多数学生的情况都有较全面的了解,可以对学生进行更有针对性的辅导,从而弥补了由于课程进度固定,无法满足各种水平学生需求的缺陷,使课程的教学效果达到最大化。
  实际上重要的不是考核方式本身[3],而是此种考核方式促使学生在学习过程中注重实践能力的培养,避免高分低能。这正是该考核方式的初衷,也是此类课程的教学目标。
  
  参考文献:
  [1] 陈涛. 基于案例教学的Java 语言课程改革研究[J]. 教育研究