基于SPOC的C语言翻转课堂教学改革与探索
2019-01-23贾金芳王晓英刘志强杜正君
贾金芳,王晓英,刘志强,杜正君
(青海大学 计算机技术与应用系,青海 西宁 810016)
0 引 言
程序设计基础I(C语言)课程作为计算机专业大一新生的第一门编程课程,其主要以用计算机编程语言解决实际问题的基本技能为立足点,逐步培养学生独立进行编程和算法设计的能力。随着对专业IT开发人员的需求越来越多,对计算机程序设计教学的要求也越来越高。然而,在程序设计类课程专业教学中,仍存在以下几方面共性问题[1-3]。
(1)课程知识点琐碎、繁多、分散,传统教学中理论知识的讲解几乎占据了所有有限的课堂时间,存在“重语法、轻程序”现象,学生对重难点知识不能深刻理解,理解不了编程思想,体会不到编程的乐趣,久而久之,越来越多的困难逐渐降低了学生对课程的学习兴趣及积极性。
(2)目前课堂教学中普遍存在“教师是课堂的主导者,学生是被动的接受者”等现象,课堂缺乏活跃的互动氛围,这导致学生基本没有自主学习的能力和自主研究、探索的精神。
(3)教学资源、方法太单一,教师无法从多渠道获取学生学习情况反馈;另外,每个学生的计算机基础差异较大,对知识的掌握及对知识的渴求也有所不同,单一的教学模式及方法不能做到因材施教。
(4)没有阶段性评价,只有期末纸质测试,不注重过程性考核,并且考试以理论知识为主,忽略了程序设计课程的本质,学生考前只要认真突击复习就可以得到高分,而动手编程和实践创新能力并没有任何提升。
基于以上各种问题,我们借鉴翻转课堂教学理念,基于中国大学MOOC程序设计课程SPOC平台,翻转“教师—学生”的主体作用,改革传统教学模式,培养学生的学习主动性;注重过程提升,变革教学结果,提高教学质量及教学效果。
1 SPOC及翻转课堂内涵
MOOC(Massive Open Online Course,大规模在线开放课程)自被提出以来,在全球激起一股教育热流。2012年“MOOC元年”后[4], MOOC本身的大规模、开放等特点使其面临很多困难与挑战,但其超越传统教学的优势仍不能完全替代面授课程,因此需结合二者优势,取长补短。为此,加州大学伯克分校计算机科学教授、MOOCLab课程主任阿曼多·福克斯(Armando Fox)于2013年首次提出小规模私有在线课程SPOC(Small Private Online Course)概念[5]。研究认为,SPOC是对MOOC的继承与完善,它可以高效结合优质MOOC资源与课堂面授的优势,实现对教学的重构与创新[6]。
针对如何打破传统教学中学生被动接受知识,培养学生主动、自主学习能力等问题,美国研究者率先提出一种新的教学模式——“翻转课堂(Flipped Classroom)”,实践证明,基于这种新模式的教学成效超出了人们的预想[7]。翻转课堂其核心理念是翻转了传统教学模式,学生在课前自主学习教师提供的视频或相关资料,完成相关测试、练习;课堂时间则用来讨论、解决问题,并进行知识深化[8-9]。这种模式将各种学习资源“时间最大化”,完全不同于单一的网络视频课程。
自2011年翻转课堂进入我国后,MOOC及SPOC的兴起为高校教师开展翻转课堂提供了优质的线上教学资源,进一步推动了混合式教学的发展,越来越多的教师逐渐开始尝试翻转课堂实践。SPOC的“小规模”和“私有”特性也决定了其更适合开展翻转课堂教学[10]。
2 翻转课堂教学改革与实践
2.1 构建教学资源平台
课程线上学习资源依托于中国大学MOOC联盟、北京理工大学李凤霞老师的C语言程序设计课程同步SPOC专区,教师可以根据教学需求自行补充教学资源,学生可以课前进行视频学习、单元练习测试、问题讨论及课后复习,教师通过后台可随时掌握学生学习动态。除此之外,也充分利用青海大学教育在线平台及时发布教学资料、学习素材、课后作业等,学生可实时通过平台自主下载资料、提交作业、查看作业批改反馈,改善了作业拷贝、不能集中管理的复杂性,完全实现电子化办公,既便利了学生学习,又方便教师统一管理。
2.2 开展课堂教学改革实践
课堂面授作为线下教学手段,通过“线上+线下”混合模式,应主要展开以下教学实践。
1)通过翻转课堂教学,强化学生主体作用,培养学生的学习主动性。
(1)教师在上课前一周通过学校教育在线平台或课程学习交流QQ群,发布下节课所需知识点、学习资料、要求及讨论题目。
(2)学生课下以小组为单位进行讨论,并形成各自讨论结果或讲稿,在课前发给任课教师,任课教师可以提前通过讨论结果掌握学生学习情况,提前准备课堂需重点强化内容。其中,将33人左右的一个单班划分成5~6人/组的多个小组,以“好带差,小组帮扶制”为原则,学生自由组合,并推选出组长。
(3)课堂上教师在每组随机抽一名同学对讨论结果进行详细讲解,其他学生进行现场提问,由学生进行答疑,同时教师做好问题及答题情况记录。
(4)教师当场打分(讲者的成绩代表小组最终成绩),对学生讲解、答疑情况进行点评及总结,并将重、难点问题围绕“程序设计思想”进行举例、深入讲解。
教师重点讲解知识点的过程中,可开展启发式教学、案例式教学等模式,使每一位学生积极参与课堂活动,活跃课堂氛围,培养他们的思考、自学能力。①启发式教学:如引入数组前,通过求全班同学平均成绩的例子,让学生先通过之前已经学过的单个变量的方法求解,然后发现这样编写出来的程序存在复杂性和不易扩展性等问题,启发学生考虑如何一次性存储多个数据,提出使用数组的必要性和便捷性。②案例式教学:如在讲授二维数组时,引入一款经典的益智游戏“推箱子游戏”,逐步引导学生如何标记并找到一条畅通的路径将箱子从某个位置移动到目的地,这样的游戏案例不仅激发了学生的兴趣,同时也有助于理解二维数组的使用方法。
2)通过阶段性测试,评测学生阶段学习效果,分析学情。
在开展教学内容及方法改革的同时,建立有效的评价反馈机制是衡量教学效果和质量的常用手段。课程除了通过SPOC平台、实验课堂练习分析学生学习情况之外,还引入了阶段性测试,其更能反映学生个体对阶段性学习知识的掌握、应用情况。
学期中共设置3次测试,考试题型主要以程序设计题目为主,判题方式采用与各类竞赛模式相对应的测试用例方式,充分考察学生的创造性思维和独立解决问题的能力,同时也改善传统评测中只要写出部分程序即可得分的现象,测试平台则使用SPOC平台和OJ平台,OJ测试平台如图1所示。
图1 OJ测试平台
这种评测方式,既可发现学生阶段性学情;也可通过分析每类题型的答题情况,发现部分学生仍存在的困难或知识难点;进一步调动教师教学的积极性和主动性,不断深化教学内容和改进教学方法,提高教学质量。
3)通过学期学习,鼓励学生完成实践题目、参加学科竞赛,锻炼学生的动手编程能力。
动手编程能力在程序设计课程中具有不可替代的重要地位,是培养、提高学生综合素质和创新能力的重要组成部分。只有将课程理论教学与实践教学相结合,课内教学和课外实践相结合,才能扎实掌握一门编程语言。
在学期结束前两周,教师发布难度级别不同的多个实践题目供学生选择,如模拟火车购票、万年历、简易计算器、消灭星星游戏等,要求一般难度和中等难度的题目每组1~2人,较高难度的题目每组1~3人。学生自由分组并选择一个题目,组内合理分工,最后提交实现源码及实践报告。通过完整的实践设计,使学生亲身体验一个完整的软件开发流程及注意事项,培养学生自主学习、实践探索、编程解决实际问题的能力,提高团队协作能力及其他各种综合素质。
此外,本着“程序设计类课程是学生参加各类程序设计竞赛的基础,程序设计竞赛是学生学好该类课程的有效补充”[11]原则,鼓励学生参加各类程序设计竞赛,如CSP、蓝桥杯等,进一步培养学生的综合素养,将学到的课堂知识进行整合、分析和应用,提出解决实际问题的具体方案并实践验证[12]。
以上教学实践模式使得学生的专业技能在入门阶段得到大幅度提升,能深入体验专业学习乐趣,推动了课程教学效果的提高,同时也为计算机专业创新、应用型人才培养奠定了前期基础。
2.3 注重过程化考核的课程考核体系
课程注重过程化考核,采取过程性评估和终结性评估相结合的课程考核方式,由平时成绩和期末考试成绩组成最终成绩。具体成绩计算见表1。
3 效果分析
(1)学生学习成绩明显提高。分析近3年来实施教学改革前、后学生期末考试成绩,如图2所示。可以看出,从16级开始翻转课堂尝试后,学生的成绩较之前有很大提升。其中17级学生改用测试用例测评方式,如果程序可以编译运行,但没有通过任一测试用例,则不得分,所以成绩相对关键词评分要偏低。
(2)学生开发能力和程序设计竞赛能力提高。学生在学期末完成的实践题目从最初的几行到几百行,实现了很大的飞跃,个别同学有效实现代码达750行左右,具备了初步专业技术水平。从学生参加2017年12月份的CSP考试结果来看,成绩达到200分及以上的同学中,16、17级学生人数占75%,并有1名17级学生获得2017年CCF大学生计算机系统与程序设计竞赛(CCSP)铜奖,不管是逻辑思维及创新能力,还是实践应用能力,都值得肯定。
表1 课程过程化考核体系
图2 程序设计基础I历年考试成绩
4 结 语
基于SPOC平台的程序设计基础I翻转课堂教学尝试,突出了学生的主体作用,提高了学生的主动学习动力、团队协作能力,培养了学生的逻辑思维和工程实践能力;强调了教师的引导作用,进一步提高了教师的信息化素养;对课程后期多元化改革与发展起到了积极推动作用。在此基础上,还需要不断提升教师自身素养,同时深入研究、改进和完善课程改革实施方案。