C++程序设计基础探究式教学模式研究与实践
2019-09-26徐红云
徐红云,高 英,曾 健
(华南理工大学 计算机科学与工程学院,广东 广州 510006)
0 引言
为了培养学生良好的计算机素养和计算思维能力,国内大部分高校都为大学一年级学生开设了一组计算机公共基础课程。很多大学一年级学生没有计算机程序设计语言的基础,也没有设计程序的思维,怎样使他们比较高效地掌握计算机程序的工作方式,学习程序设计的基本知识,是广大教育工作者长期以来研究和探索的问题。文献[1]介绍了基于雨课堂和OJ系统的程序设计类课程教学方法,提出在课前、课中和课后采用雨课堂、OJ系统辅助教学的途径;文献[2]探讨了基于竞教结合的高级语言程序设计实践教学改革,提出了基于OJ系统部署实验的教学改革方案;文献[3]介绍了基于网络课程的C++程序设计语言混合式教学改革,提出课前安排学生观看课程视频、课中主要进行答疑讨论、课后布置OJ测试的混合式教学改革方案。
上述改革方案对提高课程的教学质量和教学效果具有积极意义。探究式教学,可以引导课堂从注重“教师的教”向注重“学生的学”转变,进一步提高课程的教学质量,提高学生的创新、创造能力。为此,笔者研究设计了适应于程序设计语言课程的探究式教学模式,并在2018级非计算机专业的部分创新班进行了教学实践。
1 教学模式设计及实践
探究式教学,需要在学生掌握一定基础知识的前提下进行。对于程序设计语言这种大部分学生不具备相关基础的课程,需要在课前或课中,学生能掌握一定的基础知识后,才能开展探讨和研究。为此,本课程采用如图1所示的教学模式。图1中,参与教学的对象包括学生、主讲教师和助教。学生是教学对象,是获取知识的主体;教师是授课的主体,主要工作是制订教学大纲、考试大纲,建设教学资源,组织探究式课堂教学等;助教协助主讲教师批阅作业、指导实验、答疑等,对于没有助教的课程,助教的工作亦可由主讲教师承担。
图1 课程教学模式
1.1 网络课程资源
网络课程资源可以是MOOC资源,也可以是其他可供学生随时在线访问的与教学内容相关的课程资源。本课程采用的教材是由华南理工大学计算机教学团队编写、电子工业出版社出版的《C++程序设计基础》,2000年出版第1版,2016年出版了最新的第5版。教材主要内容包括基本数据与表达式、程序控制结构、函数、数组、集合与结构、类与对象、运算符重载、继承、虚函数与多态性、模板、输入输出流等章节,基于教材还有国家精品资源共享课和广东省精品资源共享课建设。本课程教学使用教材前5章的内容和资源,即面向过程的部分教学资源。课程地址为http://www.icourses.cn/sCourse/course_5847.html。
学生课前预习是开展C++程序设计语言探究式教学的基础,而课后复习是巩固课程教学效果的关键,这两个环节都可以借助网络课程资源完成。
1.2 雨课堂
雨课堂[3]是清华大学学堂在线推出的智慧教学工具,本课程可借助雨课堂的创建班级功能创建教学班级,设置协同教师(即课程助教),并管理班级成员;每次课程结束都会布置下次课拟学习的内容供学生预习,并在上课前24小时内再通过雨课堂的公告栏目进行提醒;课中学生通过扫码加入班级,学生加入班级后即可在移动端浏览教师的授课课件,参与课程小测和单元测试。为了提高学生的课堂学习注意力和活跃课堂气氛,可使用雨课堂的随机点名功能,实现随机选取学生回答课堂提问。为了方便课中分组讨论,借助雨课堂的分组功能,将教学班级的55人分为18个小组,前17组每组3人,第18组4人,探究式教学的开展主要在课内完成。学生完成了课前预习后,在课堂上,主讲教师基于雨课堂,针对关键知识点进行讲解和答疑;然后,开展分组探究和研讨。课堂探究的主题/内容则由主讲教师提前准备,并嵌入课堂授课PPT的适当位置。
例如第一章的研讨题目之一是对基于条件表达式排序输出2个数的算法进行拓展,讨论设计排序输出3个数的算法,然后编程实现。
在课堂上,根据雨课堂分组进行探究,时间约20分钟,然后随机选取几个组轮流上讲台汇报研讨结果、解题思路以及程序源代码。表1列出了第2、7、8组学生设计的算法和编写的源代码。
从表1可见,3组学生设计的算法和程序都可以实现3个数排序输出,但第2组设计的算法很明显存在可扩展性的问题,如果扩展到4个及以上的数排序,用该算法实现就会变得比较复杂。第7组的算法不改变输出顺序,而是改变变量的值。第8组的算法改变变量的输出顺序。后两组的算法都可以扩展成多个数排序。通过此研讨题使学生明白解决一个问题可能有多种算法。另外,也可以在研讨的过程中引入并探讨算法可扩展性、算法的时空复杂度,从而增强学生学习的主动性,获得较好的教学效果。
表1 探究范例
1.3 OJ评测系统
采用OJ评测的实验和课后作业提交是巩固探究式教学效果的关键环节。OJ是在线评测即Online Judge的简称。OJ评测系统可以接受程序源码,并自动检测程序正确与否。国内很多高校都建有在线评测系统,如浙江大学、杭州电子科技大学等。华南理工大学也建设了在线评测系统,具体网址是http://www.scut.edu.cn/oj/。学生通过注册可成为OJ系统的用户,登录OJ系统即可刷题或完成任课教师布置的作业;教师可以通过开课,在OJ系统上向教学班级的学生布置课后作业或部署实验。本课程共部署了8次课内实验,每次时长为90 min,题量为2道题。另外,以章为单位部署课后OJ作业,每章一次共5次,课后作业的题量则根据各章教学内容的难易、多寡,设为2~7道题不等。从提交的情况来看,大部分学生能按时完成课堂实验。少部分不能在课堂上按时提交的学生也能在课后延期的截止期限里完成提交。课后作业的提交周期一般在2周左右,学生基本上都能按时完成。
2 效果分析
根据期末考试成绩分布情况可以考查上述教学模式的效果。通过两组数据进行对比分析:第一组是相同专业连续两届学生的期末考试成绩分布对比,2017级创新班的教学使用了网络课程资源,但没有用雨课堂和OJ评测系统,2018级创新班采用本文上述教学模式展开教学;第二组是不同专业同届学生的期末考试成绩分布对比,对比组是采用传统教学方法的另一个由创新班学生组成的教学班。可以通过调查问卷了解和分析学生对上述教学模式的认可情况。
2.1 相同专业连续两届学生成绩对比
2017级创新班与2018级创新班的期末考试成绩分布情况见图2。从图2可见,采用探究式教学模式展开教学的期末考试成绩优良率明显提高,60分以下的人数明显减少。另外,2017级创新班的期末考试平均成绩为76.24分,2018级创新班的期末考试成绩为81.57分,相差5分多。
2.2 同届探究式教学班与非探究式教学班成绩对比
2018级采用探究式模式教学的教改班和采用传统教学模式的非教改班的期末考试成绩分布对比见图3。从图3可见,教改班的期末考试成绩70分以上各成绩段的百分比都比非教改班高,而70分以下及不及格的人数比例都比非教改班低。
图2 相同专业连续两届学生期末考试成绩对比
图3 不同专业同届学生期末考试成绩对比
2.3 问卷调查情况
我们在问卷星上发布了调查问卷,主要调查学生的程序设计语言基础、学生对编程语言的重视情况、对本课程的认可程度、雨课堂以及OJ评测系统对学习本课程的帮助度等。从回收的调查问卷数据来看:77.42%的学生之前没有编程基础;83.8%的学生愿意学习编程语言;对本课程总体印象良好以上的学生比例为77.41%,中等印象的比例为22.58%;认为本课程教学内容提供信息量较大的学生比例达96.77%;87%的学生认为采用智慧教学工具雨课堂对学习帮助较大,认为帮助一般的学生比例为12.9%;93%的学生认为雨课堂中插入的测试题(每个知识点一个单选题,每章一次章测验10道题)题量比较合适;100%的学生认为雨课堂中插入的测试题难度比较合适;95%以上的学生都能较好地参与课堂研讨,并从中受益;90%以上的学生认为采用OJ评测系统对学好本课程有帮助。从以上数据可以看出,学生总体上是认可探究式教学模式的。
3 主要问题及建议
1)雨课堂平台问题。
学生在课中需扫码登陆雨课堂进入教学班级并参加教学活动,包括观看教学PPT、参加课堂小测和单元测验。但由于雨课堂平台存在延时,学生和教师同步需要一定的时间,从而影响到学生的学习体验,一定程度上影响了教学效率。对于该问题,可以从改善上网环境和改善雨课堂平台服务器的性能两方面解决。
2)网络和终端设备问题。
登录雨课堂需要良好的网络环境支持。由于课堂环境没有可用Wifi,学生需要使用手机的数据流量进行学习,部分学生的手机套餐并不包含充足的数据流量,参加雨课堂的学习需要额外付费购买流量,这对部分经济条件困难的学生是一个负担。另外,一些学生的手机性能欠佳,经常卡顿,也影响了他们的学习效率。建议学校在课室部署校园网环境,更好地满足现代教学改革的需求。另外,对于部分经济困难的学生,建议学校在学习设备上进行精准帮扶。
3)教学对象零基础的问题。
通过调查发现,绝大部分学生都没有程序设计语言基础,因此对于零基础的课程是否进行全方位的探究式教学还需要商榷。本课程是在学生提前观看视频、教师在课堂上进行重难点讲解的基础上,再引入问题,进行分组探究和研讨。本课程的教学模式对于其他类似的课程具有一定的参考价值。
4)课程教学时数和教学班级规模的限制。
由于计算机基础课的教学时数普遍较少,教学班级规模偏大,而一次研讨教学的完成,需要学生分组讨论、确定算法、书写程序、汇报讲解,所有的环节都在课内完成的话,可能需要占用1~2节课的时间。本课程的做法是提前布置部分较复杂的研讨题,要求学生在课前完成前3个环节,在课内进行汇报讲解,并且只讲解与他人不同的算法和解决方案,这样不仅可以大大缩短所需的课内时间,也在一定程度上达到了探究式教学的效果。
4 结语
通过研究C++程序设计语言课程的特点,结合拥有的资源以及具备的教学条件,笔者设计了C++程序设计基础课程的探究式教学模式,并在2018级非计算机专业创新班部分学生中进行了试点。从期末考试成绩对比情况来看,采用文中模式进行教学取得了较好的教学效果;从学生问卷调查结果来看,该模式获得了学生的认可。在教学过程中也发现了一些问题,雨课堂平台性能、上网网速、学生拥有的终端设备、学生具备的基础知识、课程教学时数和教学班级的规模等因素都将影响课程的教学质量和教学效率。在参照现有教学模式的基础上,教育工作者需要根据实际情况研究制订相应课程的教学方法,并进行贯彻落实,才是切实提高课程教学质量的有效途径。