APP下载

基于云课堂及OJ系统的编程语言实验课程教学改革探索与实践

2018-12-06东北大学计算机科学与工程学院国家级计算机实验教学示范中心张立立

电子世界 2018年22期
关键词:编程语言题库编程

东北大学 计算机科学与工程学院 国家级计算机实验教学示范中心 侯 帅 张立立

针对高校传统编程语言类实验课程提出了一种新型教学模式的改革方案。通过实验室建设和教学形式变革两个方向,将云课堂技术和OJ系统引入到编程实验课程中。在实践中打造出可以灵活部署,高效维护的实验环境,集高强度训练,高效管理,科学测评于一体的教学模式,对编程语言类课程实验教学具有很好的启发意义。

各类计算机编程语言课是大学本科计算机教学体系的重要组成部分,是学生深入了解计算机科学,掌握专业技能的重要基础。当前,传统的编程语言类课程采用课堂学习语法理论与实验课编程练习相结合的形式。该形式在教师实验授课效果及学生学习效果两个方面都有不足之处。

首先,专注与兴趣是各种编程语言学习的关键,进行大量的针对性练习是熟练掌握编程语言的必要途径。由于实验时间和学生人数规模等因素,实验课上规定题目的练习方式所取得的教学效果有限。因此,引入更具互动性的教学模式,更为客观的评价体系,进而激发学生的主观能动性是教学改革探索的重要方向。其次,在传统计算机实验硬件教学环境下,各类编译软件、教学软件都需要安装在同一终端下,不同软件的版本管理,更新维护,功能使用都受到单一主机终端性能的限制,同时这也是改进实验教学模式的环境制约因素。

针对以上痛点问题,我们引入云课堂技术突破硬件环境性能瓶颈,在此基础上,以OJ系统为平台革新教学形式。在实践中取得了良好的效果。

1 云课堂系统建设

工欲善其事必先利其器,OJ系统下的教学改革需要先进的信息化技术及一定的硬件性能作为支撑才能实现。实验中心引入了完整的云课堂解决方案,对专门的教学场地进行改造升级。采用多服务器负载均衡的向实体终端推送虚拟教学环境的架构。建设成了集虚拟化终端,云端数据管理、师生高效互动于一体的云课堂教室。

1.1 虚拟化的终端

云课堂系统彻底解决了单一实体主机在高校计算机教学中维护困难,更新管理不便的难题。教师可以将计算机操作系统及应用环境整理成镜像,上传到云课堂系统统一管理。如图1所示。

图1 云课堂镜像管理

云端服务器具有管理,更改保存教学环境的功能,教师可以将不同科目的上课内容配置成不同镜像,在上课前将相应的教学内容临时通过网络发送到学生端进行教学。同时可根据教学内容自由配置学生虚拟终端性能,充分合理的利用设备资源,使每门计算机实验课程在共享同一组实体硬件的同时,在软件空间上相互隔离,获得最为高效的运行环境,保证多重教学任务顺利进行。

1.2 内容管理

云课堂系统具有强大的内容管理功能,教师可以将所有的需要与学生共享的教学课件,教学资料视频等上传到云课堂中。学生可以实时获得这些共享资源,积极进行课前预习及课后回顾,为学生自主学习创造了便利的条件。云课堂系统也在服务器端为学生提供了个人存储空间,方便学生将个人学习成果,作业及问题及时上传让老师查看批改,及时的得到教师的反馈,极大的提升了师生间的互动沟通效率。

1.3 系统管理

在服务端,云课堂系统可以通过web方便的对服务器情况进行监控管理,方便的进行网络,性能配置,并且可以部署新的web应用服务,具有很好的扩展性。在此次教学改革中,OJ系统就被上传部署在该服务器中。在教师端也集成了传统的网络课堂工具,可以统一查看学生终端内容,实时了解学生上课情况,方便的管理所有终端,如图2所示。

图2 云课堂教学管理工具

云课堂系统的建设为OJ系统下的教学改革奠定了坚实的环境基础,其高效的信息化管理模式也极大的提升了教学实验室软件、硬件管理维护效率,减小了各类软件的冲突域。为在有限教学环境限资源下进一步扩展高级实验内容创造了条件。

2 OJ系统下的编程语言课程实验教学

OJ(Online Judge)系统是一种在线评判源码的系统。学生根据题目提交各种类型的源码(C语言、JAVA、C++等)。OJ系统编译执行提交代码,根据事先给定的样本输入输出判定代码功能是否正确。同时还可以捕捉程序执行时间,规定内存使用限制。可以在无需人工干预的情况下返回评判结果。是各种国内外程序设计竞赛的环境平台。此次课程改革在东北大学自主研发的OJ系统的基础上,以C语言课程为先导,开展了及题库建设,课程规划,数据统计,测评考试于一体的实验课程建设探索工作。

2.1 NEUOJ系统功能

基础功能方面,学生注册后可通过NEUOJ系统的题库选择问题提交源码进行解答,在status中查看解题状态。通过设定题目答案的判定条件,执行时间,消耗内存大小等,可以从各个角度考察学生的代码质量,扩展学生的编程思维方式。编程效果的及时反馈也极大的提升了互动性。激发学生学习及思考问题的热情。系统功能方面提供所有学生在线活动及答题情况统计,收集保存学生提交的代码,同时开放互动论坛方便学生交流互动。在教师端提供维护题库题目,建立测评考试,实时反馈成绩,建立训练题库等功能。整个系统的功能需求定位准确,扎实有效。为开展教学改革奠定了坚实的基础。

在题库建设方面,为了给学生更为广阔的训练空间,更为合理的训练内容,此次课程改革的训练内容对接了OJ原有的竞赛训练题库,充分保证了学生发展的上限空间。同时为了保证学生循序渐进的接受新知识,中心实验教师从国内外C语言教材中精选习题,又新加入了百余道难度适宜,覆盖各类知识点的新练习题。每道习题经过录入,编写结果样例,测试题目运行情况后加入题库,保证学生正常练习。

2.2 课程规划设计

中心实验教师以OJ软件功能平台及云课堂硬件系统的为依托,以开放自主学习,实践为主的理念为指导,对原有的布置习题,讲解,验收的单一实验课程模式进行变革,将4次16学时的实验课规划成编程环境指导,在线练习答疑,考试测评于一体的三段式教学模式。

由于新的教学模式极大的提升了教学效率,解放了教师统一验收,讲解题目的教学时间。为了更好的利用现场教学机会,突出实验课的应用性特色。在实验的第一课引入了新的教学内容,突出强调了原有的实验环境引导介绍部分。具体包括介绍课堂当前讲授的编程语言对比其它编程语言的特点,解释源代码经过预编译,生成目标文件,链接,可执行的整个过程。查看整个过程中生成的各种文件。介绍各类编译器VS,CodeBlock等的简单使用,查看工程,讲解一些编译软件的整体设置等。组织具体案例讲解如何编译程序,通过设置断点,查看变量等方式调试程序的Bug。向学生介绍简单其它的编译环境,如linux环境下的 gcc工具等。通过更为集中详尽的讲解让学生熟悉编程环境,了解程序编译的基本原理。为后续编写运行程序扫清一定的工具使用障碍。

新模式的日常教学以完成题库题目为主,在学期上课前,以本学期理论课知识点为线索精选题目建立基本训练集。由于OJ系统全天开放,学生的学习活动就可以摆脱空间束缚,从课堂延伸到课下,学习进度完全自主决定。在第二次,第三次实验课现场采用以学生为主,教师辅助答疑的模式。进一步启发学生的自主学习兴趣。

相较与以往每节课验收学生完成固定题目代码的方式,配套的新的成绩评定考核标准可以更加客观准确的从平时表现和编程水平两个维度评价学生的学习情况。学生的成绩由3部分构成,基础作业的完成情况30%,题库中额外练习情况20%,结课测试50%。通过统计每位学生提交代码的错误率,题目完成情况,可以准确量化学生平时表现分数。最终的考试由OJ系统生成,如图3所示。

图3 OJ编程考试

NEUOJ系统可以在线生成考试,经过便捷的设置可以准确批量导入学生信息,设定考试开放权限。考试题目来源可以选定题库中已有的题目,也可以临时设置题目。在实际使用中,如果场地规模受限,可随机抽调生成多组题目作为考试备选。考试过程中,OJ系统可实时判定学生上传的代码,监控考试进度,生成导出学生成绩排名,实现大规模编程考试的自动化评判。

2.3 教学实施情况

本次教学改革在2017级计算机专业,电子专业共13个班,400余学生中开展。取得了一些宝贵的实践经验。

OJ系统可以及时直观的反馈所有学生平时的学习状态,系统数据可以实时记录学生完成课内课外题目数量,每个题目代码的提交次数,代码的执行时间,消耗的内存等。如图4所示。

图4 学生平时编程情况统计

这些统计数据使得教师可以从多个维度侧面获取学生编程基础,练习代码量,学习主动性,编程习惯等信息。扫清了过去但难易统计,但对评价学生非常重要的数据盲区。老师通过统计数据可以在大量学生中快速定位到完成情况不佳的学生,询问他们的实际情况,及时提供帮助。切实通过技术手段调动有限的教学资源高效分配,提升教学效果。

相较于传统的教学方式,开放题库的练习模式极大的提升了学生的编程能力,取得了很好的教学效果。首先,代码训练量显著增加。由于OJ系统可以自动实时判定代码提交结果,可以一定程度上不受师资人数制约达到及时反馈指导的效果,本次教学改革中事先编制的入门题目数量较往年提升了一倍。在完成基础的规定题目熟悉语法之后,学生可以自由尝试题库中的题目,给予其自由发挥的空间。评分政策上,基于OJ系统的数据统计,对于完成额外题目的学生给予奖励。在环境条件与评分政策的双重引导下,本学期有50%以上的同学不同程度的参与完成题库内外扩展题目。

在这种及时反馈与闯关形式的激励下,学生的自我学习热情被极大的调动起来,在平时的指导过程中。这些初次接触编程的学生经过短时间的练习之后可以主动提出很多有关程序执行时间、数据结构使用等有关算法的更深入的问题,也尝试通过查询资料自行寻找解决方案。为他们后续的进阶学习打下了坚实的基础。

而在OJ在线评测的教学环境下,教师所面对的问题将不再局限与课堂上的内容,课堂上学生对于算法,底层语言等各种开放性问题明显增多。老师需要在学生基础薄弱的情况下,尽量将所涉及到的知识概念用直观的方式解释清楚。对实验教师的教学水平提出了更高的要求。

3 结语

本次教学改革从硬件云环境的部署做起,通过将OJ系统与实验教学紧密结合,使得实验教师从重复性的机械性工作内容中解放出来,充分利用有限的学时提升教学内容的质量。学生在多元化形式的教学及评价体系中,自我学习的能动性极大增强,教学效果得到了全面提升。

而本次实践另一点重要的意义在于,教学环境的虚拟化与学生统计数据的信息化所形成的大数据为未来课程改革中进一步发现问题,进而做出科学决策奠定了基础。例如通过统计题型的通过率更为精确的掌握学生的学习难点,通过学生的反馈数据实时跟踪学生的学习进度,绘制学习曲线。随着系统开放访问范围的增大,更多教学数据会快速积累,借助云平台优势可以将现有的大数据科学分析方法引入到实践教学中,帮助挖掘潜在问题,实现实验课程持续迭代改进。以云平台和OJ系统为基础的课程改革解决方案可以便捷的推广到其它编程语言类教学课程中,在多次实践中通过数据分析编程语言的教学特点,定位存在的问题,帮助实验教学质量整体提高。

猜你喜欢

编程语言题库编程
压力-体积转换在CFC编程语言中的实现解析
“勾股定理”优题库
编程,是一种态度
元征X-431实测:奔驰发动机编程
“轴对称”优题库
编程小能手
纺织机上诞生的编程
“轴对称”优题库
Java编程语言的特点与应用
“整式的乘法与因式分解”优题库