彭文 王金睿 阎光伟 徐琳茜
摘 要 为了提高VC++课程对学生提升综合能力尤其是动手能力的作用,针对该课程的特点及教学过程中存在的问题,提出四位一体的课程授课模式,以教学为基础,将科研项目、竞赛活动和专家讲座融入授课过程中。通过课程实践验证,该授课模式适应学生的认知过程,对于提高学生解决问题能力和动手能力效果显著。
关键词 VC++;案例教学;科研项目;竞赛;专家讲座
中图分类号:G642.3 文献标识码:B
文章编号:1671-489X(2017)08-0103-03
Abstract In order to improve the students comprehensive ability, especially the practical ability, a four-in-one teaching model aiming at characteristics of the VC++ and problems in the teaching process was put forward in this paper. It is based on the teaching combines the research projects, competitions with expert lectures into the teaching process. Through the curriculum practice, the teaching mode adapts to the students cognitive process, which is significant for improving their problem-solving and practical ability.
Key words VC++; case teaching; research projects; competitions; expert lectures
1 引言
VC++课程的授课内容包括C++语法与Visual C++开发工具的使用,是提高学生编程能力的关键课程,目前已经被众多高校作为理工科的必修环节。由于C++语言知识点难、概念复杂、规则多,而VC++包括层次结构复杂的MFC类库,并且AppWizard自动生成的程序专业化程度高、代码量大,这些都使得学生掌握课程更加困难。
针对这种情况,广大教育学者开展了不同方式的课程改革,尤其是基于案例驱动成为最为主流的教学模式。赵燕萍以四则运算器为案例,讲述了案例教学法的实施过程,并将其应用于实际教学,取得不错的效果[1]。魏春英则从案例引入到模仿,再到改写,最后到编写,逐步引导学生不断提升程序设计能力[2]。曹西征分析了知识驱动教学法的弊端,提出实例驱动教学法,并结合实例说明这种教学法的优势和教学过程,同时构建与VC++相适应的模糊评价模型来评估学生掌握VC++程序设计的能力水平[2]。赵晓平等从理论和实践两个方面,阐述案例教学在Visual VC++课程教学中的应用[3]。
除此之外,黄华军针对C++教学中存在的问题,从教学计划、教学内容、教学方式和考核等四个方面阐述基于“三步法”的教学改革探索思路[4]。徐晖将基于榜样的学习方法应用于VC++教学中,学生通过联想、回忆、概括等形式独立地完成一个榜样,以解决相似的问题[5]。Michael Dawson将每个知识点的理解和学习都通过一个游戏来进行,但需要大量的学习及实践时间[6]。白霞等提出使用内容重组方式,将计算思维能力培养融入C++程序设计授课过程中[7]。刘井莲等从教学环境、授课人数、授课教材、考核方式等环节入手,探讨C++课程的改革过程。实践表明,教学效果显著,激发了学生的学习兴趣,提高了学生的面向对象程序设计能力[8]。
上述学者提出的教学改革多是从教学方法上做出探索与改革,但VC++课程不同于传统的理论课程,更侧重于培养学生分析设计和实际动手的能力。因此,笔者结合实际教学情况,提出四位一体的VC++课程授课模型,从教学、科研、竞赛和讲座等多方面入手,为学生构建一个快速提升程序设计能力的框架。
2 VC++课程教学存在的问题
VC++课程在华北电力大学属于必修课程,目前采用基于案例的教学模式,课程包含较多的上机学时。学生的程序设计能力较之前有了一定的进步,但课程教学仍然存在以下问题。
1)案例内容不合理,有些案例逻辑关系过于复杂,使得学生将大量精力投入其中,从而忽视了知识点的掌握。
2)案例规模不合理,有些功能复杂的案例横跨几节课的知识点,这使得原来没有关系的知识点产生相互影响,导致能力相对较差的学生因为没有掌握前面的知识而影响后续知识的学习。
3)学生创新能力不足,只能参照案例开发程序,对于知识点的灵活应用较为欠缺。
3 四位一体的授课模式
针对上述问题,本文提出一种四位一体的课程授课模式。该模式以教学为基础,将科研项目、竞赛活动和专家讲座融入授课过程中,如图1所示。其中教学环节仍然以案例为主,但采用改进后的案例,便于知识点的授课。高校教师除教学任务外,都会承担一定量的科研项目,从授课教师的众多科研项目中筛选出适合课程的模块,作为学生的课后作业。对于完成较好的程序可经过加工后成为未来授课的案例。每年都会有全国、省、市、校等多级的程序竞赛,鼓励学生积极参加,将所学内容应用到实際问题的解决过程中,以检验知识点的掌握水平。在授课过程中,选取合适时机邀请专家为学生做讲座,主要围绕行业最新技术发展和当前流行软件介绍为主题。这虽然不能对课程产生直接影响,但有助于学生扩展视野,了解更多的实际案例,从而激发学生的设计兴趣,真正实现从程序编写到程序设计的转变。
基于合理案例的知识教授 案例教学是一种利用模拟或者重现现实生活中的一些场景,让学生把自己融入案例场景,通过讨论或者研讨来进行学习的教学方法。在教学过程中,要经过事先周密的策划和准备,使用合理的案例来引导学生明确学习目标,并通过模仿案例来主动探索并掌握知识。总结多年的教学经历,笔者认为VC++课程中案例的选择应遵循以下原则。
1)知识点突出,逻辑关系简洁。案例中最核心的部分一定是要讲授的知识点,不能掺杂复杂的逻辑关系。如在讲解C++类的定义过程中,要突出类的结构、成员变量和成员方法的定义格式。如果某个成员方法中包含较为复杂的算法,则会分散学生的精力,无法集中于知识点的理解。
2)规模适中,跨度合理。案例的规模直接影响到知识点的分布情况,过小的案例只能包含有限的知识点,会导致授课过程中频繁介入不同的案例;反之,案例规模过大,会使得原本无关的知识点产生约束条件,即前续知识点没有掌握,直接影响后继知识点的理解。依据教学经验,案例的规模在1~2次课时能讲解完为最佳。
3)情景典型,符合常理。案例的选题一定要与知识点相匹配,最大限度体现知识点在案例中的作用,并且是学生日常学习和生活中熟知的场景。如作为密码使用的文本框嵌入登录界面案例中,就是非常典型的使用方法。再如图形基类与矩形子类、圆形子类的关系就适用于讲解抽象类与纯虚函数等知识。反之,如果用树控件来实现学生信息的管理,就不是典型的使用方法,容易误导学生。
4)不断完善,与时俱进。案例的选题背景与内容编排要随着技术的发展不断优化,这样更符合学生的认知。如最近流行的微信软件,比较火爆的游戏场景,日益强大的电子商务等,都可以经过加工变为新颖的案例,这样就可以避免一味地使用立意陈旧的案例,更容易吸引学生的眼球。
基于科研项目的能力提升 在课堂中讲授的知识点,学生一定需要获得更多的练习机会才能巩固学习效果,才能提升动手能力。与此同时,高校教师会承担一些科研项目,如果能够将两者很好地结合,就可以达到事半功倍的结果。
科研项目通常分为工程类与研究类,工程类项目中会包含用户管理、角色管理、权限管理等模块,这些都包含类层次设计和对话框界面开发等知识,完全能达到锻炼的目的。此外,一些项目中数据图形化展示模块也有助于学生理解视图/文档结构。研究类的项目侧重于算法的研究与创新,但可根据具体问题,由教师设计一个算法结果图形化展示和效果对比的软件开发方案,满足课程的要求。
在模块的开发过程中,要以实际项目的标准严格要求程序的完成情况,如数据有效性的检验、界面美观性的设计和用户交互性的操作。这样,一方面学生接触了实际项目,综合能力得到明显提升;另一方面,负责人可筛选完成的作业,将符合要求的纳入项目中,从而加快项目进度。
基于竞赛驱动的实践应用 竞赛既可以满足学生对荣誉的追求,又可以将所学知识应用于实践,是课堂教学的有益补充。每年全国、省、市、学校各级会举办一系列面向工程类专业的竞赛,如全国大学生创新创业训练项目、“电力科技杯”大学生课外学术科技作品竞赛等。在VC++课程中,对话框及文档/视图可以作为参赛题目的界面显示技术,并可借助网络上开源的插件进行美化。教师尽可能鼓励更多的学生参加竞赛,并且改变以往的指导模式,全程参与,为学生提供研究与学习的场地,并给予技术上的指导,从题目制定、技术选择、功能设计到报告撰写,规范化的流程必然促进学生的成长。
基于专家讲座的视野拓展 在课程讲授的最后阶段,安排一次专家讲座,以改变课堂教学相对严肃的气氛。讲座的专家可以通过学校、学院或者其他教师协调,邀请参与过VC++项目开发的企业技术人员,或者是毕业后从事相关技术开发的学生,并可建立长期的合作关系。讲座的内容围绕VC++技术在各个行业的应用,重点讲解行业软件的设计架构、用户操作及应用效果。在讲座过程中,学生可跳出知识细节,从更宏观的角度看待问题,更容易理清楚课程脉络,可最大限度避免常见的陷入细节现象。
4 应用效果
华北电力大学的VC++课程开设在大二第一学期,针对2014级学生采用本文提出的四位一体课程授课模式。在整个学期授课过程中,优化原有教材中的若干案例,修改后的案例讲解基本能控制在一次课程范围内。如将“绘图系统”拆分为三个案例:图形的绘制、画笔的使用和画刷的使用。
通过整理分析,从教师的科研项目中剥离出五个题目:小型基建项目管理、系统权限管理、Excel文件导入模块、电力企业数据对比显示和光伏功率预测结果展示等。以课后作业的形式布置给学生,在课程考核之前,大部分学生基本完成相应的功能。
在这一学期,全年级共有10多组40余名学生参加了学校组织的大学生创新创业计划项目。在VC++课程中虽然不能直接指导竞赛,但绝大部分学生选择VC++作为开发环境,在查找与题目相关的其他资料基础上,能够将所学内容应用到具体场景,加深对课程的理解和掌握。
由于其他原因,本次授课过程未能邀请到知名企业人员做相关讲座。为了弥补,课程组教师整理参与的所有科研项目,并从网络上搜集相关软件系统的说明,为学生做了一次课程的补充。
在课程考核中,最终成绩由试卷+上机两部分组成。与上一届学生相比,本届学生的最终成绩有五分左右的提升,其中试卷部分基本持平,但上机部分都一定程度的提高。此外,在学期末还有为期两周的VC++课程设计。从学生提交的程序代码和报告来看,表现出:1)课程设计题目更加多样,自选题目的学生人数较上届增加;2)同样题目的课程设计,在功能细节上更加完善。
5 结论
针对VC++课程授课过程中对学生动手能力提升的欠缺,笔者结合多年的教學经验,提出基于“教学/科研/竞赛/讲座”四位一体的VC++课程授课模式。实践证明,该方法在多种维度刺激了学生的学习兴趣,有利于提高学生分析问题和解决问题的能力,在教学中取得较为理想的效果。
参考文献
[1]赵燕萍.案例教学法在Visual C++程序设计教学中的探索[J].长春理工大学学报,2012(3):221-222.
[2]魏春英.案例教学在《VC++面向对象程序设计》课程中的应用[J].济宁学院学报,2009(3):33-34.
[3]赵晓平,赵秀莉.案例教学在Visual C++课程教学中的应用[J].中国科教创新导刊,2011(22):93.
[4]黄华军.C++程序设计教学改革探索[J].计算机教育,
2014(2):38-41.
[5]徐晖,严圣华. NIIT教学法及其在VC++教学应用的研究[J].计算机光盘软件与应用,2012(21):283-284.
[6]Dawson M. Beginning C++ through game Programming third edition[M].Course Technology PTR,2011.
[7]白霞,高飞,赵娟.基于计算思维的C++面向对象程序设计教学改革[J].计算机教育,2014(11):7-9.
[8]刘井莲,赵卫绩.C++教学改革与探索[J].赤峰学院学报:自然科学版,2012(17):209-210.