程序设计课程小班试点
戴波,周世杰,陈文宇,卢光辉,丘志杰,黄郦生
(电子科技大学 计算机科学与工程学院,四川 成都 611731)
摘要:针对程序设计课程存在的理论与编程实践学时安排矛盾以及实验教学中师生配比不够、实验辅导不足等问题,提出加强预习干预引导、实战演练、课堂教师辅导和实验指导以及增加学生分组互助学习、学生讨论、成果演示等手段,结合目前国内外取得良好教学效果的翻转课堂教学法、微课视频资源实现翻转教学,并拟在小班试点改进后推广。
关键词 :程序设计课程;翻转课堂;微课视频;小班教学
第一作者简介:戴波,女,讲师,研究方向为并行算法与图像处理,daibo@uestc.edu.cn。
0 引言
为了全面贯彻落实 《教育部关于全面提高高等教育质量的若干意见》 (教高[2012]4 号)精神,不断深化本科人才培养模式改革,构建研究型大学本科人才培养新体系,培养高素质拔尖创新人才,《电子科技大学本科人才培养方案修订指导意见》以通识课程、学科基础课程、学科拓展课程、专业核心课程、实践类核心课程、个性化课程6个课程模块的构建为核心,推动课程的整合和优化,搭建个性化、多元化的人才培养平台,促进学生全面、个性发展,其理工类课程模块与学时要求如图1所示。
基于学校的培养理念,计算机科学与工程学院将培养目标定位在培养掌握计算机基本理论和基本知识,接受从事研究与应用计算机的基本训练,具有研究和开发计算机软、硬件基本能力的高级人才。程序设计课程是计算机专业的核心基础,涉及程序设计语言(C语言)、数据结构、算法设计与分析、面向对象语言(C++/C#/Java)、设计模式和软件工程等多门课程。我们分析当前教学中存在的如课程分割零碎、课程之间连贯性差、不同课程内容重复较多、对后续课程支撑力度不大、教学手段落后与师资队伍建设不足等问题,在课程、实验和团队建设等方面做了一系列研究探索,如采用递增式的项目驱动教学分级培训学生程序设计技能,组建程序设计基础团队,重新设计与整合关联课程,采用自动化批改程序软件,建立题库与项目库等方案,并在小班连续2年进行试点,取得良好效果,2014年开始在全年级推广[1]。
1 推广后的程序设计课程现状与调查分析
1.1 推广后的程序设计课程现状
小班试点在旧有培养方案的基础上进行,C语言和C++课程内容有整合,但仍然与其他班级一样分开教学和参加统一的期末考试,便于与其他班级对比教学效果。2014年,我们基于新的培养方案在全年级进行合并后的程序设计语言教学,同时面临如下现状。
(1)内容多,时间紧,以前的两门课程合并成为一门课程之后,课时数量是以前一门课程的课时数量,而不是两门课程课时数量的总和。
(2)导论课没有打下基础,如对于计算机硬件及工作流程的初步认识、内存管理方式的理解、鼠标键盘的熟悉、操作系统和办公软件的熟悉与使用等。
(3)课程合并后,两门课程的教师总数增加,班级人数由120人以上/班减少为70人/班,达不到学校120人/班配置助教的条件,没有助教,作业批改量大,上机辅导忙不过来,上机考试监考教师人数不够。实践证明,每次实验课教师能够辅导到的学生人数不超过10人。
1.2 推广后的程序设计课程调查
课程结束后,7个班的7名教师和480名学生分别发放调查问卷,其中回收的有效反馈调查表为教师7份,学生186份。
1) 教师调查反馈。
(1)合并后教学时间紧,学生掌握所有内容有难度,存在部分学生学习积极性不高,如上课玩手机和到课率不高等情况。
(2)每班上机相关练习题、实验、综合实验均超过20题,有的班级达到50道题以上。上机题目兼具应用性和趣味性。
(3)导师辅导的上机训练题量大。
(4)基础类型的实验和练习题完成情况良好,综合性的实验和练习题只有部分学生能够完成。
2)学生调查反馈。
(1)有编程基础的学生在高中阶段学习过的编程语言种类有8种,66%的学生学习过C/C++,普遍表现出对目前教学状况非常满意,在教师指导下比高中学习得更深入,能够学习到很多原理性的东西;同时也表示希望能够给予更多的课后学习指导,提供工程训练机会。有编程基础的部分学生仍然感觉上课速度快。
(2)没有编程基础的学生认为目前教学难度合适的达73%, 较难/难的达22%,简单的达5%;普遍希望教师讲解得更细致,课堂上能够演示编程过程,再多增加上机辅导、上机作业和练习题,能够有项目实践机会。
1.3 推广后的期末考试情况与教师试卷分析总结
推广后的期末考试分数对比见表1。
表1的平均比例表明不及格率占比最高,接近1/3,90分以上占比最低,不到10%;同时表明不同班级差别比较大,教师的教学经验对于学习效果很重要,如教师1有多年C语言和C++语言教学经验,其余的教师只从事C语言或者C++语言教学,因此虽然使用同样的教材,但是由于教学经验、教学手段、学生不同,使得学生掌握情况不同。教师6强调大学阶段的学习自觉性,对学生管束比较少,教学方式比较灵活,最终考试效果最差,不及格率达到44.8%,说明学生学习自觉性差,教师的恰当约束对于当前环境下的学生学习非常有必要。
7位教师总结学生的失分点基本一致,主要集中在填空题的细节问题、读程序、写程序和判断题,恰好是编程训练没有过关的体现,这也和各位教师根据考试情况的反思总结一致。教师都反映需要加强编程练习、上机辅导、课上程序演示、程序设计思维训练,但又都觉得编程练习已经很多,上机量也很大,但训练效果却不明显。以冒泡排序为例,教师上课讲,中期考核,期末复习,但是该内容在期末考试中仍然是大的失分点且全年级都呈现这样的现象,这说明在学习过程中有的学生不认真做,有的学生做了但没有真正理解和掌握算法原理、编程基础、调试技术。
教师反思其中一个大的矛盾是理论教学与实践教学的学时需求矛盾:①不讲或者简单讲解基础理论及细节,学生只能依葫芦画瓢而无法举一反三,理论基础不稳固则技术不深入,有程序设计基础的学生则不能进行深入学习;②详细深入讲解需要花费大量时间;③无编程基础的学生对理论学习普遍不感兴趣且由于缺乏经验,对教师讲解的理论理解不够深入,教师在课堂上没有时间进行反复讲解,而学生不得不在应用过程中根据需要反复学习这些基础知识。
为解决这些矛盾,各个教师根据教学经验各有取舍,其中教师5与教师7是以实践为主与理论讲授为主比较突出的2个代表。教师5采用以上机实验为主、理论教授为辅的教学方式,设计上机相关题目超过50题且上机演示编程过程,编程辅导时间多,同时另外找了优秀学生一起对学生进行上机辅导,但期末笔试90分以上的占比9.2%,不及格率为27.7%。教师7以理论讲授为主,对于上机实验辅导严格按照培养方案的16学时,期末笔试考试成绩表明学生上机实验过少,理论掌握并不扎实,90分以上的占比为0.00%,不及格率仍然达到23.1%。以上情况说明“单脚大跨步”的教学方式效果欠佳,但两者结合教学又存在学时数不够的现实问题,此外还存在如下问题:学生认为最难的不是理论学习,而是将理论应用于实际;不少学生需要督促,自觉性差,而教师只有一人,怎么办?
2 改进措施
针对程序设计课程在全年级推广后出现的问题,程序设计教学团队教师积极思考、讨论并试图寻找能够解决现存问题的教学方法。戴尔的经验之塔[2]说明单纯的课堂教学平均只能够达到20%的效果,而具有