詹 炜 向 华 李文华
(长江大学计算机科学学院 湖北·荆州 434023)
程序设计课程是计算机大类专业的核心课程,是数据结构、操作系统原理、算法设计与分析等计算机核心课程的前序课程。当今世界,超级计算、大数据、云计算和人工智能技术的快速发展,对高校理工科学生的程序设计能力提出了更高层次的要求,尤其是对于计算类专业的学生,程序设计是必备的基本能力。
传统的程序设计类课程教学模式存在诸多问题:(1)过于注重理论知识的传授,易忽视学生的实践能力和编程思维能力培养;(2)单一的现场教学模式无法满足所有学生的要求;(3)课后学生不能及时进行编程实践,无法及时得到反馈结果,缺乏自我评估过程;(4)现场上机教学过程中,教师难以准确快速评估学生的程序设计实践能力,上机或实践成绩评测不全面。
OJ(Online Judge)来源于ACM国际大学生程序设计大赛,是基于B/S模式设计的开源系统,OJ能够在线收集数据、进行评价、提供及时反馈消息。目前国内外许多知名高校均建立了自己的OJ平台。如:北京大学(http://acm.pku.edu.cn/JudgeOnline)、浙江大学(http://acm.zju.edu.cn)和杭州电子科技大学(http://acm.hdu.edu.cn)等。
图1:分层次程序设计实践教学培养模式
针对上述问题和长江大学学生特点和程序设计类课程的编程实践的迫切需求,基于OJ原型,本文教研团队拟自主研发长江大学程序设计在线评测系统Yangtze University Online Judge(以下简称YUersOJ),系统搭建好完成后,对内网学生开放注册带有程序设计的经典题库和拔高题库,(1)基础功能:YUersOJ方便学生根据题目难易分值刷题,系统自动实时在线评测源代码并给出错误提示,包括对输出结果、格式、运行时间、占用内存资源等的判别等;(2)引导功能:引导学有余力的同学提供课外程序设计刷题平台,进一步提高编程能力;(3)培育功能:作为参加CCF、ACM或其他级别程序设计赛事的选手竞赛集训平台。达到根据学生层次分级针对性实践教学的目的。如图1所示:(1)对于低年级本科生,平台用于训练学生的基本上机实践能力培养;(2)对于学有余力的同学,平台提供数据结构及算法设计类题目刷题功能;(3)举办各种比赛,例如新生挑战赛,校园每月竞赛,通过编程竞赛,激发兴趣,营造氛围,选择优秀学生,参加培训团队,进而参加各种各层次编程竞赛,平台进一步为其提供参赛集训服务。
在OJ平台上,教师在平台上的只是提供一些基本的理论课程内容和知识体系,学生在线上编程过程中可以不断地提交自己的作业,以此来丰富教学内容。学生人数众多,教师通过学生提交的各种思路各异的解决方法了解学生的知识掌握情况,教师和学生组建成教学共同体。
YUersOJ平台设置了闯关模式,供学有余力的学生自己学习。关卡分为六个等级水平分别是入门、普通、提高、省赛、全国赛、ACM。所有在YUersOJ平台上学习的学生形成了一个群体,其中的每一个人都渴望更高的排名和分数,这就使得学生积极主动的去参与学习和任务。
YUersOJ平台可以记录每一位学生的每一道题的答题情况,实现过程性评价。YUersOJ平台允许同一道作业反复提交、反复测评,最后达到最优结果。从程序设计类课程上机成绩评分的角度看,过程评测更加有说服力和参考价值,更好的引导学生。教师可根据学生答题数据分析,明确学生可能存在的知识点瓶颈和难点,从而及时调整授课重点。
YUersOJ平台设计了“在线比赛”功能模块。学生在平台上同场竞技,不仅可以了解自己的编程水平,而且可以和志同道合的各类程序设计高手交流学习。
(1)联系实际,挖掘人文内涵,在教学过程中,透过具体的知识和内容,挖掘隐藏在知识背后的思维方式、价值观念和文化意义;
(2)触类旁通,培养创新精神。在教学过程中注重介绍程序设计方法,注重举一反三,强调前后知识迁移,鼓励应用创新,引导学生在应用实践中掌握编程语言知识。将不同的程序设计方法进行分类,总结每类问题的程序设计思路,引导学生融会贯通,培养创新和实践能力;
(3)精选实例,促进深入思考。通过典型程序实例,引导学生思考分析其中的人生感悟,培养学生的良好品质,成为有理想信念、敢于担当的时代新人。引导学生在实际生活和工作中也要识大局,注重细节,注重良好的习惯养成,做到懂规矩、守纪律,努力学习,不断提高自己的能力;
(4)营造氛围,做到榜样引领。课内课外,线上线下,真诚地关爱学生,帮助学生解决难以解决的实际问题,营造融洽的学习氛围,体现教师对学生的人文关怀,做有温度的教学。
多层次,一贯制的实践教学方式以“理解巩固课程内容,培养程序设计能力,规范软件开发习惯,孕育解决问题的思维”为目标。在实际的教学内容实施过程中,应该遵循客观规律,“取其精华,去其糟粕”,利用行业前沿的新知识去更新旧理论,并对教学内容多层次划分,最终凝练出“课内实验—课外作业—综合实践—科技竞赛”的层次的教学链,如图2所示。与此同时,教师团队可以利用具体的开发案例,让学生使用结构化编程和面向对象编程两种方法分别实现,以便他们可以比较两种方法的异同点,也可以让学生比较哪种案例适合哪种编程方式。
图2:多层次、一贯制实践教学链
平台建成后,应用价值高、覆盖面较广,推广价值高,对固本强基,按层次培养学生有很好的促进作用。
程序类设计课程是计算机大类专业的基础课程,更是学习数据结构、操作系统、算法设计与分析的前序课程。程序设计能力是当今高校生特别是计算机专业的学生必备的技能,尤其在当下大数据和人工智能技术风起云涌的时代。本文设计的编程类课程上机实践教学模式拟针对我院2019级、2020级和2021级学生开展实施,涉及的编程语言C、C++、Java、Python。其应用价值及推广按层次递进如下:(1)长江大学所有拟开设程序设计课程的学生和任课教师使用;(2)作为全校理工科学生计算机程序设计能力基础训练平台;(3)作为全校理工科学生算法设计与分析以及实现训练平台;(4)作为欲参加中国大学生计算机程序设计大赛、计算机学院CCF程序设计大赛、ACM程序设计大赛以及其他程序设计赛事的刷题训练平台。
平台建成后,应用价值高、覆盖面较广,推广价值高,对固本强基,按层次培养学生将会起到很好的促进作用。