混合驱动模式在C语言程序设计课程教学中的实践
2018-04-25邢旭峰谢仕义彭小红陈有英
邢旭峰,谢仕义,彭小红,陈有英
(广东海洋大学数学与计算机学院,广东湛江 524088)
2016年5月,国务院办公厅印发了《关于建设大众创业万众创新示范基地的实施意见》,指出:“把创业精神培育和创业素质教育纳入国民教育体系,实现全社会创业教育和培训制度化、体系化。加快完善创业课程设置,加强创业实训体系建设”[1]。2017年9月,中共中央办公厅、国务院办公厅印发的《关于深化教育体制机制改革的意见》指出,“不同类型的高等学校要探索适应自身特点的培养模式,着重培养适应社会需要的创新型、复合型、应用型人才。把创新创业教育贯穿人才培养全过程,建立健全学科专业动态调整机制,完善课程体系,加强教材建设和实训基地建设,完善学分制,实施灵活的学习制度,鼓励教师创新教学方法。”[2]。相关政策的出台,对本科教学模式的改革提出了新的要求,顺应新要求的教学模式改革研究势在必行。
C语言程序设计课程是普通高校计算机教育的专业基础课程,对其掌握的程度直接影响到学生对后续课程的学习和今后的编程思维。C语言具有自身数据类型和表达形式丰富多样、程序设计灵活的特点,加上各高校学生生源不同,总体文化基础有较大差异,因而此门课成为学生公认的比较难学的课程之一[3]。如何提高C语言程序设计课程的教学效果,增强学生学习此门课程的自信心,一直是研究的热点。
1 C语言程序设计课程教学现状
1.1 C语言程序设计课程教学在计算机专业教学体系中的作用
C语言是由美国贝尔实验室开发的,该语言具有以下优点:丰富的运算符和数据类型,便于实现各类复杂的数据结构;可直接访问内存的物理地址,进行“位(bit)”运算;可移植性好,使用灵活方便。目前许多本科院校计算机相关专业或非计算机专业普遍开设此门课程[4]。
对于计算机相关专业来说,C语言程序设计课程是数据结构、操作系统、计算机网络、面向对象程序设计、数据库原理及应用等其他计算机专业课的基础。通过该门课程的学习,学生可以利用计算机语言表达自己的思维,运用计算机语言求解实际问题,为今后利用计算机技术实现本专业的程序开发和创新奠定坚实的基础[5]。显然,C语言程序设计课程在计算机专业教学中具有重要作用。
1.2 C语言程序设计课程教学过程中面临的问题
C语言程序设计的教学内容包括运算符、变量、数据类型、数组、程序控制结构、函数、结构体、指针、预处理命令和文件等,存在理论性强、内容量大、较为抽象的特点,这使得很多高校在教学过程中普遍面临课程内容多课时少的问题。现阶段,关于C语言程序设计课程的学时数,各高校一般都安排为48~64个学时,理论学时和上机学时各为24~32小时。在有限的理论学时内,要把所有的知识都讲透难度相当大。另外由于高校扩招,学生规模增加,多为合班上课,上课人数可达70~110人;再者,该课程是计算机本科专业后续课程的基础,一般安排在大学一年级的第一个学期,生源基础参差不齐,这也使确保大部分学生在有限的课时内掌握这门语言的难度相当大[6]。
1.3 C语言程序设计课程教学改革现状
由于C语言程序设计课程的重要性及教学过程中存在诸多问题,承担这门课程的高校教师都致力于面向本校学生特点的教学模式改革研究与实践,旨在把这门课传授好,培养学生的编程能力和创新能力。
检索中国知网2002-2017年期间国内关于C语言程序设计课程的教学论文,共检出相关论文3183篇。图1给出了此期间该门课程在教学模式、实践方法、教学手段等方面每年发表的教改论文数量。2006年之前关于C语言程序设计课程的教改论文维持在100篇以下,此后逐年增加,2005-2009年期间增幅最高,后处于相对平稳的状态,表明C语言程序设计课程教学改革已成为相关教育工作者关心的热点之一。
图1 2002-2017年C语言程序设计课程教改论文发表数量分布图
C语言程序设计课程教学改革方法主要有翻转课堂、微课教学、案例式教学、SPOC模式、CDIO工程教育模式、BOPPPS有效教学模型、慕课(MOOC)等,表1给出了这些教学方法的主要特点。
如前所述,各高校普遍将C语言程序设计课程安排在大学一年级的第一学期,一些教学方法(表1)对刚从高中进入大学校门的学生来说还需要一个较长的适应过程。因此,探索出适用于一年级新生的C语言程序设计教学模式非常必要。
表1 C语言程序设计课程教学主要教学模式一览表
2 混合模式驱动下的C语言程序设计课程教学实践
2.1 问题驱动模式
问题驱动模式(Problem-Based Learning,PBL)教学方法,主要理论依据是人本主义的教学理念,以学生为主体,让学生围绕提出的问题进行讨论,寻求解决方案,有助于提高学生学习的主动性和在教学过程中的参与度。采用这种教学方法要求教师必须具备较强的课堂掌控能力和引导能力。
譬如,在讲解C语言程序设计课程的while循环结构知识点时,可给出以下问题,
#include
int main()
{
int y=10;while(y--);
printf("y=%d ",y);
return 0;
}
提供四个选项,分别是:(A)y=0;(B)y=-1;(C)y=1;(D)while构成无限循环。引导学生根据所学知识点,选择这个程序运行的结果应该是哪个答案。首先通过采用增加平时分的激励机制调动学生回答和讨论问题的积极性;其次要求回答问题的学生阐述选择这个答案的理由,然后让有其它不同意见的学生说出自己的选项并阐述理由。对于这个问题,初学者很容易选择A、C或D这3个错误答案。此时任课教师不要急于把标准答案告诉学生,而要将例题程序代码在系统中运行输出,最后再给学生分析为什么是这样的结果。
问题驱动式教学一方面加强了学生对以前章节学习内容的(自增和自减运算符)理解,另一方面使得学生对while循环语句的结构有了清晰的认识。采用问题驱动式教学,可获得以下教育效果:有效地暴露出学生学习过程中误区的认知,从而对学习难点和容易混淆的概念有更清晰的认识;各抒己见的讨论方式,增加了学生学习的自信心和成就感。
2.2 应用驱动模式
C语言程序设计作为基础课程,目的是使学生建立起程序设计的概念,在较短时间内初步学会用C语言编写程序,因此讲授概念和语法多一些,程序演示范例较为简单。程序运行的结果多是在DOS命令提示符窗口下显示几个数字或一串字符,由此学生会感觉较为单调、枯燥。再者,由于课程体系的安排所需,计算机相关专业学生对硬件的接触比电子类专业的学生要晚,在“双创”竞赛中往往也只能是大二以后才能拿得出作品,且多是软件类参赛作品而不是实物,这会加深学生认为这门课没有什么实际应用价值的想法。
针对上述问题,采用应用驱动教学模式引导学生把所学的知识加以应用,可以激发学生的学习兴趣。Arduino是一种以AVR单片机为核心的单片机控制板,初学者不需要太多的单片机基础就可以快速上手;而且Arduino语法与C语言在变量类型、语法、逻辑判断等方面都是一样的,C程序稍加修改就可以在Arduino开发板上运行[15]。为此,教师可在课堂上引入Arduino开发板来辅助教学。
以讲授C语言中的for语句实现循环为例。教材中例题的演示效果是在DOS命令窗口输出一行字符串或一个简单的图型,而用Arduino开发板辅助教学。将一个LED灯和一个100Ω电阻等硬件接到Arduino开发板中,然后将下列程序代码录入到开发板就可以实现LED的循环间歇闪烁。学生们看到简单的C程序写入到硬件中就能指挥硬件工作,就不会再觉得这门课学完没有用了。
int ledPin=10;
void etup()
{pinMode(ledPin,OUTPUT);}
void loop()
{for(int x=0;x<3;x++)
{
digitalWrite(ledPin,HIGH);
delay(150);
digitalWrite(ledPin,HIGH);
delay(100);
}
}
Arduino开发板还有很多外围功能模块,如电机驱动、无线通讯、音乐播放、环境感知等,这些功能模块都能很容易连到Arduino开发板上。学生只要将C语言编写的程序移植到Arduino开发板上,就可以实现所需的功能。通过这种实际应用代码的编写,让学生学以致用,弥补课堂演示枯燥单调的不足。应用驱动教学模式可以激发学生的创新能力,为其今后的专业学习打下坚实的基础。
3 结语
在C语言程序设计课程教学中,引入问题驱动和应用驱动混合模式,可更加注重学生动手能力和创新能力的培养,使学生在学习过程中能发挥创新精神,真正把所学的程序设计知识融会贯通,成为社会所需要的应用型人才。对于比较难的知识点,学生可利用Arduino实验开发板辅助完成。应用驱动教学模式能够有效地激发学生的学习兴趣和创作灵感,加深对专业知识的认知。
[参考文献]
[1]中华人民共和国中央人民政府.国务院办公厅印发《关于建设大众创业万众创新示范基地的实施意见》[EB/OL].(2016-05-12)[2017-11-13].http://www.gov.cn/xinwen/2016-05/12/content_5072748.htm.
[2]中华人民共和国中央人民政府.中共中央办公厅 国务院办公厅印发《关于深化教育体制机制改革的意见》[EB/OL].(2017-09-24)[2017-11-24].http://www.gov.cn/xinwen/2017-09/24/content_5227267.htm.
[3]朱利民,侯志勇.关于高校《C语言程序设计》课程改革的探讨[J].甘肃科技,2016(8):51-52.
[4]徐英慧,周淑一.《C语言程序设计》课程“三位一体式”教学模式研究[J].软件导刊,2017(4):221-223.
[5]曾庆尚,高慧,梁振军,等.C语言程序设计的实践教学改革与探索[J].大学教育,2014(12):116-117.
[6]陈娟.从错误中学习:计算机程序设计课程改革实践[J].计算机教育,2017(12):54-58.
[7]方勇.基于翻转课堂的C语言程序设计课程教学改革初探[J].电脑知识与技术,2017(15):92-93.
[8]肖巍,别梅.大学翻转课堂教学模式实践探索[J].长春师范大学学报,2017(2):112-114.
[9]胡秋霞,田杰,王娟勤,等.基于微课的“C语言程序设计”课程教学改革初探[J].教育现代化,2017(10):35-36.
[10]韦霞.案例教学法在C语言程序设计课程教学中的应用——以梧州职业学院为例[J].广西教育,2017(31):145-146.
[11]范莉莉,刘涛.SPOC模式下探索程序设计类课程省略学研究——以C语言程序设计为例[J].皖西学院学报,2017(2):25-28.
[12]于延,周国辉,李红宇,等.CDIO模式下C语言程序设计实践教学改革[J].计算机教育,2016(2):122-126.
[13]刘斌,李书琴,韩宏.基于BOPPPS模型的C语言课程教学设计[J].教育教学论谈,2017(44):248-250.
[14]王春晖,刘志国,俞宗佐,等.基于MOOC平台的混合式教学模式探索——以C语言程序设计公共课为例[J].内蒙古师范大学学报:教育科学版,2015(7):144-146.
[15]武玉升.基于Arduino的高职单片机课程教学改革[J].交通职业教育,2014(1):21-23.