面向工程应用的C++程序设计实践教学探索

2016-07-08 09:19张晓民博南阳理工学院软件学院河南南阳473004
中国现代教育装备 2016年7期
关键词:工程实践程序设计实践教学

张晓民 张 枫 李 博南阳理工学院软件学院 河南南阳 473004



面向工程应用的C++程序设计实践教学探索

张晓民 张 枫 李 博
南阳理工学院软件学院 河南南阳 473004

摘 要:C++程序设计是应用型本科院校计算机相关专业一门非常重要的专业基础课,该课程的学习效果直接影响后续专业课的学习以及相应的职业能力培养。目前C++程序设计课程中的实验多为验证型和习题型,缺乏工程性和趣味性,难以激发学生兴趣。为此设计了以工程应用为主导的基础和工程应用实验,采用课堂和课外相结合、教师验收和学生答辩相结合等教学、考核方式,并结合应用类型的课程设计,让学生在掌握知识的同时,运用所学知识和方法解决实际问题。实践表明,这种方法不仅提高了学生运用C++语言进行程序设计的能力,而且加强了学生的工程实践,取得了良好的教学效果。

关键词:C++程序设计;工程实践;实践教学;教学改革

C++程序设计是计算机相关专业一门核心专业基础课程,具有很强的实践性,其主要目的是培养学生运用C++面向对象的技术和方法进行基本程序设计的能力,是后续面向对象软件分析、设计等专业课程的重要基础[1,2]。绝大多数高等院校在进行面向对象程序设计教学时,采用了C++程序语言,不仅因为C++具有历史长久、应用广泛、支持所有主流系统,而且C++对于面向对象技术的实现具有完整和严密的技术体系[2]。正是这一完整和严密的体系使得学生学习起来倍感困难,对于各类概念和方法,也难以掌握。

鉴于此,C++程序设计的实践教学多以知识诠释型、技术验证型、习题型的独立小实验为主,最后辅以综合性的实验项目,目的在于让学生更好地理解基本概念和语法知识,但学生的语言运用能力却未能自始至终地得到体现[3],造成很多学生只会看程序,却不会写程序的窘境。笔者通过分析《C++程序设计》实践教学中存在的这些问题,提出了一种面向项目应用的实践教学模式,充分体现了课程的实践性,而且对实践教学的组织和考核也进行了大胆的探索和改革,形成了较为完整的实践教学体系。

1 实践教学体系设计

结合C++程序设计课程特点,以工程应用为主线,采用循序渐进的方式,对实践教学的内容进行了全新的设计,摒除了验证型和知识型的实验。整个实践教学体系以工程项目为主,突出实验的工程性与实践性,将工程实践、团队合作贯穿于整个教学过程[4]。其好处是不仅有效训练和提高学生的工程能力和设计能力,而且充分调动了学生的积极性和参与度。

1.1 选择专业开发平台

对计算机及相关专业来说,C++程序设计无疑是最重要的一门专业基础课程,学生在学会基本程序设计方法的同时,也要能运用C++编程知识解决一些实际编程问题[5]。不仅如此,学生还应该对计算机体系的操作和体会有一个更为深刻的认识。鉴于此,试图从以下几个方面实践教学体系进行构建。

由于Windows操作系统的易用性和界面的直观性,使得Windows大行其道,深入人们日常工作和生活的方方面面[6],高等学校的计算机教育也不例外。针对C++程序设计这门课程,绝大多数高校都是采用Windows平台下的Visual C++编译器作为开发平台。

考虑到学生专业为计算机类,因此对开发平台提出了更高的要求,经过权衡,确定采用更为专业的Linux操作系统,开发工具采用Code::Blocks或者vim和g++工具,其优势表现在:开源项目,不需要付费;学生尽早接触更为专业的Linux平台。

1.2 构建基于项目的实验内容

根据理论教学进度,采用循序渐进、逐步推进的方式,构建一个不同层次、阶梯式的项目群。上一阶段工程项目是在下一阶段工程项目的基础上,并且融入新的知识单元,形成一个由简单到复杂、由模拟到真实的环环相扣的工程化培养过程。

1.2.1 实验项目总体结构

在C++程序设计知识模块结构中,在重点知识单元设计专门的工程训练项目,并贯穿各个教学环节。随着时间推移,项目中所涉及的C++内容逐步增多。这种实践结构能很好地训练学生运用C++解决实际工程问题的能力(如图1所示)。

图1 实验项目与C++知识的关系

实验教学所设计的工程训练项目以实际应用为主,其目的在于:(1)让学生在工程实践中逐步掌握C++面向对象的基础知识;(2)通过工程项目训练让学生更好地理解C++程序设计语言和C语言相比,其优越性所在,如代码复用、继承、多态等;(3)培养学生工程实践应用和独立解决实际问题的能力。

1.2.2 实验项目学时安排与教学要求

所设计的5个实验项目的具体要求和教学安排如下。

(1)小学生算术运算练习软件

课内学时:4学时,课外学时:3周(不少于12学时)。

具体教学要求:①编写一个小学生算术运算练习软件,每一道算式的要求是:完成加减乘除;加减为100以内的数;乘除为乘法表里的数;被减数大于减数;除法要求能整除;被乘数小于乘数。②程序能够记录做错的题目,并能在下一次做题时,有针对地选择上次的错题进行专门练习。③每道算式出现是随机的。④软件界面要求直观并便于操作。

(2)平面几何图形及关系

课内学时:4学时,课外学时:3周(不少于12学时)。

具体教学要求:①定义四个类:Point,Line,Triangle,Quadrangle。Point功能:一是移动一个点;二是显示一个点;三是可计算这个点到原点的距离。②Line功能:一是计算点到直线的距离;二是直线的斜率;三是判断两条直线的关系:平行、相交(交点坐标)、垂直。③Triangle功能:一是三点能否构成三角形;二是判断三角形是等边,等腰或者是直角;三是计算三角形的面积。④Quadrangle功能:一是判断四点能否构成四边形,并判断其是凹还是凸;二是判断四边形是否是等腰梯形;三是判断四边形是否是平行四边形、菱形、矩形;四是计算四边形的面积和周长。

(3)快乐牧场游戏

课内学时:4学时,课外学时:3周(不少于12学时)。

具体教学要求:①根据给定的牧场场景(牧场主、狼、牧羊、猎狗、狼狗、奶牛),构建牧场的类层次结构,实现农场管理,模拟快乐牧场游戏。②必须使用虚基类和虚函数。③使用继承和多态实现系统的灵活性和多样性。

(4)课题研讨

课内学时:4学时,课外学时:1周。

具体教学要求:①在教学组织中,打破传统的以教师为主导的教学模式,采用以学生为主导的自主学习方式,充分调动学生的参与度和学习的主动性。②学生通过自主学习和查阅资料,完成一个主题的探讨和研究。③学习讨论的主题范围必须是课堂上所没有学习过的,以保证学习过程的探究性和学习内容的新颖性。④学习过程仍以小组进行,结束时,每个小组轮流向全班学生交流分享。

(5)综合项目实战

课内学时:4学时,课外学时:3周(不少于12学时)。

具体教学要求:①利用所学的C++知识,编写一款软件,解决个人生活碰到的实际问题,题目自定。②项目必须要有应用价值,解决某个实际问题。③必须应用所学的面向对象的编程方法和技巧。④要有较为规范的软件文档(问题描述、问题分析、软件设计、测试及应用)。

1.3 面向应用课程设计在课程结束,一般都需要安排为期1周到2周的课程设计,用专门时间进一步巩固知识,提高学生运用C++面向对象技术解决问题的能力[7]。为了和工程应用的实验体系配套,课程设计选题也是以实际应用为主,避免空泛课题,具体选题如表1所示。

表1 面向应用的课程设计选题表

在课程设计中,对每一个题目都提出下列的基本要求。

(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计。

(2)要求在设计的过程中,突出C++语言的类和对象的特征,以多个类实现对每一个子功能的封装;至少定义4个类,每个类包含各自的属性和方法,完成类的详细定义,并建立清晰的类层次;对于复杂算法要求画出清晰的程序流程图。

(3)进行界面设计,实现和用户的友好交互。

(4)所有数据和信息均需要保存在磁盘文件中。

2 实验教学的实施与考核

确定了以工程应用为主线的实践教学体系后,在实施和考核环节中也要采用相应的工程化和系统化的方法,才能达到理想的教学效果。既可以调动学生学习实践的主动性和积极性,又可以让学生将所学运用于实践,在实践中巩固和提高所学知识和技能[7,8]。为培养学生运用面向对象知识分析和解决实际问题的能力提供有效的途径和检验手段。

2.1 实验教学实施

在实践教学活动中,为了让学生对软件开发规范化方法、软件开发流程、团队合作、文档写作与成果展示、口头书面交流等工程实践环节有一个初步的体验和认识,对传统一人一题的封闭式做法进行变革,采用多人共同完成一个小型课题的方式,时间分配上也不拘泥于课堂学习,给学生以充分的信任和自主,以锻炼学生的团队和工程能力。

2.1.1 以自由分组形成工程化团队

在实施过程中,采用项目化管理。项目实施以小组进行,每组推选组长1名,成员3~5人,成员之间要有明确的任务和分工。在实施不同项目时,各个小组必须进行重新划分,保证学生在不同的项目中可以担任不同的角色,扩展学生交流和沟通的范围,以训练每个成员的沟通能力。项目组长负责项目进度、成员分工、成员考核以及项目质量。项目的考评也是以项目组为单位,也就是分级考评。

2.1.2 教学模式采用课堂与课外相结合

受翻转课堂的启发,该实验教学采用课内和课外相结合的方式,不仅解决了C++程序设计实验学时紧张的问题,而且充分调动了学生的积极性。

(1)课堂的任务是下达任务、分析设计、辅导答疑和项目验收。

(2)课后的任务是项目的编码、测试、总结和报告编写。

2.2 实验教学的考核

在构建实践教学考核体系之前,首先需要明确评价的目标和标准,才能采用更为有效的方式对教学目的和效果进行评价。基于工程应用的实践教学,评价考核的目的在于检验学生运用知识解决问题的程度和能力[4,9],而不是知识记忆。评价标准是知识的运用、工程化、规范化的程度以及项目的应用价值等因素。

2.2.1 考核内容

考核的主要内容包括:程序功能是否完善、有没有创新和创意、程序代码是否正确、代码结构是否清晰、编程风格是否规范、陈述和表达是否清楚、对程序代码的理解是否正确、对C++基础知识是否掌握、软件界面是否友好、程序注释是否明了以及教师随机提问等方面。

2.2.2 考核方式

工程实践以学生演示和答辩为依据,从工作量、实用性、创新性、合作性和规范性等多个角度进行考核。根据项目类别和规模的不同,考核方式主要采用以下3种方式。

(1)陈述答辩

由任课教师以答辩形式检查和验收学生小组的项目,主要考查学生工程能力、知识综合运用以及解决实际问题的能力。

(2)作品演示

每个项目组向全体学生演示所完成的项目作品,主要考查作品的设计思路和主要算法以及作品的可用性、新颖性以及应用价值。

(3)学生主导的讨论

学生主导的讨论以任课教师评判为主,从内容的透彻性、实用性、条理性以及表现的活泼性等方面进行考评。

2.2.3 考核管理

借鉴项目管理中的考评方法,实验成绩评定采用分级方式,一方面符合工作实际,另一方面减少了任课教师的工作量。具体来说,分为两个级别:(1)组长/项目考核。由任课教师对项目进行评定,并作为组长成绩。(2)成员考核。由各小组长根据组内成员的表现给出每个人的成绩权值,组长权值为1,其余成员权值不能高于组长。

在实践课程考核上,通过加大实践的过程和能力考核力度,完善考核体系,建立以培养学生工程和实践能力为主的教学评价体系,重点突出能力考核以及考核形式的多样性,体现考核的客观性和公正性。通过多元化考核,可以激励学生自主学习的积极性和主动性,全面提高实践教学质量。

3 结束语

通过调查问卷、学生座谈、课程考核等多种途径,反映了该实践教学体系的合理性和实用性,达到了预期的教学效果。在课题项目实施以来,学生对C++的学习兴趣和学习效果明显提高。特别是解决了教学中学生只会看程序不会写程序的问题,在不断的项目应用实践中,学生对知识的掌握也越来越牢固,解决问题的能力也是越来越强。

在新构建的实践教学体系中,通过强化工程应用、突出工程实践、加强实践考核,使学生在应用技术和方法的同时逐步掌握C++面向对象程序设计的基本原理、概念和方法。沿着分层次工程应用的主线,学生从基本的结构化问题到复杂的面向对象应用项目,在不断的应用实践中,不仅掌握了C++语言的基本知识、原理和方法,而且掌握了C++面向对象程序的设计过程和方法,具备一定的面向对象程序设计能力和运用C++解决实际问题的能力。当然,文中所提出的体系和模式并不是完美无缺的,只是作者实践的积累和总结,教师还可根据学生实际情况和自身教学需要,增加和完善工程应用项目,以培养基础理论和工程实践都合格的应用型计算机技术人才。

参考文献

[1] 季耀君.“面向对象程序设计与C++”教学对策研究[J]. 西南农业大学学报:社会科学版,2013,11(8):168-169.

[2] 白霞,高飞,赵娟.基于计算思维的C++面向对象程序设计教学改革[J].计算机教育,2014(11):7-9.

[3] 谢晋.项目教学法在《C++面向对象程序设计》中的实践[J].电子世界,2014(5):174.

[4] 冯纪南,刘晶,杨德俊.项目驱动式实践教学模式的探索[J].中国现代教育装备,2015(15):88-90.

[5] 黄柳红.C++面向对象程序设计的实验教学研究[J]. 广东技术师范学院学报:自然科学版. 2012, 33(1):70-72.

[6] 费雄伟,陈伟宏.基于工程实践能力的Visual C++程序设计课程改革与实践[J].大学教育,2014(4):114-115.

[7] 彭召意,文志强,朱艳辉.以项目驱动的面向对象程序设计课程教学研究[J].计算机教育,2012(24):95-98.

[8] 王琼.项目教学法在《面向对象程序设计》实践教学环节中的应用[J].湖北广播电视大学学报,2011,31(1):18-19.

[9] 张会.C++面向对象程序设计实践教学改革探讨[J].西昌学院学报:自然科学版,2015,29(1):151-153.

Probing into Engineering-oriented Practical Teaching for the Course of C++ Programming

Zhang Xiaomin, Zhang Feng, Li Bo
School of Software, Nanyang Institute of Technology, Nanyang, 473004, China

Abstract:C++ programming is one of the most important basic specialty courses of the computer-related majors in applied universities and it can directly impact on the study of the follow-up specialty courses and the corresponding professional competence acquisition. Currently, the experimental teaching of C++ programming are mainly classified by verified experiments and basic exercises, which may cause a critical problem that it is difficult to stimulate student interest with the lack of engineering training. To this end, project-based and application-oriented experiment system based on engineering has been designed, and teaching and assessment methods involve integrating intra-curricular and extra-curricular, combining teacher check-passing and students’ defense, and so on. In addition, students can acquire knowledge with the practical course-designing projects, and also apply such knowledge and methods to solve practical problems. Practices show that this approach not only improves the ability of students to use the C++ programming language but also strengthens the students' engineering practice. Both teacher and students are satisfied with the teaching results.

Key words:C++ programming; engineering practice; practical teaching; teaching reform

收稿日期:2015-09-27

作者简介:张晓民,本科,副教授。张枫,硕士,讲师。李博,硕士,讲师。

基金项目:南阳理工学院C++专业核心课程教学改革专项研究课题(编号:NIT2014BKHX-10)。

猜你喜欢
工程实践程序设计实践教学
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
高职高专院校C语言程序设计教学改革探索
高分子材料与工程专业实习模式的探索与实践
基于CDIO模式的机械电子工程专业教学体系改革
六步教学法及翻转课堂在数据库原理与应用教学的应用探讨
茶学专业校企合作实践教学探索
《电气工程毕业设计》 课程的教学设计
基于职业标准的三维数字建模技术课程改革
高职院校商务礼仪课程教学改革探索刍议