熊启军,龚雄兴,宁 彬,谷 琼,程格平
(湖北文理学院 计算机工程学院,湖北 襄阳 441053)
程序设计类课程的教学贯穿计算机类专业人才培养的整个阶段,其重要性不言而喻。针对程序设计课程群开展的教学研究层出不穷,且一直呈现欣欣向荣的景象。在日益重视实验教学、强调动手能力、倡导创新意识和创新能力培养、推进新工科建设的背景下,多种教学模式、评测手段应运而生,特别是MOOC、SPOC、翻转课堂、大数据等新思维和技术的广泛应用,对教学方式的改进和教学质量、教学效率的提升起到巨大的促进作用[1]。从研究成果和应用情况来看,理论研究成果丰富、应用范围广泛,实验研究成果则略显单薄、应用也相对滞后,因此,实验教学的研究和应用是当务之急。
目前,实验教学主要存在3种模式:传统型、平台型和复合型。
广大地方院校主要依照“准备、实验、报告、批阅”的四部曲组织实验教学[2],这种传统的实验教学模式及过程存在显著的弊端,往往使得师生双方都不满意。
(1)实验缺乏参照性。实验内容必然依托课程的理论知识和示例,必定不是教材例题的简单重复,肯定是对基础知识的验证、应用和拓展。在面对实验任务时,部分学生感觉缺乏直接参照物,首先想到的是“百度”,而不是积极思考,从而导致实验效率低下。
(2)实验缺乏自主性。学生被固定的实验内容、实验时间所束缚,没有自由支配的时间和空间,继而产生“吃不到、吃不饱”的现象[3],容易导致敷衍塞责或磨灭积极向上意志的后果。
(3)实验指导缺乏有效性。客观存在的“一间教室、一位教师、一群学生”的实验条件[4],使得学生在实验中碰到的困惑、疑难、错误,即使通过学生和师生互助、百度等方式解决一些,也仍有一些学生不能得到及时有效的指导和权威的答案,不能及时解决问题,实验热情、实验效率大打折扣。
(4)实验评定缺乏公正性。由于实验指导任务繁重、实验报告的批阅量大,教师不得不过分关注实验结果,无可奈何地降低或放弃实验过程在实验成绩评定中的比重,使得成绩评定缺乏公正性,间接助长偷工减料和抄袭行为。即使开展过程性评价,由于操作的复杂性、局限性,也往往是虎头蛇尾。
(5)实验后续缺乏侧重性。实验批阅后,学生只关注自己的得分,而轻视和忽略教师对具体内容的批改和评语,以及个人的反思和改进。
通过在线评测平台(online judge)实现实验教学,实验过程是学生在平台上刷题、提交程序代码给服务器进行自动评判、返回评判结果[5]。基于在线评测平台的实验模式呈现出的主要特点是以刷题量、正确率为评判标准,属于题海战术;教师的工作重心从指导实验向编撰实验题转变;对学生学习的自觉性要求更高,但在实际应用中,这种实验方式具有显著缺点。
(1)缺乏师生交流。自动评测平台虽然将教师从繁重的体力和脑力劳动中解放出来,但是师生交互大大降低或缺失;学生直面平台反馈的简短程序调试信息,难于发现和改正错误。
(2)缺乏质量保证。虽然通过“刷题”可以大大地增加程序代码量的训练,却缺少程序编码风格化和程序格式规范化的训练和培养,可能导致程序代码的可读性变差,即重数量、轻质量。
(3)缺乏实验过程。在评价实验成绩时,以“刷题”的程序代码“Pass”为主要评分依据,忽略思考和设计的过程。
(4)缺乏实验文档。在线评测平台一般不具备自动生成实验报告的功能,学生也会忽视实验报告的撰写,导致学生对实验报告文档的格式和内容缺乏了解,更重要的是缺乏写作能力的锻炼和培养。
复合型教学模式是将传统实验教学模式与自动评测平台实验教学模式相结合,实现取长补短、相得益彰。通常,实验内容中编程题通过传统方式实现、客观题通过自动化测试平台实现,或者对大众采用传统实验方式、对学有余力者采用自动评测平台方式。或者说,传统式侧重于对基本概念和原理的理解、验证性实验,平台型侧重于应用性、综合性实验。
随着MOOC、SPOC、微课、翻转课堂等新型教学资源和教学方式的兴起,个性化、碎片化、自主性学习备受推崇,且成为了教学研究和教学实施的主流[6]。SPOC是MOOC的补充和拓展,充分利用SPOC的微小性(篇幅短小)、特定性(针对特定问题和特定对象)、普遍性(针对学生普遍存在的问题和难题)开展教学[7],形成SPOC实验教学模式。概括起来,基于SPOC的实验教学具有“四化”的优势。
(1)实验知识专题化。针对实验所涉及知识点或学生在实验中普遍存在的问题、疑惑、错误开辟专题教学,既可以供学生课内外随时查阅和学习,又可以避免教师的重复性劳动。
(2)实验指导同步化。实验指导不是实验示例、实验原理的简单罗列和归纳,而是借助SPOC平台,把具体实验内容、操作步骤、主要代码、实验数据输入、结果输出的详细解析等制作成微视频、PPT、Word文档。这样,学生在实验中碰到困难时,既可随时查看和参考实验操作步骤、方法、代码等,避免实验中途的卡壳,又可以通过SPOC平台的答疑区进行实时求助和答疑。在实验评分时,可依据查阅参考答案的次数、求助问题的难度等进行加权减分。
(3)实验内容碎片化[8]。一方面教师可以给出实验题目的解答框架,让学生补充具体内容和细节;另一方面可采用碎片化的项目式实验教学,旨在培养和锻炼学生的综合性、应用性、创新性等能力,但初学者可能对项目开发束手无策,因此,可以从项目的提出、需求分析、总体功能设计、详细算法设计、具体编码和调试、测试等步骤着手,进行过程性分析、碎片化分解、示例性讲解,让学生感受到有章可循、有例可仿、有新可创。
(4)实验自主化。经过一系列的训练后,学生完全可以在课堂内外进行自主性实验,从而建立起以熟悉基本概念、掌握常用算法、培养编码能力为主线,以学生为主体,以主动学习为主轴,线上线下优势互补的实验教学模式[9]。该教学模式具有更贴近教学班级的实际情况、自主掌控实验进度、灵活多样的实验指导形式等特点,正日益受到师生的青睐[10]。
对于程序设计类课程,实验题型主要涉及选择、填空、判断、改错等类型的客观题和编程、辨析等主观题,实质内容是基本概念和原理的理解和应用、算法设计、编码和程序调试[11]。基于SPOC的实验教学模型如图1所示,在SPOC教学平台上,图中的各部分之间通过菜单和超链接组织在一起。
图1 基于SPOC的实验教学模型
数据结构与算法是计算机类专业、程序设计类课程的核心基础,线性链表则是数据结构与算法课程内容中的一个重点和难点。以该课程中的“使用链表实现一元多项式乘法”为例[12],SPOC实验模式的具体实施如下。
该实验内容的元知识点包括一元多项式结点和链表类型定义、存储空间的动态申请、指针赋值、数据项访问等;由这些元知识再构成链表的基本操作,如链表的建立、遍历、插入、删除等;进而再构成链表更复杂的运算,如同类项合并、多项式乘法等。在算法设计和解答示例中提供演示数据及程序运行效果图,各实验步骤以元知识点讲授、基本运算的实现、复杂算法的设计为单位,采取图文并茂的形式制作PPT文稿、录制微视频、编辑Word文档。围绕图1,将各部分内容进行分类组织,可构成“使用链表实现一元多项式乘法”实验的SPOC模式解决方案,如图2所示。
在湖北文理学院计算机工程学院2016级软件工程专业两个平行班(各60人)进行对比试验,实验一的主要内容是“顺序表实现一元多项式加法[13]”,实验二是“链表实现一元多项式乘法”,图3所示是1班采用SPOC实验模式而2班不采用时,实验一成绩对比;图4所示是均采用SPOC实验模式时,实验二成绩对比。从图3中可以看出,采用与不采用SPOC实验模式的显著差别;从图4可以看出,在2班采用SPOC实验教学模式后,实验成绩显著提升,成绩分布与1班非常接近。由此可见,基于SPOC的实验教学模式可以提高实验成绩,从而提升实验效率、效果和教学质量。
图2 SPOC模式解决方案示例
图3 实验一成绩对比
图4 实验二成绩对比
各级各类学校在研究如何教学方面的投入是巨大的,也取得了一些成效,但在研究如何解决学生主动学方面却显得极为薄弱,且后者才是提高教学质量的关键。目前,湖北文理学院正在开展“千问计划”,即对学生在学习过程中遇到的各种问题和建议进行收集、分类、整理、回答,集编成册,这既为教师掌控和改进教学提供第一手资料,又为学生学习提供参考和借鉴,这一举措必将使SPOC 实验教学模式更加完善,对教学改革和教学质量建设产生深远影响。