邵新慧, 张英杰, 陈 维, 沈海龙
(东北大学 理学院, 辽宁 沈阳 110819)
随着网络及多媒体技术的高速发展,学习内容呈现出多元化的特点,从而使传统的教学方法已无法适应变化如此之快的课程学习.越来越多的教学资源正在通过计算机网络向学生展现教学内容,并应用到教学活动的实施过程之中.为了充分发挥信息技术,促进高等学校数学类基础课程的教学改革,达到“不仅让学生学会,而且让学生会学,更重要的是会用”的教学目标,因此,探究考试方式改革的课题应运而生[1-13].
传统的教学模式是以教师传授知识为主导, 学生只能被动去学习,讲授的也多半是书本上的理论知识.至于这些知识是怎么形成的,目前已经发展到什么程度,在实际中又有什么用途,学生一概不知.课程结束后的考核模式也大多为闭卷考试,即在规定时间和地点的条件下,学生独立完成考核内容.这种考试方式尽管也能在一定程度上检查学生的学习状况,起到督促学生巩固、复习和总结已学知识的作用,但没有达到当今国家倡导的创新教育和素质教育的要求,从而导致培养了大批的应试教育模式下的考试机器,即只是会做课本上的习题,考很高的分数,但不知所学知识如何应用,更毫无创新能力.
数学基础课程对理工科类大学的专业是至关重要的.但是,数学基础课程有一定难度,学生学习时都会觉得枯燥难懂,而我们的教学方式又过于陈旧,课堂上反复强调的只是书本上的内容,没有任何拓展,更没有和学生自己的专业进行相关的联系,导致学生更加厌学.因此,理工科类大学数学类基础课程的教学工作进行全方位改革势在必行.
鉴于以上分析,我们准备采用混合式教学方式,将数学基础课程的教学工作进行改革.混合式学习作为一种提高课堂效果的方法,强调教师主导和学生主体、在线教学和课下在线学习、自主学习与合作学习并存,使学生在有限的时间里通过混合式学习这种方式对所学课程进行系统化的掌握与结构式的理解,消除了学生厌学现象,提高了学生学习的积极性、实践能力和创新能力,真正达到素质教育的根本要求.
从21世纪初至今, 国外的学者们一直进行着混合式学习方式的探究, 逐渐把研究的成果在学校教育和企业培训中加以应用和实施, 成效显著. 在美国的中学里,实验室、图书馆和教室均可以上网, 学生可以在线获取各种有用的知识. 教师在教学中并不是采用“满堂灌”的方式, 而是针对所需学习的内容提出一个相关的实际问题, 然后给学生分配任务, 教师和学生利用电脑共同探讨所给出的问题. 教师可以在线获得各种教学设计计划及教学相关的辅导、教学材料; 学生可以在线获得相关的材料和所需数据, 并根据自己的兴趣,拓展知识.在日本, 教师更是多种教学方法相结合, 以教师讲述为主, 学生动手实践以及教师辅助指导的教学方式有机结合, 达到优势互补的效果.
2003年12月召开的第七届全球华人计算机教育应用大会上,何克抗教授首次在我国正式倡导“混合式学习”,并将其于 2004年正式发表.他认为,“混合式学习”就是要把传统学习方式和 E-learning(即数字化或网络化学习)进行有机结合,能够更好地提高教学的效果和学习的质量.在这样的背景下,国内越来越多的教师开始使用混合式学习来改进和促进教学.
目前混合式学习模式在高中课程教学中得到了广泛的应用,获得了很好的效果.但是,其在高等学校课程教学中涉及的较少.信息技术的不断发展和广泛应用,使得大学公共基础课程教学改革与创新蕴含了更为丰富的内容.大学数学类基础课程是高等学校几乎所有专业的基础,因此,数学类基础课程的教学改革是高等学校教学改革的重点之一.
随着信息化发展进程的加快,高校考试管理系统在国内逐渐兴起.目前,国内主流考试都在逐渐推行上机考试,以提高考试效率,节省管理费用,方便检验学生的学习效果.对于数学课程来说,现有的考试系统只能实现选择题的考核,很难实现解答题的自动判卷,具有很大的局限性.但是,数值分析是一门在计算机产生并广泛使用后兴起的学科,主要通过形成理论体系的算法来实现数学问题的数值求解,求解方法一般通过计算机编程实现.针对数值分析课程的这些特点与需求,我们设计了包含选择题与程序题两类题型的“数值分析考试系统”,选择题对理论知识进行考核,程序题对算法及学生的编程能力进行考核.这样做既超越了单纯的理论掌握,又有助于学生对求解原理的深入了解,弥补了国内现有数学课程考试系统的局限性.
针对现有数学类考试系统的不足,用户对“数值分析考试系统”的要求为:
(1) 系统采用C/S架构,编程语言为Java,通过SQL Server数据库实现数据管理;
(2) 考试管理与数据管理紧密结合,整个系统包括信息管理、试题发送、学生登录、考试计时、自动阅卷等功能;
(3) 系统的考核题型为选择题与程序题,需要分别实现两者的自动阅卷;
(4) 运行模式、运行流程以至考生客户端软件运行界面应尽量简洁、易操作,以减少管理人员和考生的培训时间.
为实现集中机考,方便对学生的监督和管理,同时借助校园网(局域网)的速度优势,“数值分析考试系统”采用C/S架构设计方案.系统的C/S架构设计是逻辑层设计及数据层设计的基础.“数值分析考试系统”的C/S架构图如图1所示.
图1 系统基本框架图Fig.1 Basic framework diagram of the system
服务器端(以下简称“S”)主要实现与学生考试端、教师管理端的数据交互,对底层数据库的访问,题库文件的后台保存、更新和删除等功能.客户端分为学生考试端(以下简称“SC”)和教师管理端(以下简称“TC”).SC实现学生登录,考试题目加载、显示,选择题及程序题答题,答案上传,分数显示等功能;TC实现题库综合管理,学生信息管理,学生成绩管理等功能.
“数值分析考试系统”需要实现对与考试相关的各种数据的操作.根据需要,我们设计了NumericalAnalysis数据库,其主要包括的表有学生登录信息表、学生成绩管理信息表、教师表、系统管理员表、选择题文件映射表、选择题文件存储表、程序题文件映射表、程序题文件存储表、试卷分配映射存储表等,用于存储与考试系统相关的数据.
(1) 背景分析
由于系统开发语言是面向对象语言Java,程序题考核所用语言为面向过程语言C语言,难以通过代理模式实现对C语言程序的处理.应该将程序题考核从系统整体设计中独立出来,两者之间通过某个简单的数据存储建立联系.通过记事本文件实现前面提到的数据存储.
(2) 具体实现
根据前面的背景分析,“数值分析考试系统”处理程序题考核及自动判卷功能的核心思路是:考试系统整体设计和程序题自动判卷业务逻辑相对独立,通过exec(String command)方法编译、链接、运行判卷程序,其算法流程见图2.
图2 程序题考核及自动判卷功能设计图Fig.2 Function design drawing of program examination and automatic examination
步骤1 开发一个简单可用的程序题模板生成工具. 通过该工具可将一个正确的数值分析算法源代码文件简单快速地生成对应的考试模板(即学生端程序题界面显示的程序题)和判卷模板(填入学生编写的代码段可实现自动判卷).
步骤2 学生在考试模板里填写的内容自动并正确填写到对应的判卷模板内,生成judgeMain.cpp文件.之后通过输出流生成记录得分的记事本文件Grade.txt.
步骤3 “数值分析考试系统”自动读取Grade.txt文件,将程序题的得分记录到数据库中,完成对程序题的自动判卷.之后,学生客户端可通过访问数据库返回学生成绩.
根据前面4个子系统,以软件形式提供系统的各个模块程序.各个模块见图3~图6.
图3 服务器软件结构图Fig.3 Structure diagram of server software
图4 学生客户端软件结构图Fig.4 Structure diagram of client software for student
图5 系统管理员软件结构图
图6 教师客户端软件结构图Fig.6 Structure diagram of client software for teacher
教师服务端(以下简称“TS”)与学生服务端(以下简称“SS”)相比较而言,虽然TS处理的业务种类多于SS,但是SS的消息、事务处理数量却远远高于TS.SS需要实现长时间线程同步,容易导致阻塞、消息响应反馈时间过长等问题,因此,SS的线程并发成为核心问题.
为解决上述问题,SS采用Server Socket Channel(NIO)通道模式设计,并在其中加入socket连接注册以及socket对应的下载、后台更新、交卷等后台业务实现.
经测试,在120名学生同时登录答题的情况下,此方案可以满足正常的考试需求;服务端程序安装至服务器之后,可以满足300人左右的并发考试.测试结果表明,NIO通道模式可满足我校目前数值分析课程考试的需要.
为保障学生正常参加考试,需要解决4个问题:学生信息验证;学生异常退出后再次登录的处理;考试时间安排的公平性;学生答题结果的备份.
为解决上述问题,我们对“数值分析考试系统”进行了如下设计:
(1) 事先建立存有学生信息的数据库(可直接从其他数据库中导入或教师手动录入),学生输入学号、密码后,通过服务器链接数据库对学生登录信息进行验证.
(2) 在登陆界面的设计和编写中,考虑学生二次登陆的情况,增加了二次登陆教师辅助登录功能.
(3) 对考试时间进行合理安排.在规定时间之前进入考试系统会进入到倒计时界面;在规定时间范围内进入考试系统,则可直接进行答题,但考试时间会根据迟到的时间进行相应的减少;在规定时间之后则无法进入到考试系统.
(4) 在答题过程中,每隔一定的时间,系统自动将学生所答题目备份到SQL Server数据库中,可避免服务器断开导致答案丢失的情况发生.
一般的图形界面程序在不安装第三方插件的情况下很难实现数学公式的显示.大部分解决方法是将公式截图存入数据库,然后以图片的形式加载显示.但此方案将给题库的准备带来巨大的工作量.
鉴于此,本系统出于对题库管理简单化的考虑,从加载word文档入手,通过双重文件流实现公式和文本的分别读取.借助第三方开源架包(apache poi),将每个公式自动读取为临时图片,之后将图片插入到文本的正确位置并调整布局.这减少了存储量,并且使显示的题目整体美观、清晰.
为了实现程序题的自动判卷功能,我们设计了程序题模板生成工具,它实现的主要功能为:导入一个源文件,生成一一对应的考试模板、判卷模板;为生成的考试、判卷模板提供预览和测试功能,便于及时修改和调整.
(1) 对导入源文件进行预处理.对源文件以注释形式添加特殊标记,通过识别这些特殊标记对源代码自动修改或增添.
例如:
“∥code_judge ”为判卷变量标记,用于设置得分点;
“∥code_delete ”为挖空行标记,为所设置行为填空行.
(2) 预先编写判卷函数头文件、静态库文件.为实现自动判卷功能,需要在判卷模板中将考生答案与正确答案进行对比,因此需要编写比较函数进行自动判卷,这些比较函数以头文件及静态库文件的形式存储,头文件(compare.h)的文件内容见图7.
图7 判卷函数头文件内容
头文件主要声明比较函数的名称,与之对应的静态库文件(compare.lib)则实现头文件中声明的方法.之后在编写自动判卷的程序中,即可直接引用这两个函数实现数据比较功能.
(3) 设计模板生成工具.针对源文件预处理中不同类型的标记,模板生成工具中会自动生成相应的按钮,通过点击按钮和简单的设置,即可生成判卷与考试模板.
生成判卷模板:点击按钮选择“函数体编写”“代码段填空”及“判卷变量”,通过对判卷变量正确值及判卷代码插入位置的设置,即可预览、测试、生成判卷模板.
生成考试模板:在保持判卷模板设置的基础上,对测试用例进行修改,即可预览、测试、生成考试模板,并且可编写程序题题目说明文件.
为了便于学生操作,避免启动客户端C语言编译器,程序题答题界面需要实现以下功能:学生仅可在编辑区域内编写代码,其他区域内的代码无法修改;学生可编译、运行程序;可将学生编写的函数体和填写的代码段上传至服务端.
(1) 界面设计.将题意说明和不可修改的源代码部分显示为只读;识别程序源代码中的“∥添加函数实现代码字段”和“填空题标记下划线”,将对应区域设置为可编辑,在可编辑区域添加键盘监听;实现括号、引号的自动匹配,换行时提供自动缩进,为规范的代码编写提供方便.
(2) 编译运行.通过java.lang.Runtime类提供的exec(String command)方法,启动独立进程调用编译和链接命令,并获取该进程的输入流提取编译链接信息,实现编译错误提示;若编译正确,则运行程序.
(3) 代码上传.提取学生编写的函数题代码和学生填空代码段.由于这些代码段信息量较少,因此可以以一般socket通信的形式上传至服务端.
由于选择题的自动判卷较易实现(只需简单的数据库访问、表间比较即可实现),此处我们主要介绍程序题的自动判卷逻辑业务.
(1) 一般情况.只需把学生上传的答题信息写入相应的判卷模板中,然后生成临时判卷源文件,针对这个临时文件编译运行即可得到判卷结果并将判卷结果返回输出到学生客户端.
(2) 异常情况.如果学生提交的程序没有及时调试、运行,且存在死循环,则需要在此基础上进行改进,通过倒计时线程启动判卷程序,倒计时线程结束后,若判卷程序还在运行,则杀死,并将异常记录写入数据库,如图8所示.
图8 异常情况下程序题自动判卷业务处理
利用上述方法所研制开发的“数值分析考试系统”,目前已经投入试用,运行情况良好,之后将用于东北大学的数值分析考试.此外,其他数学科目的考试也可通过此系统进行.
参考文献:
[ 1 ] 申田静. 国内在线考试系统研究综述[J]. 中国教育技术装备, 2015(14):19-21.
SHEN T J. A review of the domestic online examination system[J]. Chinese Educational Technology and Equipment, 2015(14):19-21.
[ 2 ] 王鹰,赵跃龙,刘中宇. 基于C/S模式的计算机等级考试系统的设计[J]. 计算机与现代化, 2006(2):70-72.
WANG Y,ZHAO Y L,LIU Z Y. The design of computer grade examination system based on C/S model[J]. Computer and Modernization, 2006(2):70-72.
[ 3 ] 高洪岩. Java多线程编程核心技术[M]. 北京: 机械工业出版社, 2015.
GAO H Y. Multi-threaded programming core technology of Java[M]. Beijing: Machinery Industry Press, 2015.
[ 4 ] 刘德山,金百东. Java设计模式深入研究[M]. 北京:人民邮电出版社, 2014.
LIU D S,JIN B D. The design pattern of Java is deeply studied in[M]. Beijing: The People's Post and Telecommunications Press, 2014.
[ 5 ] 方玉华. 基于.NET在线考试系统的设计与实现[J]. 长江大学学报(自然科学版), 2011,8(12):71-74.
FANG Y H. Design and implementation of the online examination system based on.NET[J]. Journal of Changjiang University (Natural Science Edition), 2011,8(12):71-74.
[ 6 ] 田芳,徐向红. 在线考试系统中的考试计划流程设计[J]. 计算机工程, 2006,32(23):281-282.
TIAN F,XU X H. The examination planning process in the online examination system design[J]. Computer Engineering, 2006,32(23):281-282.
[ 7 ] 彭玉忠,王金才,郝荣霞. 基于B/S的在线考试系统答案更新算法[J]. 计算机系统应用, 2008(4):117-120.
PENG Y Z,WANG J C,HE R X. B/S based online test system answer update algorithm[J]. Computer System Application, 2008(4):117-120.
[ 8 ] 熊晓莉,侯永广. 基于ASP.NET和AJAX的在线考试系统开发[J]. 信息技术, 2012(2):23-26.
XIONG X L,HOUY G. Development of online examination system based on ASP.NET and AJAX[J]. Information Technology, 2012(2):23-26.
[ 9 ] 闫蕊. 基于ASP的在线考试系统的设计与实现[D]. 长春:吉林大学, 2016.
YAN R. Design and implementation of an online examination system based on ASP[D]. Changchun: Jilin University, 2016.
[10] 赵跃欣. 在线考试系统的设计与实现[D]. 广州:华南理工大学, 2015.
ZHAO Y X. Design and implementation of the online examination system[D]. Guangzhou: South China University of Technology, 2015.
[11] 王添财. 基于Java EE的在线考试系统的设计与实现[D]. 广州:华南理工大学, 2014.
WANG T C. Design and implementation of an online examination system based on Java EE[D]. Guangzhou: South China University of Technology, 2014.
[12] 吴清. 在线考试系统的设计与实现[D]. 西安:陕西师范大学, 2014.
WU Q. Design and implementation of the online examination system[D]. Xi’an: Shaanxi Normal University, 2014.
[13] 俞钧. 基于教考分离的成人高等教育题库系统的分析与研究[D]. 上海:华东理工大学, 2011.
YU J. Analysis and study of the adult higher education question bank system based on the separation of teaching and examination[D]. Shanghai: East China University of Science and Technology, 2011.
[14] 沈海龙,魏彤. 求解线性互补问题的改进加速迭代方法[J]. 沈阳大学学报(自然科学版), 2016,28(5):420-424.
SHEN H L,WEI T. An improved accelerated iterative method for solving linear complementarity problems[J]. Journal of Shenyang University (Natural Science), 2016,28(5):420-424.
[15] 岳晓宁,丁宇. 大数据时代统计学重构浅析[J]. 沈阳大学学报(自然科学版), 2017,29(3):250-253.
YUE X N,DING Y. Analysis of statistical reconstruction in the era of large data[J]. Journal of Shenyang University (Natural Science), 2017,29(3):250-253.