基于DEIPE的C语言课程教学方案
2019-05-09孔维广魏媛媛邓在辉陈常念
孔维广,魏媛媛,李 帆,邓在辉,陈常念
(武汉纺织大学 数学与计算机学院,湖北 武汉 430074)
0 引 言
普通高校计算机专业的学生必须打下坚实的计算机程序设计基础,C语言是许多高校的第一门计算机程序设计课程。由于C语言本身的特点以及课时的限制,许多学生尤其是地方高校的学生在学习的过程中遇到较多的问题,学习效果不理想[1]。如何利用有限的资源因材施教,积极探索先进的教学方法来提高教学质量将是研究的重点。国内外产生了大量的研究成果,这些工作可分为政策型研究和教学型研究两种,其中教学型研究主要是从具体的计算机教学过程入手进行教学方案的创新[2]。文献[3]在C语言程序设计教学过程中对计算思维进行新的解构,以适用于目标教学;文献[4]将计算思维融入教学案例设计和启发式C语言语法教学;文献[5]主要研究CDIO模式在C语言教学模式上的应用,这些研究都要求坚实的程序设计基础知识。本文研究的重点是如何改进教学过程,让地方院校的学生高效地获得扎实的基础知识。
1 地方院校C语言教学中存在的问题
地方院校的部分学生高中阶段的数学物理基础参差不齐,逻辑和抽象思维能力不足,缺乏良好的学习习惯,但C语言程序设计教学组织未按零起点来安排,加上课时数有限,导致教学效果不理想。
从学生的角度来看,C语言程序设计学习过程中存在的主要问题有知识点理解和记忆困难,有限的课时内学习效率偏低,课后练习困难大,综合练习困难更大,同时日均代码量和最大程序代码行数均不足。导致出现这些问题的一部分原因是学生的自主学习能力不足,主要原因是教学方法未达到因材施教的效果。
2 DEIPE教学方案
2.1 环节设置
DEIPE 是 演 示(demonstration)、 讲 解(explanation)、 模 仿(imitation)、 独 立 实 践(practice)和强化(enhancement)这几个单词的缩写,将教学过程分成5个串行环节,如图1所示。
图1 DEIPE示意图
演示环节主要任务是让学生快速明白本次教学要研究的问题、问题解决方案和解决方案的效果。在C语言程序设计课程中,对研究问题的选择实际上就是案例的选择,而本次教学任务所要教授的主要知识点均蕴藏在此案例的解决方案中,因此该环节的要点是精选合适的案例。
在案例演示结束之后,学生应该已经明白本次学习要解决的问题以及问题解决方案所得到的正确结果,然后进入讲解环节,此环节包含本次课程要传递给学生的所有知识点以及分析在案例的解决方案中如何对知识点进行组合运用。
前两个环节以教师为主导,由教师控制案例的选择、知识点的讲解和分析,学生以接受和理解为主。模仿环节则将教学主角让给学生,让学生动手,完成案例的解决方案。C语言程序设计非常适合这种情景,在学生听懂解决某个问题的程序后,让其动手完成这个程序往往存在各种各样的障碍,模仿环节则是消除这种障碍的主战场。教师在模仿环节的角色转化为检查和监督,可以对整体教学效果和个体学习效果进行阶段性检查,并进行反馈,如可以发现和解决个体所遇到的个性化障碍,也可以发现和解决整体性的困难和障碍。模仿环节是本教学方法中最为关键的环节。
模仿环节成功结束表示学生已经基本掌握本次教学知识点,紧接而来的是独立实践环节,也就是给学生一个类似的任务,由学生当场独立解决。学生在前一环节模仿的基础上,加以变通即可独立完成新的任务,学生成为学习的主角,遇到问题既可以自行返回到上一环节寻求帮助,又可以找教师寻求帮助;教师在此环节的任务是指导,即在学生遇到变通运用障碍的关键点上指导其变通运用,若发现整体性的问题可返回到相应环节进行补充讲解。独立实践环节的要点是选择合适的任务并合理安排任务数量。
2.2 注意事项
独立实践环节的成功结束可以判定学生已掌握此次教学知识点。前4个环节在时间上应相对紧凑,以对抗人类的遗忘曲线。对于独立知识点的教学而言,一般应以前4个环节能够在一个课堂教学单位中完成作为教学安排的原则。
强化环节是独立实践环节的延伸,一般体现为课后作业,此环节在时间上覆盖两次教学活动的时间间隔,其难度与前面环节相比可以略有梯度,让学生在强化的过程中感受到自己的进步,从而最大程度地激发学习兴趣。
DEIPE教学方案的5个环节具有严格的前后逻辑关系,在后继环节遇到障碍可以回溯前导环节,这种回溯既可以在教师的指导下完成,又可以由学生自主完成。模仿、独立实践和强化3个环节中学生的参与程度逐渐提高,启发和研讨活动则在独立实践和强化两个环节中广泛存在。一个完整流程完成之后,学生往往能达到对当次知识点的充分掌握。
3 教学实践
武汉纺织大学将C语言程序设计分为I、II两个阶段,在第一学期开设48课时的C语言程序设计(Ⅰ),重点教授独立的知识点;在第二学期开设32课时的C语言程序设计(Ⅱ),重点通过案例教学提升综合编程能力。配套的支撑措施包括采取小班实验室教学的形式组织课堂教学;平时作业采用可重复刷分的在线练习系统;考试方式采取机考方式。
3.1 独立知识点教学
以while循环为例说明独立知识点的教学情况,教案设计流程如下。
1)演示。
问题选择为“使用格雷戈里公式求π的近似值”,演示while循环实现程序,并观察不同精度的计算结果。这一环节告诉学生今天要解决的问题是什么,因为学生很容易理解求π的近似值这个问题,但对计算机解决此问题的方法还一无所知,所以均表现得兴趣盎然。
2)讲解。
此环节要讲解主要的知识点,如循环的意义、循环流程图的表示方法以及while语句表示循环的技巧与语法,配合1~2个画流程图和写语句的练习来理解;然后进入演示程序,讲解演示程序的流程图和语句表示,让学生能读懂演示程序。
3)模仿。
此环节要求学生当场在限定的时间内完成演示程序的流程图和代码并运行出结果。此环节会遇到各种问题,因此也是排除问题的主战场,教师的重点是尽可能发现问题并当场解决问题,提前完成的学生还可以进行调整精度的试验。
4)独立实践。
此环节要求学生当场完成求阶乘程序和统计整数位数程序。此阶段学生会有主动思考,教师的主要任务是帮助学生跨越障碍。
5)强化。
此环节要求学生课后作业完成判断素数程序和多次猜数游戏程序,还有一些选做题。此阶段学生会有主动探究,教师的主要任务是检查作业情况,解决发现的问题并交流有创意的解决方案。检查作业的工作可以交给在线练习系统,通过系统对学生作业给出评分,作为平时成绩的依据。由于练习可以反复刷新,并且期末考试的编程题就是机考模式,能极大地提高学生练习的积极性。
3.2 综合案例教学
在综合编程能力教学阶段,采用基于链表的综合应用案例,如基于链表的学生信息管理系统,涵盖读写文件、记录的增删改查等功能,代码总量一般在300行以上,完善的代码可达到1 000行以上。案例被分解成5个模块,分别是增加记录、读写文件、删除记录、修改记录和查询记录,每个模块在一次教学单元中完成演示、讲解和模仿3个环节,完成以后再进行整个案例的独立实践,也就是完成一个新的基于链表的信息管理系统,并要求学生在课后自行进行反复练习与改进。第2学期的期末考试设置为在3小时内当场完成一个基于链表的信息管理系统。经过这个案例教学过程,学生的单个程序代码量迅速上升,多数学生的程序代码能达到500行以上,设计中大型程序的畏难心理消除,编程能力得到极大提升。
4 DEIPE教学方案实施效果
根据学习金字塔理论不同方式的学习效果[6],DEIPE教学方案在演示和讲解环节采用的基本属于被动学习方法,模仿环节属于金字塔的“实践”方式,独立实践环节和强化环节属于金字塔的“应用”学习方式,在学习金字塔中均属于两周后学习内容平均保存率比较高的方式,见表1。
表1 DEIPE教学环节与学习金字塔理论对照
DEIPE教学方案支持“做中学”和“实际演练”,符合流行的CDIO理念,并且能很好地支持项目驱动式教学[7]。
武汉纺织大学数计学院C语言程序设计课程组由5名教师组成,教师团队由课程组教师以及另外的10名教师组成,所有教师至少具备5年以上C语言教学经验,部分教师具备15年的C语言程序设计教学经验。从2015年至今,3年完整的以DEIPE教学方案为主要内容的教学改革取得了良好效果。通过广泛调查,师生的主观感受发生巨大的变化,主要变化见表2。
表2 DEIPE教学方案推行前后师生的主观感受对照
在考试成绩方面,以武汉纺织大学数计学院2014级全体学生(368人,课程教学改革前)和2017级全体学生(384人,课程教学改革第3年)的第一学期期末考试卷面分分布比例数据作一个对比,试卷题型和分值相同,都是选择20分,填空10分,判断10分,程序填空20分(2题),程序设计40分(4题),试卷难度相当。卷面得分分布比较情况见表3,可以看出,高分区人数比例增多,低分区人数比例减少。
表3 教学改革前后第一学期期末考试卷面分分布比例抽样对照
5 结 语
C语言程序设计课程实践性强,通过DEIPE教学方案能够显著提高学习效果以及学生的年度总代码量和最大单个程序代码量,有利于计算思维培养和创新能力培养,符合教学方法的发展趋势,符合新时期培养目标的要求[8],对类似院校的C语言程序设计课程教学具有较好的参考意义。