高校非计算机专业C与C++程序设计课程融合教学方法研究
2017-12-02马振婴
马振婴
摘 要 基于高校非计算机专业的实际教学需求,进行C/C++融合课程的探索和实践,精心设计教学和实验内容,并采用对比式、互动式、联想式和启发式教学模式,取得较好的教学效果。但在教学中仍需解决学生个体差异大等各种问题。
关键词 非计算机专业;C/C++融合课程;网上教学平台
中图分类号:G642.3 文献标识码:B
文章编号:1671-489X(2017)10-0116-02
1 引言
C和C++是高校两门重要的基础选修类程序设计课程,大部分理工科专业对两门课程都有要求。但目前的状况是基础和专业必修课的学分要求增加,导致基础选修课的学分缩减,各专业在制订课程计划时,都只能选择C和C++其中的一门课程。更由于教学方面的欠缺,相当一大部分学生(非计算机专业)并不知道C和C++之间的密切联系,在求职应聘或实习工作中走了不少弯路。
为了解决这个问题,笔者在教学内容和方式上进行研究和探索,尝试将两门课程进行融合教学。这样做既可以让学生获取“修一门,得两门”的益处,还可以让他们更加深刻地理解面向结构程序设计与面向对象程序设计的区别,为今后进一步进行程序设计的学习打下良好的基础。
当然,如何在有限的课时内进行有效的融合教学,并不是一件简单的事情,需要对教学和实验内容安排、教学方式和方法进行深入的研究和总结,以避免两门课程都学不好的尴尬局面。下面笔者将结合教学实践经验,对这两个方面进行深入探讨,以求抛砖引玉。
2 教学和实验内容的设计
教学内容设计 表1是单C、单C++和C/C++融合课程的理论课时设计(理论32学时)。在融合课程的教学安排中,不带下划线的是C和C++共有的部分,正常讲授即可;带下划线的是C++区别于C的部分,需要用到对比、联想和启发式等教学技巧。具体的教学方法将在下一节进行详细讨论。
第三章节(9~12课时)在学生掌握了函数的使用后,即可引入对象的概念。没有在课程刚开始就引入对象编程的原因是,学生还没有对变量与函数有深刻的认识,过早引入对象的概念,容易诱发学生的畏难情绪,不利于他们的消化和吸收。
单C++课程的后面部分内容,这类高级部分安排的课时数比较少。因为32课时的学时有限,同时因为非计算机专业学生的特点,对他们的要求比计算机专业的要相对降低一些,所以这类的高级部分和指针的部分可以做相应的弱化。
实验设计 C和C++的实验学时都是32学时,一共八个小实验,每个实验四学时,具体内容安排见表2。C/C++融合课程从第二个实验开始,就引入面向对象的编程。在每次实验中,要求学生用面向过程和面向对象两种方式来完成同一个题目。第四个实验(字符数组)中,要求用string.h系统库函数和string对象两种方式实现。最后一个实验中,引导学生探索使用C++对象代替C的结构数据类型的可行性。
3 教学方式
对比式教学 俄国教育家乌申斯基说过:“比较是一切理解和思维的基础,我们正是通过比较来了解世界上的一切。”由于C和C++的紧密联系性质,在C/C++融合课程中,笔者大量采用对比教学方法,如printf(scanf)和cin(cout)的對比,string.h库函数和string对象的对比,用两种方法(基于函数和基于对象)实现同一个实验设计的对比,等等。笔者还做了一些民意调查,了解学生更习惯和掌握哪一种编程方式,并让他们总结和分析两种方式的优缺点。
互动式教学 程序设计是一门需要和学生充分交流的课程。课堂内外采用Sakai(网上教学平台)和雨课堂(手机APP)作为教学辅助手段,以增加和学生的互动性。课前教师将课堂内容PPT推送给学生进行预习,课堂上在讲完一个知识点后,会推送相应的习题给学生,学生将答案返回给教师,教师即可了解学生对这个知识点的掌握程度。课后的习题推送和批阅也可以在雨课堂APP上进行。
联想式教学 为了增强课堂的生动性,把面向函数和面向对象两个概念和现实生活联系起来。面向函数的编程用“分而治之”的道理来阐述。面向对象的概念,则用生活中的人及事物进行联想。比如:人有身高、体重、外貌等各种属性,还有跑、跳、画画、唱歌、跳舞等各种动作和技能;对象封装的变量联想到人的属性,对象封装的函数联想到人的动作和技能等。
启发式教学 由于课时少,教学内容多,又是C/C++两门课程的融合教学,时间非常紧张。因此,针对非计算机专业学生的特点,对各章节里面那些实用性不强、偏难偏深的点进行删减。未讲的部分告诉能力强的学生课外学习。要求学生课前必须充分预习,在课堂上只学习重难点,利用雨课堂随时答疑,并积极开展一些启发式的探讨,要求学生花一定的时间在课外完成。比如:指针与内存地址的关系,就需要学生有一定的课外学习量才能更好地理解;实验三的扫雷游戏,教师给出边界判定方法,然后告诉学生说这个方法还有很多值得改进的地方,从而启发学生进行进一步的探索。
4 实践效果
在重庆大学非计算机专业对C/C++融合课程进行了教学实践。课程进行当中利用Sakai(网上教学平台)、雨课堂和QQ答疑群和学生进行了交流。大部分学生反映,对比学习和启发式学习对他们帮助很大。教学方式生动灵活,能够有效激发学生对程序设计学习的兴趣,学到的东西比单一的C或C++课程要多。
最终的考核体系是卷面60%+平时40%。从成绩来看,优良率20%,合格率65%,不及格率15%;和单C课程比较,差别不大。
5 存在问题
由于来自不同省份不同地区,学生自身的基础相差太大。有些学生小学就开始接触程序设计,非常快地接受和适应了对比和启发式教学;而有些学生(特别是边远地区),整门课上完了还没有弄清楚分支和循环,更别说后续部分了。如何解决学生间存在的巨大的个体差异带来的问题,值得继续深入思考和探索。另外,仍有部分学生感觉程序设计课程枯燥无味,实用性不强。
6 结论
从学生的意见反馈和最后考核的成绩来看,C/C++融合课程的教学设计方案合理,理论和实验内容安排恰当,教学方式和手段行之有效。今后将继续完善理论和实验设计,改进教学方法,以增强课堂的实用性和趣味性。
参考文献
[1]黄转群.在程序设计教学中引入能动模式,提高课堂教学有效性[J].中国信息技术教育,2009(24):91.
[2]刘炜.论如何应用对比教学法进行汇编语言教学[J].中国新通信,2013(4):64.endprint