基于OJ 的程序设计类课程实验混合教学模式研究

2022-03-07 06:58徐燕萍
软件导刊 2022年2期
关键词:程序设计实验课教学效果

徐燕萍

(盐城工学院 信息工程学院,江苏 盐城 224051)

0 引言

程序设计类课程是电子信息大类相关专业的核心课程,由于程序设计类课程具有基础知识枯燥、难以入门、实践性强的特点,实验教学环节对巩固基础知识、培养学生动手能力至关重要。但一直以来,实验教学效果并不理想,主要原因在于:①语法规则复杂、枯燥,概念抽象,对于没有建立编程思维的学生而言难度较大,导致学生兴趣不高;②师生缺少有效交流,学习氛围不浓厚;③学生需要花费大量时间书写纸质报告,容易产生抵触情绪;④纸质报告批改工作量大,也难以验证程序的正确性,学习反馈不足;⑤报告抄袭现象比较严重,难以判断学生是否真正掌握相关知识。因此,改革与探索程序设计类课程实验教学模式是一项十分迫切的工作。

自新冠疫情爆发以来,教育部提出“停课不停学、停课不停教”的教学要求,传统的实验教学模式:准备、实验、报告、批阅,已不再适用。针对疫情期间程序设计类课程实验线下无法开展以及学校实际情况,提出基于在线判题的线上教学模式。该模式采用自主研发的盐城工学院实验项目源码评测系统(以下简称YOJ)辅助教学,并且在疫情常态化后,已应用于日常实验教学,实现了程序设计类课程实验线上线下相混合的新型教学模式。

1 YOJ 建设

1.1 OJ 发展及应用现状

OJ(Online Judge)最初应用于ACM 国际大学生程序设计竞赛中,目前已广泛应用于各大高校的程序设计训练等方面。国内外知名的OJ 系统有很多,比如:浙大的ZOJ、北大的POJ、杭州电子科技大学的HDOJ 等。虽然这些OJ题库很多,但仅用于程序设计竞赛,并且缺少分类指引,难度系数大,并不适用于盐城工学院程序设计类课程实验教学。

针对这些不适用的情况,结合盐城工学院学生层次及能力现状,自主研发了界面友好、功能完善且能辅助实验教学的在线实验平台。

1.2 YOJ 功能

系统采用B∕S 架构,采用前后端分离技术;后台使用JDK 1.8,前端使用Vue.js 2.0;使用自主研发的CUI 作为系统的UI 框架,数据库采用MySQL;在线判题使用的是成熟稳定的开源HustOJ 内核。学生在使用系统时,只需在机器上安装浏览器即可。目前,YOJ 支持C、C++、C#、Java、Python 5 种编程语言评测。YOJ 界面如图1 所示。

Fig.1 Interface of YOJ图1 YOJ 界面

与教学实际过程紧密结合,YOJ 系统提供了五大功能模块:系统管理模块、在线判题评分模块、实验报告生成导出模块、错误采集查询模块、排名统计模块。其中,在线判题和实验报告生成导出是特色模块。系统分为Judge 服务器(判题内核)、Web 服务器和MySql 数据库服务器3 部分。学生在浏览器代码编辑器中输入源代码,然后提交到数据库服务器,Judge 服务器监测数据库服务器中待评测代码并进行评测,评测结果既会保存在数据库中也会实时反馈给学生,学生根据反馈的评测结果及时修正,在这种不断试错、不断修正结果的过程中,提高学生分析问题、解决问题的能力。学生完成实验项目后,可在线查看和生成导出实验报告,实验报告包括实验源代码、运行结果、运行时间及内存情况,可以PDF 文件格式导出,方便学生打印。

2 基于YOJ 的实验混合教学设计

线上课程虽然资源多、不受时空限制,但由于学习过程管理不严、学生学习参与度不高、师生交流互动较少等原因,导致学习效果不佳。为了提升实验教学效果,本文提出基于YOJ 的线上线下混合教学模式,既提高学生学习参与度,激发学生的主动性和创造性,又发挥教师引导学生、监控教学过程的主导作用。基于YOJ 平台的线上线下实验混合教学设计如图2 所示。

2.1 课前线上活动

每次实验课前,教师根据理论课进度安排实验内容,录制实验教学视频;然后布置实验任务,实验开始时间一般是上课时间。每个实验项目由若干个具体的编程题目构成,教师可以对选择的题目分配分数比例,以便计算最后得分。学生可以将实验视频观看过程中遇到的问题通过系统反馈给教师,教师收集整理学生反馈的问题以便在实验课开始时集中讲解。

Fig.2 Design of mixed teaching mode of experimental course图2 实验课混合教学活动设计

2.2 课中混合活动

上课时,教师讲解本次实验的重点、难点及课前线上活动阶段学生反馈的问题;然后学生登录YOJ 系统,完成实验题目。每提交一道题目,YOJ 会在线编译,并对照给定的测试用例,与预设的输出进行比对,以验证程序是否正确,最后会提示学生源代码执行用时及内存使用情况,学生可以根据评测结果,对代码作进一步优化,直到满意为止。教师可以在教室中对有问题的学生进行个性化指导,还可以通过平台的统计分析功能,查看学生实验项目完成情况,对出现的集中性错误、共性问题集中指导。学生提交完所有实验题目后,系统会自动生成实验报告,学生可以在线查看,也可以导出PDF 文件,PDF 文件以班级—学号—姓名—实验项目.pdf 命名。

2.3 课后线上活动

实验课结束后,教师可以查看错误统计信息,分析每次实验中各类错误的出现频率,以便在今后教学中重点介绍。系统会根据学生实验完成时间、运行效率、提交次数、总评成绩进行排名,学生可以查看排名,了解自己在班级的学习状况,这样极大地激发了学生的学习热情。

课前、课中、课后三段式混合教学模式,充分利用现代化教学手段,课前发布基于知识点的微视频,精心设计教学内容;课中通过YOJ 系统合理组织教学活动,及时判题了解学生知识点掌握情况;课后分析数据库评测结果,及时评价教学效果。基于OJ 的混合教学模式将教学内容设计、教学活动组织、教学效果评价作为一个有机整体综合考虑,明显提升了实验教学效果。

3 教学效果分析

自2020 年5 月,YOJ 系统正式上线以来,系统题库数量不断增加,目前已经累计800 多道,3 学期共有1 500 多人在C 语言程序设计、算法与数据结构、Java 程序设计、Python 程序设计等课程中陆续使用该系统作为实验课辅助教学平台,取得了良好效果。

3.1 学生参与度提高

传统的实验教学方式下,由于教师监督能力有限,无法及时检查、验证学生的实验代码,直接导致学生实际程序设计能力较差,甚至出现少数学生混水摸鱼的现象。使用混合教学模式后,为保证实验任务在实验课内完成,要求每位学生在实验课内在线提交实验源代码,并且每位学生的源代码都能得到验证,系统还会统计出学生在班级的排名情况。学期结束时,用QQ 群的投票功能进行问卷调查,任教班级共68 名学生参与了投票,统计结果如表1所示。从统计结果看,使用混合教学后学生实验的积极性明显提高,学生参与度由原来的79.41%提高到97.06%。

Table 1 Participation questionnaire of experimental course表1 实验课参与度调查 (%)

3.2 代码调试能力明显提升

2020 年秋季学期,学校计算机科学与技术、软件工程、网络工程、物联网工程、人工智能5个专业共15个班级的大一新生开设C 语言程序设计专业基础课程,选定其中5个作为试点班。对C 语言程序设计课程的12个实验项目,通过对3个多月内数据库服务器中存储的评测结果进行分析后发现,学生的错误类型集中在语法错误上,但随着系统的使用,学生最终提交的代码语法错误越来越少,如图3所示。代码运行成功的比率也在逐步提高,如图4 所示。

3.3 课程考核成绩明显提升

因学院2020 级各班级学生入学分数相差较小,选定5个试点班后,另外10个班作为参照班级。试点班级和参照班级理论教学内容、要求基本相同,只是实验教学方式不一样。从最终考试情况来看,试点班在期末考试中取得了较好的成绩。在使用同一份试卷的情况下,将试点班级和参照班级卷面成绩进行对比,试点班级卷面平均分为75.69,比参照班级高出7.21 分,如图5 所示。试点结果可在一定程度上说明采用混合式教学对学生的学习,尤其是编程能力培养起到了较好的促进作用。

Fig.3 Trend of syntax error number图3 语法错误数量趋势

Fig.4 Trend of submission success rate图4 提交成功率趋势

3.4 应用能力明显提升

实验课使用混合式教学的班级,学生动手能力、工程应用能力、创新素养明显高于其他学生。在2021 年度学院申报的12 组大学生创新创业训练项目中,有8 组学生所在班的实验采用的是混合式教学。此外,采用混合式教学的班级学生参与教师科研项目的人数也比其他班多。最可喜的是,在2021 年的“蓝桥杯软件设计大赛”中,学生获奖人数也明显高于往年,对比获奖学生名次及人数,明显发现采用混合式教学对学生动手能力提升帮助非常大。“蓝桥杯”获奖名次及人数与实验采用混合式教学的关系如图6 所示。

Fig.5 Performance comparison between pilot class and reference class图5 试点班级和参照班级成绩对比

Fig.6 The relationship of the grade and number of winners with mixed teaching图6“蓝桥杯”获奖名次和人数与混合式教学的关系

学校和教师在探索实验教学新模式时的巨大付出换取了良好的教学效果。在课程实验混合教学模式设计过程中,精心设计5 种学习效果提升策略:①熟悉实验课程安排,助力实验准备;②组织学生交流,激发学习兴趣;③提供实验指导,消除学习障碍;④通过排名,树立学习榜样,引发外部驱动力;⑤鼓励自我反思,并将它们贯穿到混合式教学活动中。

4 结语

在疫情常态化防控情况下,经过3 轮教学实践证明,混合教学模式不但没有影响相关课程教学,反而提高了学生学习程序设计语言的兴趣,提高了学生编程水平、自主学习能力、动手能力,增强了师生间的互动,并且将教师从繁重的实验报告批改中解放出来,从而可以将更多的时间和精力投入教学研究和学生辅导工作中,教学效果得到明显提高。

猜你喜欢
程序设计实验课教学效果
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
高职高专院校C语言程序设计教学改革探索
“自由”的实验课
上实验课
PLC梯形图程序设计技巧及应用
提高病理学教学效果的几点体会
加强焊接教学质量提高焊接教学效果的探讨
一堂实验课引发的思考
抓好课的结束部分 深化体育教学效果