董卫 王婷婷 徐剑
1.山东农业大学信息科学与工程学院;2.山东省泰安第二中学信息技术组
随着计算机的普及和互联网的蓬勃发展,为满足社会对程序设计人才的需求,程序设计类课程成为大学各专业的必修或选修课程,通过课程学习,可以培养学生计算思维和编程技能,提高以计算机作为工具解决实际问题的能力。特别在计算机、网络工程、物联网、数据科学与大数据技术、人工智能等专业该类课程占有较大比重,如:C、C++、Java、Python语言程序设计、Web程序开发、手机App、小程序开发、大数据开发、数据分析等,从考试角度看,这类课程主要考察学生的编程水平和系统设计和实现能力,传统的纸质闭卷形式不能很好地满足这种要求,因此通常采用上机考试、实验随堂考试、技能测试、大作业等相结合的方式[1-6]。本文分析了程序设计类课程特点、常见考试形式,介绍了作者在该类考试中的探索与实践。
程序设计课程通常以学习一门编程语言为主要内容,通过大量的上机练习,熟悉语言的语法、编程接口,并利用该语言工具,设计开发各种程序、系统解决实际问题,课程特点如下:
(1)注重培养计算思维和系统设计能力。学习程序设计语言,重点不在于记忆语法规则,而是熟悉语言特性,学以致用,用程序思维解决学习、生活中的问题,更深层次地用好计算机工具。
(2)理论与实践并重。除了学习课程的理论脉络,上机实践更加重要,只有大量调试程序,才能避免纸上谈兵、眼高手低,不断提高编程技能,培养耐心、细心、坚韧不拔的优秀品质。因此课程通常分配等量的理论和上机学时。
(3)考核方式与传统科目不同。上述两个特点决定了程序设计类课程考试形式不适宜用闭卷笔试的方式,考试时应该允许学生在编程环境下进行程序的编写和调试,编程环境大都有语法提示功能,不需要学生死记硬背过多API细节,也能更真实地考察编程熟练度。
程序设计课程考核方式有多种,例如:
(1)程序在线评测系统(Online Judge,OI)。学生在线提交程序源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。该考核方式题型单一(全为编程题目),适合如C、C++、Java等编程语言类课程,减轻了教师的阅卷工作量,对学生编程能力要求较高,因为如果不能编写出完全正确的程序,导致样例不能通过会判0分。为了防止作弊,考试应该在局域网环境下进行,OI系统部署在局域网服务器上。OI系统对于不能用机器判断对错、没有标准答案的科目(如:Web编程)不适用。
(2)上机考试系统。使用特定的考试系统(C/S或B/S模式),题型设置更加灵活多样,如:选择、填空、简答、编程题等,客观题(选择/填空)可以自动判分,主观题(简答/编程)人工阅卷,适用于Web编程等不适宜自动判分的编程科目。考试系统要具备:自动组卷、防作弊(如U盘禁用、题目顺序打乱、IP与学生身份绑定等)、自动备份(防止学生机断电、死机等不确定因素)、阅卷方便等特点。同OI系统一样,该系统部署在机房服务器上,要求机房内网联通,机器状况良好。
(3)大作业方式。学生独立或分组完成一个大作业,教师出题或题目自拟,根据完成的工作量、创新度等给学生打分。适用于考察学生综合运用知识和团结协作能力的科目,因为作业是课下完成,这种考核方式的真实客观性和区分度不好把握。
在实际教学中,在笔者所在部门上述考核方式都使用过,如在C++和Java专业课中,使用OI系统作为平时练习和考试的平台;在计算机公共课教学中,学生数量多,对编程能力要求相对低,使用了老师自主研发的上机考试系统,题型多样,阅卷方便;对于课程实习、实验课等环节则采用平时作业或综合大作业的方式考核;还有部分老师习惯了纸质试卷出题,因为它不受题型、格式等限制,组卷较为灵活,为此,基于“纸质试卷电子化”思路,我们设计并实现了基于Web的考试系统。
将纸质试卷电子化,并不是简单的考试介质和环境的变化,将试卷放到FTP服务器供学生下载作答后再上传到服务器显然是不行的,因为存在替答、试卷被覆盖等各种问题。因此程序应具备如下功能:
(1)试卷生成。考前依据学生名单为每一个考生生成唯一的Word电子试卷,试卷题目、选项顺序打乱,试卷以学号、姓名、专业命名。
(2)学生登录。登录程序设置U盘禁用功能并自动打开浏览器进入登录页面,第一次登录后,将学号和IP绑定,保证同一学号只能在一台机器登录,一台机器只能登录一个学号。机器出现问题,可以在服务器端解除绑定后更换新的机器。
(3)试卷的下载和上传功能。根据学生登录信息,下载属于自己的试卷,上传(交卷)时,也只能上传自己的试卷,试卷名称不能修改。答卷过程中,断掉网络,考试进行一半上传一次试卷做备份。答题过程中,允许学生打开编程环境调试程序,并可将程序运行结果截屏到试卷中。
(4)服务器端考试监控。监控学生登录信息,为了应对换机器的情况,提供学号和IP解绑功能。
(5)客观题阅卷。对收集的Word试卷批量批阅选择题,标记出错题目并将得分填充至得分栏。主观题由教师手动批阅。
程序的主要界面包括:
(1)登录页面:如图1所示,输入学号,点击“核对姓名和专业按钮”,自动匹配姓名和专业,如果学号不存在给出提示。核对无误后,系统将学号和IP绑定,进入试卷下载和上传页面。
图1 考试登录页面Fig.1 Login page of examination
(2)试卷下载和上传页面。试卷下载和上传页面如图2所示,全部下载个人试卷后,可断开网络,考试进行一半时,上传一次试卷,监考老师在服务器端检查上传文件是否正常。
图2 试题下载和上传页面Fig.2 Download and upload page of test questions
(3)服务器端监控页面。服务器端页面如图3所示,监控学生登录情况,并提供IP和学号解除绑定功能。
图3 服务器端监控页面Fig.3 Server-side monitoring page
试卷收集后,编写了独立的阅卷程序对选择题进行阅卷,阅卷界面如图4所示。阅卷界面中依次输入选择题个数、分值、正确答案、试题所在路径和批阅后的路径。
图4 阅卷程序Fig.4 The marking program
阅卷后选择题批阅和分数汇总结果如表1、表2所示。自动在错题前打叉,并将计算得分填充至得分栏。
表1 选择题批阅Tab.1 Marking of selection questions
表2 选择题分数汇总Tab.2 Score summaryof selection questions
本文介绍了作者在程序设计类课程考试改革中所做的探索和尝试,围绕纸质试卷电子化,设计开发了考试系统,在实际应用中取得了理想效果。下一步将在自动组卷、成绩登记、分析环节继续完善。