APP下载

应用型高校C++程序设计教学改革实践探究

2022-05-14

教育信息化论坛 2022年1期
关键词:面向对象程序设计竞赛

周 林 姚 韵 钟 伦

C++程序设计语言是在C 程序设计语言的基础上扩充了面向对象机制而形成的一种面向对象的程序设计语言,它在降低软件的复杂性,改善其重用性和可维护性,提高大型软件的开发效率等方面具有十分重要的意义。C++程序设计课程是软件工程、计算机科学与技术等专业的一门基础课程,旨在培养学生树立面向对象的编程思想,掌握有关面向对象的基本概念,学会面向对象程序设计的基本方法和技能,具备利用C++程序设计语言解决实际问题的能力,为后续课程的系统性学习和今后的应用开发打好基础。

一、C++程序设计课程教学存在的问题

第一,教学模式单一,教学效果一般。C++程序设计课程理论教学中,教师基本按传统的教学模式进行教学,通过板书和PPT 演示等方式讲授课程的理论知识,使得学生被动地接受知识[1]。在实践教学中,教师布置上机实训的内容,学生按照要求进行练习,巩固相关理论知识。但由于理论教学的进度与实验教学的进度不同步,学生在上实验课时往往不太记得前面所学的理论知识,以致实践效果不佳,影响后续内容的学习。

第二,教材内容传统,学习效果不佳。传统C++程序设计课程的教材以C++语言的语法知识介绍为主线,其中的概念繁多、规则复杂,学生常常只注重语法知识的学习,而忽略了程序设计能力的训练,因此,学习效果不佳,难以达到课程目标。

第三,考核方式单一,学习动力不足。C++程序设计课程目前的考核评价还是以期末笔试的方式来确定学生的成绩。这种单一的评价方式未融入行业或企业的人才需求,无法全面客观地反映学生的学习效果,难以将学生培养成符合行业或企业需求的程序设计人才。并且,由于课程考核中没有上机考试,或者部分学校即便有上机考试,其成绩所占比重也不大。这就容易让学生不重视日常学习中对实践能力的培养,导致学生编程能力不足,从而逐渐丧失学习兴趣,缺乏学习动力[2]。

二、C++程序设计课程改革策略

顺应时代发展,持续不断地进行教学改革,加大课程的改革力度,积极调整课程内容和教学方法等是抓好课程建设、提高教学质量的关键。

(一)课程内容改革

C++语言是在C 语言的基础上发展而来的,它们的基础语法知识非常相似,所以教师在讲授C++程序设计的时候,不需要特别强调语法,要尽早引入面向对象的有关概念,让学生接受面向对象的思想,理解面向对象的基本概念,学会程序设计的基本方法和技能,不断提高学生抽象思维。要将教学重点放在面向对象的程序设计思想上。教学内容的整体布局如表1所示。

表1 C++程序设计教学内容

(二)课程设计

学习C++ 程序设计时,一是学习C++ 语言本身,二是学习程序设计。无论是作为工具的语言,还是程序设计,其共同特点是应用性强。因此,在对C++程序设计课程进行设计的时候,要注重“行业或市场为导向、能力为本位”的人才培养模式,以面向对象程序设计为重点[3]。

一是项目导向,任务驱动。设计一个涵盖各个章节知识的项目,比如可以将人力资源管理系统细分为若干个功能模块,作为学习的案例。在案例中引出问题,通过解决问题来学习和掌握相关知识点。采用任务驱动、案例教学法,可以激发学生对程序设计的学习兴趣,提高学生使用C++语言解决实际生活中问题的能力。

二是实施学科竞赛驱动机制。学校可以定期举办一些相关的学科竞赛,比如程序设计大赛、计算机作品赛等,对一些有潜能的、表现优异的学生进行表彰,并鼓励他们加入学院的创新协会,对其进行重点培养。然后,在创新协会中选拔出一些在编程方面拔尖的学生,代表学校参加省级比赛,甚至国家级比赛。以各种技能竞赛拓展教学平台,通过以赛促教、以赛促学、赛练结合的方式,增强学生的创新意识,提高学生的实践能力。

(三)改革教学方法

一是讲、练结合式教学。考虑到学生在课堂上能集中注意力听课的时间是有限的,所以教师的讲授时间可以根据班上学生的听课情况做出调整,不一定要整堂课都讲授理论知识。教师要一边讲解一边观察,发现有大部分学生的注意力开始下降时应暂停讲授,可以布置一个与前面讲授的知识点相关的习题让学生进行练习,并要求学生在限定的时间内完成,将学生在课堂上的答题情况纳入平时成绩的考核之中。这种教学方式通过教学状态的转换,不仅可以让学生再次集中注意力,还可以让学生及时运用所学知识解决问题,对所学内容进行巩固,激发他们的学习兴趣,调动其主观能动性[4]。

二是启发式教学。课堂的主体是学生,教师在课堂上讲授的知识,只有学生接收到并真正理解了才有意义,因此,要让学生参与教学,调动他们的学习积极性。C++程序设计课程的每个知识点都有其提出的应用背景,在实际教学过程中,教师可以通过递进的方式开展启发式教学。比如,在介绍类的定义的时候,可以先回顾声明一个结构体的一般形式,并设计一个小程序去测试,然后在结构体声明的基础上,把struct 用class 代替,其他地方不变,则结构体的声明就变成了类的声明。此时,再运行刚刚的小程序,会发现出错了。报错信息cannot access private member declared in class 的展示,说明类与结构体的区别是缺省的访问权限不同。结构体中定义的成员缺省的访问权限为public,类缺省的访问权限为private。由此引出类中的成员函数。如果类中的数据成员完全无法访问,类的存在就没什么意义了,那要怎样访问呢?答案是在类中定义访问相应数据成员的函数成员,访问权限说明为public。这样,就可以通过调用公有成员函数实现对数据成员的访问。最后,给出类定义的一般形式,并进行完整性说明。这种递进的过程将类的定义形式顺理成章地展示在学生面前,使得学生理解起来会更加方便,并且留下比较深刻的印象。

三是现场编写代码。现场编写代码的教学方法是指,在课堂上利用投影仪、多媒体、计算机等工具,结合开发环境,一步一步地进行程序开发,一边敲代码一边进行相关知识的讲解,将程序的编辑、编译、调试、运行等环节都展示给学生,使学生可以观摩到每一个案例程序的全部开发过程,从而更快上手操作,减少初学者对编程的畏惧感。现场编写代码的教学方法会使整个课堂更有生气,并且使课堂的互动性和趣味性明显增强,激发学生的学习热情和主动性。

四是引入学科竞赛,以赛促学。在教学过程中,引入“蓝桥杯”等专业学科竞赛的试题,以赛促教、以赛促学,提高学生创新实践能力。在课程教学的中后期,当学生掌握了一定的基础知识和程序设计方法之后,鼓励学生参加“蓝桥杯”等专业学科竞赛。首先,教师可以为学生介绍各种专业竞赛的比赛规则、参赛流程、注意事项等,让学生对各类专业学科竞赛有一定的认识,激发学生的兴趣,引导他们关注竞赛,分析真题,学习竞赛中涉及的相关内容和知识。其次,教师可以指导学生参加学校的专业学科选拔赛,引导学生结合比赛要求深入学习计算机相关的算法、数据结构、程序设计方法等,指导学生选择合适的题目。“以赛促教,以赛促学,学赛融合”的方法让学生能够更加系统地学习计算机相关知识,为其将来就业打好基础。实践证明,这种教学方式能使学生参加学科竞赛的积极性大大提高,学习热情不断上升,学科竞赛成绩也有显著提高。许多学生在蓝桥杯、大学生计算机设计大赛等专业竞赛中取得了良好的成绩。

五是建立网上学习平台,培养学生自主学习的能力。学生自主学习能力的培养对其以后的工作和学习大有裨益。由于自主学习能力是创新能力培养的基础,培养学生自学能力是高校教育教学中的一个重要任务,尤其是应用型高校更应加强学生自主学习能力的培养。自主学习能够对课堂学习的知识进行有效补充和延伸。自主学习能力培养的关键除了引导学生加强课外学习外,还要为学生的课外学习建立一个良好的网络学习平台。利用网络平台,教师可以充分参与、管理学生的学习过程,掌握学生的学习动态,从而及时为学生答疑解惑。同时,建立网上学习资源,上传课程大纲、教学日历、网络课件、教学视频、参考资料、模拟题库等学习资料,为学生的课前预习、课后复习提供丰富的资源和个性化的辅助。在C++程序设计教学中也可以利用网络平台、多媒体、计算机等手段辅助教学,提高教学趣味性,调动学生学习积极性。在教师的引导下,鼓励学生利用网络教学平台上提供的各种教学资源与教师互动,加强师生间的交流,鼓励学生参与教学和科研项目,共同探讨和学习,积极讨论、发言,提出问题并最终解决问题。这样能够充分发挥学生学习的主观能动性,提升学习效率。通过加强网络平台的应用,改变传统以教为主的教学方式,将课堂教学从以教师为中心转变为以学生为中心,促使学生在掌握基础知识的同时,发挥学生的自主学习能力和创造能力,达成应用型高校培养适应新时代发展需要的复合型、应用型人才的目标。

(四)优化考核方式

传统的试卷笔试考核方式着重考核学生对课程基本知识点和语法的掌握情况,但是这些成绩不能完全体现出学生的程序设计能力。因此,可以适当增加实践考核的比重,着重考查学生的综合素质。这种考核方式既考查了学生对基本知识的掌握情况,又考查了学生的编程能力[5]。比如,对于C++程序设计课程设计来说,可以先让学生把完成的程序及相关文档提交到教师邮箱或指定的地方,由教师逐一检查交过来的程序,让程序验收合格的学生到讲台上进行项目程序的演示,并通过答辩的形式进一步了解学生的实际完成情况和对课程相关知识的掌握程度。

综上所述,本文从课程教学内容、课程设计、课程教学方法以及考核方式四个方面对C++程序设计课程的教学改革进行了探索,并在软件工程、计算机科学与技术等专业中对该课程的教学改革手段加以实践,效果良好。为了进一步提高该课程的教学质量,提升计算机相关专业学生学习运用C++语言进行编程的能力,我们将继续对该课程教学的各个环节进行探索和改革,以期获得更大的进步。

猜你喜欢

面向对象程序设计竞赛
2020丝绸之路数学竞赛
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
面向对象方法在水蓄冷PLC编程中应用分析
我看竞赛
创新思维竞赛(3)
高职高专院校C语言程序设计教学改革探索
峰丛洼地农作物面向对象信息提取规则集
基于面向对象的车辆管理软件的研制与开发
PLC梯形图程序设计技巧及应用