基于混合式教学的程序设计基础课程改革
2021-04-23谷长龙李小英
谷长龙,罗 娟,李小英
(湖南大学信息科学与工程学院,湖南长沙 410012)
0 引言
以C 语言程序设计为基础开设的计算机基础课程是电气类、机械类和土木类等工科专业学生必修的一门公共课程,这些专业的后续学习对计算机技能要求较高,例如数据分析与处理、模型求解、参数优化等问题的编程实现等。计算机基础课程旨在培养学生的计算思维、问题转换与知识迁移能力,为后续学习打下坚实的基础。然而,该课程实际教学过程中存在学生积极性不高、被动学习、编程能力训练不足、缺乏团队合作训练等多种问题。本文探索了混合式教学模式,实践“慕课+微课+翻转课堂”的教学改革,利用优质慕课资源和自制的微课进行翻转课堂教学,以任务为驱动,帮助学生内化知识以提升实际编程能力,提高了课程实效。
1 问题分析
传统的面对面课堂教学模式中,教师多从头讲到尾,按照预先设置好的教学内容以及进程,甚至是教学方法传授知识,学生以听课为主,结合课后作业和测试对所学知识进行消化吸收,从而完成教学大纲,是先教后学的模式[1]。传统的教学模式有其固有优势,如知识传达的有效性和高效性、课程评估的统一性等。然而,对于程序设计教学而言,传统模式有一定的局限性:
(1)不利于发挥学生的主观能动性。由于教学内容多、课时少,需要花费大量时间讲解知识的来龙去脉,课堂经常变成老师的舞台。即使可以设计好的互动环节,也会因为学生无法跟上进度以及时间限制而草草收场。学生很难较好地参与到课堂中,会逐步感觉到乏味,无法提高其主观能动性,久而久之,就会对课程失去兴趣[2]。对于程序设计课程来说,编程实践非常重要。传统教学模式中,除了上机课,学生的编程实践多是在课外,很少有时间与老师见面。编程中遇到的很多问题是课堂上老师没有讲到的,只有在实践动手时才有可能碰到。如果老师不在身边,很多问题无法解决,长此以往造成问题堆积,学生将会丧失学习积极性。
(2)很难达成学生个性化培养的要求。传统教学是一种流水线模式,学生根据教师制定的明确的教学内容和教学目标,按照固定的时间和地点进行学习,无法满足不同学生的需求。此外,由于地域差距,学生层次千差万别,理解能力和思维方式各不相同,教师只能照顾中间层次及以上的学生,无法满足各类学生的需求[3],课程知识内化程度差异随着学生个性、学习能力和投入时间的不同而越来越明显。
(3)学生动手编程能力训练不足。由于每次课程学习缺乏目的性,缺少督促,学生在课堂之外的编程练习缺乏指导,碰到困难耽搁时间长,加之作业完成时间紧,下次课程又是新的内容,使得一些学生动手编程训练不足,作业易流于形式,抄袭情况屡禁不止。随着课程学习内容的增加以及学习难度的加深,这种情况越来越严重。
(4)不利于学生团队合作精神的培养。传统模式主要将焦点集中在教师身上,容易陷入填鸭式教学模式,师生课堂交流少,学生课后忙于完成繁重的作业,交流几乎仅限于作业题目,很少有关于问题解决方案的探讨。学生之间交流少,体验不到团队合作的重要性,更无法领会团队如何对相应问题进行分工协作[4]。
2 相关研究
随着信息技术的发展,当前的学习模式已经从单纯的面授转变为线上、线下的混合式教学。所谓混合式学习就是将面授学习与网络学习相结合,将真实的教室环境与虚拟的网络环境相结合,是自主学习、协作学习、发现学习的混合,是师生之间线下与线上交流的混合[5-6]。
2013 年,教育部批准清华大学成立教育部在线教育研究中心,旨在依托学堂在线慕课(MOOC)平台,充分发挥行政体制和市场机制的力量,探索一种“一体两翼”的在线教育模式。慕课具有传统教学模式不具备的优势[7]:①慕课是一流大学的名师课程;②学习不受时间、地点的约束;③慕课可以通过回看重复学习;④慕课学习不需要资历,不需要入学考试,只要有学习需求的人都可以访问开放的课程[8]。然而,单纯依靠学生利用慕课资源进行自学不太现实,主要问题包括:①学习者会产生注意力障碍和浅层学习现象;②碎片化信息堆积不易形成新知识;③学习者不知道知识间的内在联系;④能力培养缺少适合的土壤,学习者缺少将所学知识进行过滤、归纳、反馈和创新等深度思考过程;⑤在大量学习资源中容易迷茫;⑥课程的深度与广度不适用于学生后续专业课程需求。
微课是一种以微视频为主要载体,针对某个知识点或教学环节设计开发的数字化学习资源[9]。微课具有短、小、精、趣等特点,适合随时随地学习。
翻转课堂是在信息化环境中,教师提供以教学视频为主要形式的学习资源,学生在上课前完成对教学视频等学习资源的观看学习,师生在课堂上一起完成作业答疑、协作探究、互动交流的一种新型教学模式[10]。其主要优点包括:①基于任务和问题组织教学,便于学生知识迁移、知识内化能力的培养;②可共享其他高校优秀的课程资源;③便于实现个性化和差异化教学;④教师与学生之间、学生们之间互动性增强;⑤学生变被动学习为主动学习,有利于主观能动性的发挥[11]。
基于“慕课或微课+翻转课堂”的混合教学模式已经得到大量关注,并且广泛应用于各类课程的教学改革中。在大学计算机基础课程中运用“慕课或微课+翻转课堂”的混合教学模式正在蓬勃兴起,并取得了很好的效果。金燕[12]研究了计算机应用基础课程基于微课学习框架的翻转课堂教学模式;杨兰娟等[13]在程序设计基础课程中应用“翻转课堂”模式改进教学;罗丽苹等[14]引入“MOOC+SPOC+翻转课堂”混合教学理念,在大学计算机基础课程教学中进行大规模试点,取得了较好效果;赵宏等[16]在大学计算机基础课程中采用MOOC/SPOC 混合式课堂教学,通过实验班和对照班的相关数据比较,发现混合式教学能很好地训练和提高学生自主获取知识的能力。
3 教学改革方案
针对湖南大学程序设计基础课程中存在的问题,结合学生的实际特点,本文主要从制定混合教学模式和调整课程考核方式两个方面进行改革,辅以构建学习社区帮助解疑答惑,开放课程练习网上平台,不限时间、地点和次数练习,以及建设习题库等工作。
本文制定了选用优质慕课,建设针对具体问题的微课,抓好翻转课堂学习的混合教学模式。在众多C 语言程序设计课程资源中,选择了浙江大学翁恺老师的慕课;另针对课程知识点和教学环节制作了微课资源,包括26 个习题讲解微课、6 个重点难度微课、8 个实践指导微课以及34个课程回顾微课,每个微课视频时长5~15min 不等;采用任务驱动,抓好翻转课堂。课程教学的具体流程如图1 所示。
混合教学模式要求学生在开课之前划分好学习小组,每组4~6 人。在课前给定学生学习任务,要求学生在线上进行知识点对应的慕课或微课学习,完成预习测试题,并以小组为单位进行问题收集。为解决学生的基础差异,布置不同层次的任务内容,鼓励基础好的学生观看知识深化或拓展方面的慕课,为基础薄弱的学生增设计算机基础知识慕课。
课堂教学环节要求学生自带笔记本电脑等设备,教师发布讨论主题及相关练习内容,并对讨论提出具体要求,学生按分组进行讨论或编程练习。组间讨论或练习时,教师在课堂内巡视,针对共性问题进行讲解,或针对某个同学单独指导。为发挥育人作用,还应在任务中融入思政元素。学生成为课堂主体,在讨论及上机练习过程中理解知识,在学习过程中遇到的问题可以在课堂上与教师或小组的互动中得到解决。学生们在课堂上边讨论边练习,能增强其动手能力,避免长时间思考某个问题而影响后续学习,保证课后巩固练习时间充裕。完成讨论或练习后,教师进行总结,分析优点和不足,给出自己的观点供学生参考,并对问题进行扩展,给学生足够的思考空间,使其有继续深入学习的冲动。学生通过老师的讲解,梳理解决问题的思路,使知识内化,通过对延伸问题的思索产生强烈的深入了解的热情。
Fig.1 Flow of mixed teaching mode图1 混合教学模式流程
在课后环节,教师还要收集学情反馈,以便及时调整教学计划。学生通过成绩反馈明确对知识的掌握程度,通过参考答案弥补不足,提高学习质量,为下阶段学习做好准备。
4 混合教学模式实施案例
以下采用课堂实例展示混合教学模式,讨论主题是排序算法。对于非计算机专业的学生来说,排序算法一直都是重点和难点。老师在课前布置了慕课视频学习,并且专门制作了冒泡排序算法原理及C 语言实现的微课。通过课前作业完成情况可知,约有一半的学生可以完成“从键盘输入10 个浮点数存入数组,调用自定义函数完成对数组元素排升序”的基本排序问题。在此基础上进行翻转课堂教学,地点在我校智慧教室,有5 个独立的投影屏幕供学生使用,学生可以方便地上传自己的代码到投影屏幕,适合开展讨论教学。课堂教学班每班30 人,6 人一组,每个讨论组共享一个投影屏幕。
(1)教师点评课前作业,讲解冒泡排序算法以及实现过程,学生当场实现,教师现场指导,除了个别同学外,基本都可以完成,耗时20min。这个环节的主要目的是巩固教学的基本要求,学生学会一种基本排序算法,则目的达成。
(2)教师讲解选择排序算法原理,学生分组讨论,画出流程图,并根据流程图进行代码实现,教师参与各小组互动交流,6 个小组有1 个没有完全实现,排序结果有错误,其他小组完成良好,耗时20min。
(3)教师点评,分享事先准备好的流程图及实现代码,供学生参考比较。
(4)教师引入time 库,讲解C 语言程序运行时间测试方法;讲解随机数,用随机数生成方法取代键盘输入生成数组测试数据。学生分组讨论,分别测试冒泡排序、选择排序算法对1 000、10 000、100 000 个数字进行排序需要多少时间,此阶段耗时20min。
(5)教师点评,对问题进行扩展,例如如何判定程序运行效率,引入时间复杂度分析,是否有更高效的排序算法处理数据量很大的情况,并讲解快速排序算法的思想及实现流程,耗时25min。
课堂教学结束后基本教学要求已经达成,教师发布快速排序算法原理微课及原理图,布置课后习题要求学生实现快速排序算法,总结本次课程的成功与不足之处,发布各部分考核成绩。
在混合式教学中,学生是主体,教师更多的是分析问题和推动教学进展。学生主动参与到教学的每个环节中,而不是被动接受知识,易于发挥主观能动性。此外,由于学生课前已经掌握基本知识,有利于教师推动教学的深度和广度,开拓学生视野,提高其分析和解决问题的能力。
5 考核方式和满意度调查
课程考核是教学活动中至关重要的一环,通过评估和分析教学效果,有助于指导下一轮教学的开展,使教学活动成为完整的闭环。为保证混合式教学工作顺序进行,从多维度衡量学生的学习效果,本文调整了课程考核方式:首先增加课程的阶段性考核,将课前和课堂学习环节计入考核范围,然后调整各项成绩占比。
课程的阶段性考核是老师了解学生掌握知识程度的主要手段,而且通过反馈可以激发学生的主观能动性,帮助、提醒学生填补空白,提高学习质量。课堂学习中群组讨论(含群组练习)是培养学生团体协作能力的重要环节,但是群组讨论成绩考核要避免“吃大锅饭”,需分清主次贡献。课程作业均为C 语言程序,教学任务也是让学生掌握程序设计的基本方法,因此课前、课后作业均采用自动评阅系统,避免给教师带来批阅作业的压力,也可公正客观地考核学生的学习效果。群组讨论考核由学生和助教完成,分为讨论参与度和实现代码两部分,各占50%。统一发布考核标准,每次讨论课结束后由学生互评讨论参与度分数,助教完成学生的实现代码评分。群组讨论考核标准如表1 所示。
Table 1 Assessment criteria for group discussion表1 群组讨论考核标准
三项成绩按比例共同组成平时成绩,其中课前和课后作业各占30%,群组讨论成绩占40%。最终课程考核成绩中,平时成绩占40%,期中考试成绩占20%,期末考试成绩占40%。
本项教学改革实验在湖南大学土木2019 级9 班和10班学生中进行,期末考试为全校非计算机专业程序设计课程统一考试,从同一个题库中抽取同样难度的考题,考试形式为上机操作,由机器判分。对10 班学生和同年级同专业的2 班学生的期末考试成绩进行对比分析,得到各分数段学生占比及平均成绩,如图2 所示。
土木10 班共29 人,期末考试平均分为73.35 分;土木2班共31 人,平均分为59.00 分。土木10 班90 分以上6 人,占班级总人数的20.69%;土木2 班90 分以上3 人,占9.68%。土木10 班不及格6 人,占20.69%;土木2 班不及格16 人,占51.61%。同时对实验班级的学生进行了满意度调查,包括课程挑战度、教师教学技能、师生互动和教学效果4 项指标。结果表明,各项评价(数据统计来源于本校信息化平台的评教系统)优秀占比均超过95%,教学改革获得了学生的认可。
Fig.2 Proportion of final grades of class 10 and class 2图2 10 班和2 班期末成绩各段占比
6 结语
在“互联网+教育”的时代背景下,丰富的网络课程为教学改革提供了良好的资源,学生的学习方式和需求已经与网络资源息息相关。传统的教学模式中学生被动学习,很难满足个性化、差异化的群体需求,师生间交流较少,学生编程能力训练不足,缺乏团队合作。针对目前传统教学模式的缺陷,本文进行了混合式教学改革,通过任务驱动的“慕课+微课+翻转课堂”的教学模式提高学生的参与度,并通过调整考核方式,从多维度评价学习效果,着重培养学生通过程序解决问题的能力,以及计算思维能力和团队协作能力。通过课程期末成绩对比和学生满意度调查,绝大部分学生可以达到课程大纲要求,符合教学改革预期。然而,在教改实践中仍存在翻转课堂如何保证课堂讨论或练习进度、学生设备管理等问题,有待进一步探讨。