郭东恩,刘黎明
(南阳理工学院 软件学院,河南 南阳 473000)
工程教育专业认证是国际通行的工程教育质量保证制度,2016 年6 月中国正式成为国际本科工程学位互认协议《华盛顿协议》的会员国,代表我国的工程教育质量得到了国际的认可[1]。工程教育专业认证中,课程达成度评价是其中的核心环节,它将人才所具备的各种能力细化,对应于相应课程的各种指标,因此,工程教育专业认证背景下基于达成度的课程考核评价改革变得尤为关键[2-3]。
面向对象程序设计课程在软件工程专业课程体系中是一门专业基础和面向实际应用的课程,属于理论和实践紧密结合的软件类核心课程,以培养学生的实践动手能力、创新能力为主要目的。该课程的目标主要有4 个:①掌握面向对象程序设计的基本理论知识;②掌握封装、继承、多态等面向对象程序设计的基本原理和编程方法;③具备应用面向对象程序设计思想进行软件分析和设计的能力;④掌握应用面向对象进行编程的技能,具有利用开发工具解决实际问题的能力。该课程不同于其他传统课程,有其自身特点:①注重实践;②较强的灵活性和开放性;③对学生创新思维和综合应用能力要求较高[4-5],因此对该类课程的考核评价不能单纯使用传统的考核评价方式。
工程教育专业认证中的课程达成度评价是指根据学生课程考核材料和考核成绩定量评价课程目标的达成情况。该课程以前考核评价方式,主要包含3 部分:平时考核、实验考核和期末卷面考核,对于前两个课程目标,使用卷面考试的形式进行考核,而后面两个目标涉及分析设计能力及具体应用能力的考核,主要通过实验考核和平时考核来完成,但由于平时考核和实验考核往往流于形式,导致后面两个课程目标难以落到实处,存在的主要问题如下。
1)平时考核难以监控,流于形式。
平时考核主要以课下作业为主,教师根据授课内容布置课下练习作业,学生完成作业以电子文档形式上交。由于缺乏有效的监控过程,一大部分学生直接复制粘贴别人作业上交,教师难以甄别,所以批改时应付了事,导致成绩不能真实反映大部分学生的平时表现,同时导致学生不重视平时考核,教师也无能为力。
2)实验考核验收困难,难以落实。
虽然设置了实验课程,但是,由于实验过程的监控和验收费时费力,大部分老师只是通过实验课上简单的辅导,课下批改学生提交的实验报告给定实验成绩,大部分学生实验课不认真做,课下拷贝别人的实验报告,教师难以区分,实验成绩无法区别学生的实践动手能力。最终导致学生对实验存在应付心理,对动手实践不重视,从而影响了学生创新能力和动手能力的培养[6]。
3)评价体系不够合理。
该课程目前虽然包含了平时考核、实验考核和期末卷面考核,但各部分所占比例和具体考核体系不够完善,不能很好地考查学生的实践编程能力和创新能力,从而无法保证课程目标的实现。
这些问题导致学生“重知识,轻能力;重记忆,轻创新;重理论,轻实践”的现象,不能综合应用所学知识解决现实问题。这种状况限制了学生创新思维能力和空间,与培养较强实践能力和创新能力的软件工程人才培养目标相违背[4,6]。另外,由于平时和实验考核成绩不能真实反映学生的实际动手能力,所以基于课程达成度的评价难以反映课程目标的达成情况。
由于软件类课程考核评价体系中存在的问题,为进一步深化教育教学改革,引导培养具有较强实践能力和创新精神的应用型、创新型软件人才,结合学习产出的OBE 理念和CDIO 工程思想[7],以“考能力,重过程”为指导思想,提出以能力考核为中心的过程化考核和终结性考核相结合的评价体系[8-9]。过程化考核应充分利用信息化手段实现学生的动手能力和创新能力的考核;终结性考核应注重利用信息化手段实现课程基本理论内容的考核。其中过程化考核包含4 部分:随堂评测考核、实验评测考核、综合项目考核和社团评测考核。具体的成绩构成和各部分考核项目和重点如图1 所示。
图1 学生最终成绩构成
通过推行以能力考核为中心的过程性和终结性相结合考核方式,将考核的重点从知识传授向实践动手能力培养、创新能力提升的方向转变,提高能力考核在总考核成绩中的权重赋值,加强对学生学习过程的管理,重视学生创新能力的培养,实现考核内容向注重综合能力考核转变,成绩评定向综合性转变,使考核真正成为学习手段而不是目的[5]。并且考核过程中应充分利用信息化手段自动记录考核过程和考核结果,使得基于课程目标达成度的评价更加真实可靠,保证课程目标的达成。
为了实现软件类课程过程化考核改革,软件学院充分利用互联网和自身优势,基于“互联网+教育”理念开发了在线评测系统,该系统目前只针对面向对象程序设计和数据结构课程,实现了以能力考核为中心的过程化考核方式[5,10]。通过在线评测系统,可以实现随堂评测、实验评测、项目评测和社团评测等多个阶段的学生实践能力的考核,把对学生的能力考核放在不同阶段,由软件量化记录。通过系统不仅提升了教师的课堂教学效果,使课程的过程性考核简单易行,同时可使学生更加重视实践动手能力,激励学生主动学习,规范了学习行为,提高了学习的有效性,促进了学生综合能力的培养。
除了通过在线评测系统对学生能力进行过程性考核外,课程的期末考核利用学院开发的“在线考试系统”进行考核[7,11],试题涵盖教材的重点内容,侧重考查学生对基础理论的掌握程度,学生试卷根据组卷策略生成,做完后大部分题目自动批改,部分题目需要教师审查和批改,最终生成期末考核成绩。
为了对学生的动手实践能力和创新能力进行考核,切实保障课程的后两个目标的达成,我们采用了自行研发的在线评测系统实现以能力考核为中心的过程化考核过程,具体包含4 部分:随堂评测考核、实验评测考核、综合项目考核和社团评测考核。
课堂是学生与教师直接接触的主要场合,学生在课堂的表现可以考核学生课堂参与度。以往的课堂表现考核主要通过考核学生的出勤率、课上主动回答问题和提出问题的参与情况来评定。但实施起来难度较大,教师记录、统计不方便,也没办法全部覆盖,无法实现达成度的计算,对大部分学生也不公平,因为真正愿意主动回答问题、提出问题的还是少数同学,而考勤更是流于形式,以往的课堂表现考核并没有起到应有的作用[4]。
在线评测系统进行随堂知识点的评测,具体过程为:教师根据课程安排,提前在评测系统设置随堂测试题目,这些题目只关注某个知识点,相对简单,为了节省学生录入大量代码的时间,教师可以提前预设程序主体,只留考查知识点对应的部分让学生填写,学生完成后进行程序编译运行,并保存测评结果。通过这种形式,可以边讲边练,让学生及时动手,在课堂掌握重要知识点。为了引起学生对随堂测试的重视,把该部分设置为课程最终成绩的10%,并且,只记录随堂测试时间段提交的成绩,并且设置学生只有全部通过对应阶段的随堂测试,才能进行下阶段的实验评测。
随堂考核主要考查学生课堂听课效果及关键编程知识点的掌握应用情况。通过在线评测系统进行随堂知识点的评测,可以让学生专注于老师讲解的重要知识点,通过随堂动手实践掌握这些知识,提高学生编程基础能力。从另一个角度来看,也起到了督促学生认真听课的作用,同时增加了学生动手实践的成就感和学习信心。
软件类课程以往的实验考核,老师提前布置实验内容,学生在固定的时间固定的机房完成实验,然后提交实验报告,课后老师通过批改实验报告给定实验成绩。这种组织形式,导致好多学生对课程实验不重视,实验课随便应付,课下抄抄别人的实验报告提交系统万事大吉,因为学生应付,老师批改实验报告也不认真,导致实验考核没有达到应有的目的[9]。
通过在线评测系统进行实验考核过程为:老师按实验教学大纲规定提前设置实验题目,随堂评测全部通过的学生可以完成对应阶段的实验,实验内容控制在实验课程规定的时间完成,完成后系统自动判别并记录每次实验成绩及其他相关信息,另外,学生还需要通过系统提交实验报告,对实验进行分析总结;该部分成绩包含两部分:课堂实验成绩+实验报告成绩,占最终成绩的30%。
实验评测考核主要锻炼学生编程实践能力,同时通过实验把理论和应用结合起来激发学生学习兴趣。实验的内容按照实验大纲要求,并由课程组老师精心组织成适合于通过评测系统自动评测的内容。通过评测系统自动判别记录实验结果和成绩,不仅实现了学生实验的实时监测,一定程度上避免了学生拷贝其他同学的实验内容,还把教师从繁重的验收工作中解脱出来,可以专注于课程内容的准备和教学方法的改革。
为了检验学生综合应用能力和创新能力,在课程考核中增加了综合项目评测,教师在课程进行一半以后,通过在线评测系统设置难度相近的多个项目,让学生自主选择,提前准备,提前设计,并最终进行编码实现。通过综合项目检测学生的综合应用能力、创新能力和解决实际问题的能力。综合项目考核在课程结束后提交,通过系统编译,能正常运行自动记录成绩,并且还要求学生提交相应的项目文档,锻炼学生的文档组织能力。综合项目考核占总成绩的15%,主要考核学生的综合应用能力和创新能力。
项目考核主要考查学生分析解决问题及编程实践的能力[12],即考查学生由理论转化为实践的能力。通过综合项目考核,学生真正把课程的所学的知识进行综合应用,并结合实际的场景进行创新设计,不仅提高了学生的实践动手能力和创新能力,还锻炼了学生文档组织能力和解决实际问题的能力。
软件学院建立各种学习类社团20 多个,每个社团依托某个专业方向申请一个实验室作为开放实验室,学院鼓励学生参与社团管理的开放实验室,每个社团定期由上一届学生为下届学生进行培训及评测,社团可以通过在线评测系统设置评测题目,让学生提前学习课程内容,或者进行知识点强化和适当知识扩充。该部分作为社团加分项,记录成绩,占最终成绩的5%。
社团考评主要考查学生课外实践练习的参与情况。通过社团考评,可以实现社团以老带新,促进学习氛围,还为学生提供了大量的课外实践练习的机会;另外,通过社团的提前培训和强化培训,让学生提前学习课程知识点和强化重要知识点,以便更牢固地掌握课程知识;同时,通过扩展知识的培训,让学生了解掌握更多课堂外的相关知识和应用,提高学生学习课程的兴趣。
通过采用以能力考核为中心的过程性考核和期末考试相结合的考核方式改革,期末卷面考核主要考查学生基础知识和基本理论掌握程度,随堂评测考核主要考查学生课堂听课效果和编程基础的掌握情况,实验评测考核主要考查学生基本的编程实践能力,而综合项目考核主要考查学生分析解决问题及编程实践的综合能力和创新能力,社团考评主要考查学生课外参与课程实践练习的情况。新的考核方式从多个方面实现了对学生全面的考核,并且通过“在线评测系统”和“在线考试系统”保证了考核结果的准确性,保障了课程目标达成度计算结果能真实反映学生的知识掌握情况和相关能力。
通过以能力考核为中心的过程性考核提高能力考核所占比例,使期末考试成绩仅占总成绩的40%,既能考查学生对基础知识的掌握水平,也能较好地考核学生的实践动手能力、综合能力和创新能力,在一定程度上减轻了学生死记硬背理论知识的负担和压力,提高了学生动手实践的积极性,激发了学生的创新精神,同时也增强了学生的创新能力,从整体上提高了学生综合分析问题和解决问题的能力。
从2017 年秋季学期开始,软件学院在面向对象程序设计课程考核中采用新的考核评价方法,课程结束后,通过问卷调查和学生打分了解到,学生对编程基础和理论知识的掌握程度,尤其是编程实践能力和创新能力方面,都有了显著的提高。另外,考核方式改革后,学生参加大学生程序设计竞赛的热情显著提高,获奖人数和级别也有了新的突破。2018—2019 年在国家级和省级各种程序设计竞赛获奖200 多人次,最高奖项为“蓝桥杯”国际大赛一等奖。可见,新的考核方式改革是较成功的。
通过在面向对象程序设计课程考核中使用以能力为中心的过程性考核和期末考试相结合的考核体系,教学效果已初显成效。通过过程化考核的在线考核跟踪,有效激发了学生学习的积极性和主动性,学生充分意识到动手实践的重要性,养成了课堂、课下积极动手实践的良好习惯;通过综合项目考核,提高了学生综合应用能力和创新能力;通过过程化的在线评测系统和在线考试系统,让课程考核更方便,把教师从繁重的课程考核中解放出来,专注于教学方法的研究和考核内容的设置。