传统程序设计语言实践及考试以笔试为主、以知识点考查为主,导致了学生对问题进行整体分析和综合应用的能力差,编程水平低。本项教改成果针对这一缺陷,改革了传统程序设计语言实践及考试方式,提出了“以实际程序设计为主进行练习,通过实际程序设计进行考核”的实践及考试方式。本项成果利用先进的计算机及网络技术,研制了一套适用于计算机程序设计语言课程实践和考试新思路的网上练习与考试自动评测系统,为这一新方法提供技术支持。该自动评测系统具有题库维护和试卷生成功能,可对考生提交的答案进行全自动评测,并对考试成绩进行管理,实现了“命题→练习/考试→评测→统计”全过程自动流水化,练习/考试无纸化,以及评分及统计的自动化。
一、基本内容
传统计算机语言课程实践及考试通常以笔试题为主,偏重于考察程序设计语言的语法细节。由于程序设计语言自身的特点,使得程序设计题目和源程序本身都具有高度的主观性和灵活性,难以进行标准化的评测,因此在传统计算机语言课程实践及考试中,程序设计题目所占比重较小,对程序设计题的评分也主要由人工来完成。这种实践及考试方式易于导致学生在程序设计语言的学习中死背书本上的语法说明,盲目苛求语法细节,忽视动手能力和编程实践能力的培养,缺乏对问题进行整体分析和综合应用的能力。同时,教师需要用大量的时间和精力去组织练习和考试以及阅卷,工作强度较大,工作效率较低。
为了克服传统程序设计语言实践及考试存在的笔试题为主、以知识点考查为主导致学生对问题进行整体分析和综合应用的能力差,编程水平低的缺陷,本项成果改革了传统程序设计语言实践及考试方式,提出了“以实际程序设计为主进行练习,通过实际程序设计进行考核”的实践及考试方式。通过程序设计语言实践及考试方式的改革,提高程序设计语言课程的教学水平,加强学生练习的强度和质量,使学生养成正确的学习方法,提高了学生分析问题解决问题的能力和运用程序语言编程和解题的水平,促进了学生程序设计能力的培养,同时也减轻了教师组织练习和考试以及阅卷的工作量,提高了教师的工作效率。
为支持这一程序设计语言课程实践及考试新方法,解决程序设计题目难以自动评测的问题,本项成果利用先进的计算机及网络技术,开发了《基于Web的程序设计语言练习及考试评测系统》,提出了程序设计题评测方式的相关规范,以便有效地辅助教师自动生成练习题及考试试卷,进行自动评测,提高工作效率。通过《基于Web的程序设计语言练习及考试评测系统》的使用,克服了目前程序设计教学过程中实践及考核的薄弱环节,实现了“命题→练习/考试→评测→统计”全过程自动流水化,练习/考试无纸化,以及评分及统计的自动化。
目前这一成果已在北京航空航天大学计算机学院高级语言程序设计课程的教学中使用,并取得了良好的效果。同时,《基于Web的程序设计语言练习及考试评测系统》还用于近几年的全国青少年信息学奥林匹克竞赛(NOI)网上同步赛的评测,多次获得中国计算机学会的高度评价。
二、计算机语言课程实践及考试方式的改革
程序设计题目的自动评测是传统程序设计语言课程教学和考试的组织和实施中的难点。由于程序设计语言自身的特点,传统程序设计语言的实践及考试以笔试题为主,而程序设计题目所占比重较小。这种实践及考试方式对于培养学生对问题进行整体分析和综合的能力以及编程实践能力极为不利。
为了克服传统计算机语言课程实践及考试方式存在的缺陷,本项成果改革了传统程序设计语言实践及考试方式,提出了“以实际程序设计为主进行练习,通过实际程序设计进行考核”的实践及考试方式,以提高程序设计语言的教学水平,提高学生的实际编程能力和知识运用的能力,并减轻教师组织练习和考试以及阅卷的工作量,提高教师的工作效率,使教师把教学的重点放在对学生分析问题、解决问题能力的培养上。
采用“以实际程序设计为主进行练习,通过实际程序设计进行考核”的实践及考试方式,首先是改变了练习的目的,使得练习的重点由过去简单地复习课堂的讲授内容改变为自学的过程。学生通过练习掌握程序设计语言运用的要点及相关的细节。这样,课堂讲授就可以集中在对重要概念和对语言的应用的讲解上,而不必过分强调语言本身的细节。
采用“以实际程序设计为主进行练习,通过实际程序设计进行考核”的实践及考试方式提高了练习的难度和强度,使得练习题更加接近实际程序设计的要求,同时也更能检验教学效果和学生的实际程序设计能力。在练习题目的设计上,概念性习题在题目数量上占67%,在难度和权重上占20%,而程序设计习题在题目数量上占33%在难度和权重上占80%。考生的答题工作全部在计算机上进行,提交的答案必须是不存在任何语法和逻辑错误、能解决完整问题的源程序。因此,考生在学习阶段必须重视实际编程能力,多投入上机练习的时间,注意改进代码质量和编程风格,在学习计算机科学的最初阶段就养成良好的编程习惯,为今后的学习和研究打好基础。
三、计算机语言课程实践及考试支持工具的研制
为支持“以实际程序设计为主进行练习,通过实际程序设计进行考核”的实践及考试方式,必须解决程序设计题目难以自动评测的问题,提供了实时评测的方法。本项成果利用先进的计算机及网络技术,研制了《基于Web的程序设计语言练习及考试评测系统》,提出了程序设计题评测方式的相关规范,建立了适用于C语言教学和考试的标准试题和程序设计题库。《基于Web的计算机语言课程练习及考试评测系统》由考试/练习配置工具、命题及题库管理工具、Web应用服务器、程序题评测服务器、以及考试控制工具、成绩统计工具等组成,在结构上具有很强的可配置性和可扩展性,是一个灵活、通用的考试/练习平台,能够适应不同的考试要求。它既可以用于校内班级教学练习和考试,也可用于跨单位和跨地域的大规模考试竞赛活动。教师只需通过考试/练习配置工具设置考试的起止时间、使用对象、答案提交及成绩发布等考试流程,通过命题及题库管理工具自动或手工生成练习及考试的试卷,其余一切工作,包括考试的发布、考试的控制、试题的发布、答卷的接收和评测、成绩的统计和发布等,就都进入自动化流程,由系统自动完成。其基本功能如下:
1、可以同时支持多场独立的考试
该支持工具既支持程序设计类型的试题,又支持单选、多选、填空等标准化试题,其中对于程序设计题目,使用多组测试数据的黑盒评测方式,以便对程序进行较为全面细致的测试。同时,为适应学生练习和考试的不同要求,各场考试可以分别配置成允许多次提交答案和只允许一次提交答案的方式,对学生所提交的答案也可以分别设置为立即评测和定时评测的方式。这样,在练习过程中学生就可以及时得知自己的答案是否正确,并及时改正错误。
2、可以实现试题的维护和试卷的自动、手动生成
该支持工具支持试题的录入、题库的建立和维护、以及试卷的自动或手动生成。在程序设计语言课程的练习和考试中,我们根据教学需要,参考历年教学过程中的优秀题目,并且从国内/国际信息学奥林匹克竞赛、ACM大学生程序设计竞赛中提取适当的素材,编写了上百道高质量程序设计练习题和试题,建立了一个初具规模的试题库。在每次练习中都为学生提供了至少10道以上的标准化试题和6道以上的程序设计题,并要求学生必须完成3道以上的程序题。通过精心选择习题的类型和难度,使得学生在每次练习中可以根据自己对学习内容的掌握程度,循序渐进的选择练习题。除了选派优秀的博士生和硕士生助教外,学生可以通过系统的实时评测功能立即检查和发现自己答案的对错,并及时改正错误。对于每道程序设计题,都通过多组测试数据进行全面的测试,以便培养学生缜密的思考习惯和严谨的工作作风
3、可自动完成对学生成绩的评测和统计,并根据需要生成成绩表
该支持工具可以将统计结果及时反馈给考试管理人员,以便根据学生的学习状况,对后续教学工作进行改进。针对少数学生在练习过程中使用拷贝的方式提交程序设计答案,系统提供了程序源文件和可执行码的查重功能。为防范在考试过程中可能的作弊行为,系统提供了实时网络监测工具。同时,在考试配置时,教师还可以在一场考试中使用具有相同难度的多份试卷,以避免相邻座位学生之间的交流和抄袭。
四、创新点
本成果在计算机程序设计语言的练习和考试中提出了新的观念和方法,实现了对传统程序设计语言的练习和考试方式的改革,并研制了配套的技术支持工具,以提高练习和考试的质量,促进学生能力的培养。本项成果的主要创新点如下:
1、变革了传统计算机语言课程实践及考试方式
本成果从根本上改变了传统程序语言教学过程中单纯纸面练习和考试的方式,促使考生在学习阶段重视实际编程力,关注对代码质量和编程风格的改进,养成良好的编程习惯,促进了学生分析问题、解决问题的能力和实际程序设计能力的培养。
2、在程序设计题评测方式上提出规范
程序设计源程序本身具有高度的主观性和灵活性,长期以来难以进行标准化的评测。本系统采用“黑盒测试”方法,提出的相关的规范,在计算机程序设计题目的评测中实现了标准化和自动化。
3、开发了《基于Web的程序设计语言练习及考试评测系统》
该系统在结构上具有很强的可配置性和可扩展性,是一个灵活、通用的考试/练习平台,能够适应各种练习和考试的不同要求,可以有效地辅助教师自动生成练习题及考试试卷,进行自动评测。提高了命题、考试、评测、统计的全线工作效率和质量,实现了练习和考试全过程无纸化,评分自动化。
五、应用情况和推广价值
本成果已在北京航空航天大学计算机学院2003-2004学年度的C语言程序设计课程的课堂教学工作以及全部日常练习题、期中考试、期末考试、以及补考中应用。共组织和实施考试和练习20余场。在练习过程中,《基于Web的计算机语言课程练习及考试评测系统》可以及时地评测学生的练习结果,提示学生对教学内容掌握的程度。在考试结束后,《基于Web的计算机语言课程练习及考试评测系统》可以在两个小时内完成300余人的全部考卷的评测工作,生成成绩单和统计报表,大大减轻了教师的阅卷工作强度,提高了工作效率。
本项教学改革成果改变了传统程序设计语言实践及考试方式,促进了学生学习观念和学习方法的改变。同时,《基于Web的计算机语言课程练习及考试评测系统》的应用为培养学生的实践能力提供了有力的帮助。这些工作,显著提高了学生学习的效果。很多以前完全没有接触过程序设计的学生通过一个学期的学习,可以达到在两个小时内圆满完成3道20-50行代码、中等难度程序设计题目的程度。
此外,《基于Web的计算机语言课程练习及考试评测系统》还在中国计算机学会组织的第20届和第21届全国青少年信息学奥林匹克竞赛(NOI)中应用。2004年8月,该系统经中国计算机学会发往全国各省青少年信息学奥林匹克竞赛培训队推广使用。
本项成果的推广价值体现在两方面。第一,本项成果的指导思想和实践及考试方式的改革,对于其它具有较强实践性的工科课程具有启发和示范的意义。注重实践能力的培养需要贯穿在教学的全部过程,特别是练习和考试的环节中。本项成果在这方面进行了有益的探索并取得了良好的效果。第二,本项成果根据上述指导思想所研制的支持工具不仅适用于程序设计题目的练习和评测,而且也适用于选择、填空等标准化题型。同时,该工具在体系结构上具有完整的功能以及很强的可配置性和可扩展性,可以用于不同规模和不同课程的练习和考试,对于促进各种课程的练习和考试信息化及自动化也具有重要的推广价值。