游戏开发驱动的Windows程序设计课程教改探析

来源 :教学研究 | 被引量 : 0次 | 上传用户:shiyiliang
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要]介绍了一种以游戏项目开发进行驱动的程序设计课程教学模式,结合Windows程序设计课程的特点,该教学模式将教师与学生、课堂教学与工程实践、课内学习与课外学习融为一体,既减轻了教师教学难度与工作量,又大幅度提升了学生对程序设计的兴趣,通过将游戏项目与课堂知识互相结合,建立起学生初步的软件工程素养,提升了学生的主动学习与动手实践能力。
  [关键词]游戏开发;Windows程序设计;程序设计实验;教学改革
  [中图分类号]G642.0 [文献标识码]A [文章编号]1005-4634(2012)02-0092-04
  0 引言
  Windows程序设计课程由于具备极强的工程应用背景以及明确的能力培养目标而成为国内各理工类院校计算机软件类专业普遍设立的重要课程。大多数院校通常在高级程序设计语言课程(C语言程序设计或C 语言程序设计)以及软件理论基础课程(数据结构或算法设计基础)之后,开设Windows程序设计课程。该课程的教学目的在于培养学生能够综合运用已掌握的初步程序设计方法以及软件理论知识,在深刻理解面向对象设计本质基础上,能够基于可视化开发工具(如Visual C )在Windows平台下进行基本的程序设计。学生经过这门课程的学习之后,不但应该具备在特定开发工具和平台环境下进行熟练的程序设计和实现技能,而且通过该门课程综合性实践练习之后,还应该初步具备软件工程的初步思想,具备实施综合性复杂性较高的软件开发项目所需的基本专业技能,为后续本科高年级课程做好知识储备。该课程的设置与国家在计算机科学教育方面制定的“提高学生素质,注重创新精神和实践能力”的教学目标是高度一致的。
  然而在教学实践中,这门课却普遍存在教师难讲、学生难学的情况。很多教师反映课程知识点太多太散,很难确立学习主线;而学生则普遍感觉这门课程门槛较高,知识点比较密集,不易把握学习重点,实际编程中往往感觉学习目标不明确,无从下手,在不断遭遇困难挫折后逐渐对Windows编程产生了畏难情绪。针对这一不利状况,很多院校采取了一系列的措施,兰红和李淑芝提出“以学生为中心”教学理念的课程改革思想;虞芬、邹睿娟也提出“以学生为学习中心”的改革思想;徐宏喆和聂影等人提出“在教学的过程中利用信息化技术,力求激发学生对课程的学习热情,培养学生动手实践的能力,创造性思维培养”的方法。上述方法虽都有较强的理论依据,但将其运用于Win-dows程序设计课程进行教学,实际效果均不甚理想。
  董晓莹通过教学实践和分析,结合计算机语言类课程的特点,阐述了计算机语言类课程改革的三个方面:课程内容的改革,教学方法、教学手段的改革,实验室建设。面对这些方法和措施,笔者在对Windows程序设计课程教学的实践过程中,大胆突破传统教学思路,将课堂授课式教学与项目案例实践活动相结合,探索出以游戏项目驱动、团队协作的程序设计教学模式,同时采用新颖的过程和结果并重考核方式,激发了学生的学习兴趣,实践表明,这一做法取得了良好的教学效果。
  1 课程教学改革思路
  当前各个院校在Windows程序设计这门课程上设置的学时数各不相同,但基本的布局思路是相似的,即尽量将实践教学实验课的学时数比例适当加大,给学生提供更多的动手编程机会。蔡学森等人通过类似的实验教学改革方法,在实验课内容的改革方面,通过增加设计性、综合性,很好的培养了学生科学实验的素质。实验及课程设计在授课内容上则一般是采取“理论课 实验课”的模式进行。具体授课时,一般的模式是理论课紧扣大纲知识点编排、讲授,实验课在时间和内容上又与理论课相呼应。这种以课程大纲知识点为中心的教学方式虽然有一条主线,但对于程序设计能力培养来说,知识点通常显得过于分散,各个知识点之间欠缺内在逻辑联系性,教师通常针对单个知识点举出案例代码讲解,示例通常抽离了应用背景与场合;实验课内容也是遵照传统模式开展,与理论课内容对应的若干次实验练习构成实验课主体内容,训练要求以实验指导书的方式规定;课程考核一般也按照闭卷打分的方式进行;学生在学习时按这种方式对各知识点依次掌握,普遍反映知识点零乱,不能理解一些被强调为重点的知识的实际应用价值,对各部分内容的内在逻辑性条理不清晰,也不知道在实际软件项目中如何去应用这些知识。此外,示例代码普遍缺乏趣味性,内容枯燥,很难让学生有持久的编程学习热情。
  针对这种情况,对教师和学生的教学/学习背景作了一番调查分析,认为传统的授课方式虽有一定价值,但整体而言比较脱离实际,而且形式比较僵化乏味,考核考察方式也不能很好地真实体现学生对具体编程知识与技能的掌握状况;而当今的软件行业对于培养软件专业人才,尤其培养具备较强的工程问题解决能力的从业人员,提出了较高的要求,现有的授课理念与内容和这种需求存在脱节现象;当代青年大学生思维普遍比较活跃,其思维习惯和生活体验决定了他们对于既有趣味性又有挑战性的游戏娱乐类的软件应用程序比较感兴趣。在这样的调查结果基础之上,决定对Windows程序设计课程的教学方法进行大胆的调整改革,引入一种新的教学模式,即以规模适中的小游戏项目开发作为Windows程序设计课程学习的主体学习活动内容,通过全程的“知识讲解 项目实施”方式完成对整个课程的教学与学习,将Windows编程知识与软件工程的基本理念结合起来,以解决实际问题为推动教学/学习活动的中心点,在不脱离教学大纲的基本要求之下,以激发学生持久的编程热情、养成学生规范的编程习惯作为培养目的,真正使学生经过课程学习之后具备相当的实际软件开发能力,成为行业真正所需的人才。这样的改进既高度符合建构主义以学生为中心,强调学生对知识的主动探索的理念,也为产学研相结合培养社会可用人才提供了一条新思路。经过几个学期的实践,事实证明教学效果良好。
  2 课程实验教学方案设计
  2.1 分阶段软件版本升级式的项目驱动式教学法
  以游戏项目开发方式驱动的Windows程序设计课程一般按照如下方式开展。
  1)实验内容(题目设计)。在每学期开始之前,课程组教师集体讨论分析,设计出一种或几种新学期课程项目的题目。选题原则:题目内容必须涵盖教学主要内容,而且能够最大程度调动学生编程兴趣和热情,题目设立的背景创意均源于实际生活或游戏。笔者认为兴趣是学好一门知识的必要前提,实验题目的设计内容尽可能要让青年大学生喜闻乐见,如要求学生设计实现一款游戏软件(如山寨版的QQ农场、泡泡龙、俄罗斯方块、连连看等)。
  2)项目驱动(阶段性目标和要求)。具体项目推进按照分阶段版本升级式进行,每阶段具有明确的实践和学习目标,对应学生在本门课程中必须掌握的知识、必须具备的能力要求。以“山寨版QQ 农场”这个题目为例,某一学期的题目要求如下。
  设计实现一个山寨版的QQ农场,单机版实现即可,要求用本学期学过的Windows程序课程知识进行设计,分3个版本多次提交,每一个版本均有必作内容和选作内容,确定的提交时限,严禁代码抄袭,每个版本均要求内容格式规范的实验报告(设计开发技术文档)伴随提交。各次大作业提交的成绩形成平时成绩,平时成绩占总成绩比例的70%。
  版本1.0:要求在客户区窗口实现农场耕地的静态绘制,农场附近装饰物(农舍、狗栏、风车等)的静态绘制,能实现对耕地的操作,耕地能改变显示状态、体现这种操作结果,耕地上作物的几个生长阶段能表现出来。
  对应教学大纲知识点内容为:MFC/SDK程序框架的建立;GDI对象绘图;位图的绘制;窗口客户区的坐标计算与变换;定时器。
  版本2.0:增加仓库,商店的交互界面,增加必要动画(如猎狗的行走),增强系统的趣味性,纳入游戏积分规则。扩充浇水、除虫、锄草、施肥等扩展功能。
  对应教学大纲知识点内容为:菜单;加速键;对话框;控件;对话框与视图的交互。
  版本3.0:增加系统数据管理能力,能对系统进行状态保存和重新载入,加入声音音乐效果,编写用户手册。完善设计文档,特别是在文档中要给出各类关键系统结构图,数据流图和算法流程图,对于关键技术的解决要有简要文字分析说明。
  对应教学大纲知识点内容为:文档一视图结构;文件的读写;数据库编程基础。
  这个题目引起了学生们极大的兴趣,而分阶段推进实现设计的好处在于:每一阶段设计目标明确,知识点紧扣教学大纲,各个知识点在运用时体现彼此内在关联性和统一性,无论理论课还是实验课的知识点讲解,都将做到有的放矢。学生学习时不断思考“这个讲解的内容是否能用来解决现在要实现的游戏软件的某个功能”,思维积极性被充分调动起来,课堂气氛显得热烈而生动。教师以解决游戏项目中存在的实际编程问题为导向,抓住学生的关注点和注意力,将各个知识点有机地结合起来,给予学生启发式讲解;学生经过一番钻研分析、查阅资料、编码调试的学习活动,踊跃参与项目的推进,每达到一个版本的设计目标,既掌握了教学大纲所规定的知识内容,也提升了编程技能。
  2.2 过程管理
  通过实践笔者认识到,在改善教学效果、活跃学习气氛上虽可以把宽松活泼作为基调,然而对于课程过程化管理却不能放松,相反在这方面还要提高要求,加强管理。
  传统的作业尤其实验报告提交制,以一种高频度的方式(如每周一次实验均要提交一次实验报告)进行,通过调查,笔者觉得该方式比较不可取,这样做造成文档工作量过大,学生很难再有时间精力对代码进行质量改进,进而导致不少学生逐渐形成应付敷衍提交实验报告的心态和习惯,这丧失了通过实验报告对学生编程活动过程规范化管理的考察目的。与之相反,笔者一方面决定将实验报告提交频度降为项目大作业软件版本的提交次数,但另一方面向学生强调:必须高度重视软件技术文档的质量,新版本的实验报告的内容做了重大调整,要求按照:“(1)设计目标;(2)总体设计思路(必须附有系统结构示意图);(3)系统详细设计;(4)关键算法分析(必须附有算法流程图);(5)测试结果分析;(6)总结”这样的结构进行编写,杜绝文档编写中的马虎和不认真现象,通过此举向学生强化:好的软件首先是好的设计,而好的设计首先通过包含高质量设计图的设计文档体现出来;优质规范的技术文档和优质规范的代码对于程序员来说是同等重要。
  通过教师的强化管理以及严抓按期回收代码文档制度,学生们普遍扭转了把编程序看作是某种个人兴趣支撑下的个人行为的肤浅观念,认识到程序设计是一种体现科学性规范性的严谨的科研生产活动,必须周到细致,刻苦认真。经过一学期的锤炼,学生无论是在编程技术水平还是团队协作能力方面,都得到了极大的提升和增强。
  2.3 突破传统的课程考核方式
  教学课程改革的一个重要环节就是对课程的考核方式做调整。对于Windows程序设计这样一门强调运用多方面知识技能进行相对复杂的软件系统的设计与开发的课程,传统的试卷闭卷打分制很难客观反映学生真实水平,学生成绩会被偶然性因素影响以及放大,并且这样的考核方式也容易造成学生前紧后松的学习心态,而编程技能的提升效果,是需要在一段较长时间内持续专注的努力才可能体现出来。采用游戏项目驱动式的教学模式之后,很快对这种考核方式作了调整,最终的考核方式确定如下:学生成绩由两部分构成:平时成绩(占70%),由各次不同版本软件提交的代码和文档结果打分累计得到;最终答辩成绩(占30%),课程结束不采用试卷闭卷式答题,而采取学生现场答辩方式对实现的游戏项目的设计思想与关键算法进行讲解,教师当场给出成绩。两项内容相加得到学生Windows程序设计课程的总成绩。
  新的考核方式具有如下优点:(1)注重学生在一段时间内能力的持续增长而非一时的表现。既能充分体现每位学生的真实技能水平,也能使学生树立起对待科学知识的认真严谨的治学态度,最终成绩体现了更多的真实公正性。(2)教师也可以根据不同阶段版本的作业批改情况,对发现的普遍性问题做及时讲解以及研究方向的调整,对于学生学习状况处于随时把握之中。
  然而这种考核方式也有不利之处,会造成教师作业批改量相对过大,教学负担增加。
  3 课程教学效果剖析
  经过几个学期的实践,游戏开发驱动式的Windows程序设计课程教学改革取得了比较明显的成效(见表1),主要表现在以下几方面。
  
  3.1 教学实践内容有了具体针对性,与社会生产需求结合更加紧密
  程序设计教学的内容不应该脱离实际的社会生产具体需求,否则就有闭门造车之嫌。当前,各类游戏类软件(手机游戏、网络游戏等)开发无疑已成为应用软件开发领域的热点之一,Windows环境下的许多重要的通用编程技术(GUI界面、数据库、网络、3D动画)均毫无例外地在这一领域内得到了充分的运用和展现,这些知识的基础部分正是Windows程序设计课程教学大纲之中所要求的掌握重点。新的教学方法设定的游戏项目,一般其提出背景都来自于实际软件开发过程当中(如有一些技术问题是一些软件开发类论坛上经常会讨论的),学生通过一个要求比较全面的游戏项目研发的锻炼,很好地对课程知识点进行了综合运用,充分体现了学以致用的务实精神。由于编程技术的通用性,课程学习过程掌握的知识与技能也能很快地被运用到其他一些软件开发领域(如信息系统、虚拟现实、嵌入式软件)当中。通过这样的课程锻炼培养出的软件开发类人才无疑更能满足各类机构和企业的实际需求。
  3.2 在新的高度理解和开展程序设计开发活动
  Windows程序设计作为一门建立在低年级基础软件开发类课程之上的软件开发“高级”课程, 无论在编程思路的讲解还是编程思想的阐释,都不能也不应该停留在仅仅对某些局部的知识语法细节进行低层次的强化灌输的层面上。通过一个类似于真实软件产品的游戏项目开发过程,教师要让学生明白,应该更多地从整体系统的角度对实际问题进行抽象建模,也应该更多地从框架的层次而不是代码的角度去看待软件,应该更多地关注软件的结构是否具备良好的可扩展性和可复用性,要使学生明白,决定软件产品是否成功更多地取决于系统设计过程而非代码编写过程;通过将软件工程的开发过程具体地与实际项目结合起来,让学生充分体会到软件工程的许多概念和步骤不再抽象;规范的代码文档管理以及有效的团队人员交流,使学生对实际开发团队的活动有了比较直观的认识和理解。经过这样的理念熏陶和实践锻炼,学生对于软件开发有了全新的体验和认识,也更能符合当今软件开发领域对于高层次软件开发人才的培育需求。
  3.3 有力激发学生对程序设计学习的兴趣和热情
  Windows程序设计课程无疑是存在不少的知识点和学习难点,能让学生持续持久地在这方面投入热情和精力,兴趣是极其关键的。通过分析当代青年大学生自身特点,游戏项目驱动式的教学无疑是深得人心的,学生在这样的学习过程中既能感受到编程带来的挑战性,也能体验到研制游戏的趣味性,将学和玩有效地结合一体,最终对程序设计和软件开发产生了极大兴趣,不少同学甚至决定今后将从事实际的游戏产品开发。课程学习结束之后,大部分同学要求教师继续推荐一些Windows程序设计开发方面深入的高级著作,明确表示将在这方面进行持续深入的探索学习。
  3.4 增强学生自主解决问题的意识和能力
  在游戏驱动式教学当中提出的很多技术问题都是既具有趣味性也具有相当的挑战性的,促使学生为解决具体问题进行了多方面的努力。一般经过第一阶段的学习,学生普遍都意识到需要综合运用多种手段(联机文档、网络查询、文献查阅、教师答疑等)才能解决问题,而严格的代码抄袭审查制度,使学生们普遍觉得应该尽可能依靠自身力量解决问题。通过学习,学生在运用编程技巧解决综合性编程方面的能力有了大的提高,抄袭现象得到很好的扼制,自我学习能力普遍得到较大的提升。
  3.5 有力促进学生课外科技活动的开展游戏驱动式的Windows程序设计课程教学法的成功,为学生课外科技活动提供了直接的模版参考借鉴作用。通过在实验中心开展教学经验推广活动,许多在实验中心立项的学生科技项目直接采用这种游戏项目开发驱动式进行管理,这类项目一般侧重对某一具体技术点的深入研究与探索,也取得了很好的实践效果。目前实验中心投身于学生课外教学科技活动的学生数目逐年增多,队伍不断壮大,证明了教学改革思路的正确性。
  4 结束语
  传统的以教材知识点为中心的“课堂讲授 上机练习”教学模式,在Windows程序设计课程的教学活动中效果不理想。通过对大学生学习心理的充分分析与探索,引入了一种以游戏软件项目开发驱动式的教学模式,它的特色可以用“知识讲解 项目实施”来概括。新的教学方式很好地激发了学生的科技兴趣,有效提高了学生的程序设计能力,初步奠定了学生的软件工程素养,取得了比较好的教学效果。同时,这种方式也为如何将课堂教学与产业需求关联挂钩,培养实用型计算机专业人才带来一种新的思路。
  
其他文献
[摘 要] 面向卓越工程师培养的课程教学改革是“卓越工程师教育培养计划”得以贯彻实施的落脚点,也是各参与单位面临和亟待解决的实际问题。以土木工程专业的专业基础课土力学为例,以着力培养学生的工程实践能力和工程创新意识为目标,从培养学生综合素质的教学内容、实践教学、创新训练和双语教学等方面,以及从提高教学效果的教学方法和教学手段上,对土力学课程开展系统的教学改革,以实现培养专业知识扎实、实践能力强、创
路径规划对AGV(automated guided vehicle)完成自主导航起着关键性的作用,针对这点出发,提出一种全局采用改进的A*算法,局部在保证全局最优的情况下采用融合A^*(A-star)和动
针对目前国内环氧乙烷产能迅速增加,阶段性供需失衡矛盾突出的情况,从环氧乙烷(EO)产业的发展现状及下游产品格局出发,分析并展望EO产业的发展方向。
2015年9月13日,中共中央国务院出台了关于混合所有制改革的相关文件《关于深化国有企业改革的指导意见》,国企改革已然步入新的征程。通过制定持股股东多样化、健全法人管理架构和企业核心的运行机制,国企改革踏入了深化改革与标准化治理的新时期。投资效率决定着企业未来价值,是评估企业业绩的重要指标,然而由于信息不对称、委托代理关系等原因,非效率投资行为普遍存在。本文深入研究了国企在混合所有制改革之后其投资
仪器分析实验是仪器分析课程实践教育的重要环节,是培养学生动手能力和创新能力的重要学科,本文采用网络调查和部分高校实地调研的方法,对全国30所985重点高校仪器分析实验课
目的 回顾性分析采用强化清髓性预处理方案的单份非血缘脐血移植(sUCBT)治疗FLT3-ITD突变阳性急性髓系白血病(AML)的疗效。方法 2012年6月~2018年12月中国科学技术大学附属第
随着计算机控制技术的发展,人们逐渐意识到时滞现象广泛存在于控制系统中,尤其化工反应控制系统以及复杂的网络控制系统。时滞往往会影响系统的性能,甚至导致原有系统不稳定
[摘要]创建学习型党支部既是加强高校教师党支部建设的重要栽体和长效机制,也是推进高校学习型党组织建设的重要基础和有效措施。有效开展组织学习是高校教师党支部创建学习型党组织的关键所在,组织学习的有效激励是有效开展高校教师党支部纽织学习的重要手段。增强激励意识、夯实激动基础、优化激励环境、把握激励方法、强化激励效应是实现高校教师党支部组织学习有效激励的重要内容。  [关键词]教师党支部;组织学习;激励