刘林峰1,刘业2
(1. 南京邮电大学 计算机学院,江苏 南京 210023;2. 中国科学技术大学苏州研究院 软件学院,江苏 苏州 215123)
摘要:分析传统计算机专业实践类课程所面临的问题,针对课题陈旧、技术滞后等现状,提出一种基于项目导向的实践类课程教学方法,指出该方法不仅可以提高学生参与实践类课程的积极性,有助于改善教学效果,还可以为教师实施科研项目提供一定的软件测试依据。
教育期刊网 http://www.jyqkw.com
关键词 :计算机专业;实践类课程;项目导向教学法
基金项目:南京邮电大学教学改革研究项目(JG00414JX24);国家自然科学基金项目(61373139)。
第一作者简介:刘林峰,男,副教授,研究方向为计算机网络和博弈理论,liulf@njupt.edu.cn。
0 引言
计算机实践类课程如程序设计、课程设计等是计算机专业的重要基础性课程,对于计算机专业学生编程能力、思维模式和实践能力的培养起到举足轻重的作用。实践类课程通常是在学生系统地学习某种高级程序设计语言的基础上,教师通过设置和指导涵盖综合知识点的程序或软件开发课题,期望学生通过课题的实践巩固高级程序设计语言语法和逻辑的一种直接而可行的方式。然而,大多数情况下,教师所设置的课题较为陈旧,多为各类信息管理系统或者传统算法的设计与实现,少数甚至与当前计算机专业技术背景脱节,因此导致学生对实践类课程的认知度下降,抑制学习和探索的兴趣,从而影响实践类课程的设置初衷和实际效果。
项目导向教学法[1]是依托教师引导和学生实施而共同完成科研项目某个部分的教学方法,本质上属于建构主义模式[2]下的一种新型教学方法。著名的心理学家皮亚杰提出的建构主义学习理论认为,兴趣对于学习的重要性不言而喻;教育心理学家认为,学习兴趣是一种力求认识世界、渴望获得各种知识的主观意识倾向,这种倾向对于学习的效率和效果起着重要的作用。学生对课程产生兴趣后会处于积极主动状态,可以达到自主学习的目的。教师是意义建构的帮助者和促进者,而不是知识的提供者和灌输者;学生是知识信息处理的主角,是意义建构的主动者,而不是被动接收者。
在项目导向教学法的实施过程中,教师需要根据实践课程的时长和学生的接收程度抽象、简化出科研项目中具体任务;学生以研究小组为单位,集体制订研究计划和任务分工,通过项目任务的理解、探索和解决等步骤达到提高专业技能和动手能力的目的。
1 计算机实践类课程现状及存在问题
1.1 计算机专业本科生特点
当前计算机技术发展迅速并逐步趋于成熟,日常生活中充斥着各种计算机的应用,极大地便利了人们的生活,因此大学生基本都具备一些计算机方面的常识,而作为计算机专业本科生则更加关注专业相关技术的最新进展及新型技术的出现,对专业知识有着更深更广的涉猎,重视计算机专业基础课程学习,在实践类课程开始之前已经打下良好的基础。此外,教师在对计算机专业学生的培养上通常更侧重其获取新知识、应用新知识、团结协作以及自主创新等方面能力。这些特点都为项目导向教学法的开展提供了必要条件,使得在实践类课程中引入科研项目具有可行性。
1.2 现有教学法及缺点
现有应用于实践类课程教学的教学方法主要包括任务驱动教学法[3]、案例分析教学法[4]和竞赛驱动教学法[5]。任务驱动教学是以任务为主线开展的教学方法,是一种探究式教学模式,在实施步骤上与项目引导教学法比较类似,但是任务驱动教学通常使用背离前沿技术的课题并且在实施过程中没有教师的主导参与,包括研究背景介绍、课题抽取和多指标评价等,因此计算机专业学生的参与积极性不高,教学效果也受到限制。案例分析教学的核心是鼓励学生表达对问题分析及解决过程的想法,通过教学双方互动研讨,学生在解决课题的实践中掌握知识、熟练技能、侧重实用,但这种方法缺乏团队成员之间的交流和协作,没有形成项目学习的共同体,不利于学生团结协作能力的培养和开放性思维的形成。竞赛驱动教学法中成果评定一般都取决于最终程序的操作效果,因此学生往往关注程序的功能是否实现,而忽略程序实现方法的选择和取舍。
1.3 项目导向教学法的引入
计算机实践类课程期望能够巩固学生的专业知识、提高动手能力和强化创新意识,从而达到提高综合实践能力的目标,该过程中需要学生对课题具有自发的探索意愿,能够发挥主观能动性并学以致用,把零散知识碎片融会贯通。教师在该过程中扮演着课题提供者和引导者的角色,帮助学生尽快理解项目背景和课题要求,同时在学生实践过程中对选用开发方法和软件开发进程进行必要的管理和指导。项目导向教学法正能契合计算机实践类课程的教学,因此笔者提出一种基于项目导向教学法的实践类课程改革思路。
2 基于项目导向教学法的实践类课程教学
以科研项目导向的实践类课程教学通常包括课题设计与引导、项目实施、项目验收和教师评价4个步骤,如图1所示。
1)课题的设计与引导。
首先,教师应从科研项目中选取合适的内容作为实践类教学的素材,必须兼顾学生的专业基础以及课题的趣味性、可探索程度、技术涵盖面等多个方面,合理选择教学素材是项目引导教学法的关键之一;其次,由教师介绍科研项目的研究背景和内容,不仅可以拓展学生的视野,还可以帮助学生加快理解素材的内容与本质;最后,教师和学生共同完成对课题的理解,教师充当引导者角色,学生根据对科研项目背景的了解,尝试以问答方式理解课题的内容,分析出所需要运用到的技术和知识点。
2)项目实施。
首先,学生需要进行分组(5~6人为宜),各组按照课题要求指定实施计划,计划中应包括项目的进度安排、个人分工和软件总体目标等;其次,根据软件总体目标进行功能模块划分,需要针对软件各模块确定需采用的算法及开发方法,必要时应对算法及方法进行一定的优化;最后,学生根据软件设计结果进行实际的编码开发,开发过程应严格遵守软件工程的开发原则,当开发完成后需要进行软件测试,软件开发和软件测试一般是一个多次循环迭代的过程,即测试结果应作为软件修改和进一步开发的依据,直至软件测试结果符合项目的预期。
3) 项目验收。
在项目实施环节中,除了根据项目要求开发软件外,学生还需要在制订计划、确定算法和方法以及软件测试阶段撰写相应的需求分析报告、软件设计报告和软件测试报告,因此项目的验收包括对软件成果和报告文档的验收,软件成果要求程序结构合理、逻辑清晰、模块划分正确和输入输出准确,报告文档要求内容严谨、格式规范,能够反映学生对项目内容的理解和思考。
4)教师评价。
教师评价必须结合学生所开发软件的运行结果正确性、算法巧妙性以及各类文档规范程度等进行综合评判,同时还必须关注每位学生在小组中的分工情况,对学生的理解能力、分析能力和动手能力进行评价,得到一个较为客观的评价等级。
5)教学案例。
我们给出一个典型案例用以解释该方法的具体实施过程,案例结合我们所承担的国家自然科学基金项目“基于信号不规则性的水声传感器网络关键技术的研究”,涉及水下声通信传感器网络的部署、定位、拓扑控制及路由转发等多项技术,分为以下6个步骤。
(1)教师选取并抽象该项目中拓扑控制技术的研究部分,将节点行为采用罗伯特·阿克塞尔罗德所提出的多方囚徒困境重复博弈[6]方法:博弈双方分别采用合作和背叛两种行为将会得到不同的结果,如图2所示。现需要用软件表现出水下节点各种行为,模拟出节点的善良性、自私性、可报复性、宽容性等典型特点,参照图2,其中R表示双方合作时(即节点互相转发数据报文)得分,S表示自己合作但对方背叛时(节点为对方转发,但对方不为自己转发数据)得分,T表示自己背叛但对方合作时(节点不为对方转发,但对方为自己转发)得分,P表示双方都背叛时(互不转发)得分。
(2)教师向学生解释课题背景和意义、课题所需解决的主要问题及可能涉及的主要方法,指出在实施过程中可以使用的工具、语法和软件设计方向。
(3)学生在理解课题之后需要分析问题并设计相应的策略,分别形成需求分析报告与软件设计报告,交由教师进行审核。
(4)学生根据步骤3中的软件设计,完成软件程序的开发工作,教师验收开发成果,开发程序界面及部分核心代码分别如图3和图4所示。
(5)学生使用自己程序与他人程序进行对抗,每轮对抗结束,学生还可以根据本轮结果重复步骤3和4以调整策略和改善程序,进入下一轮对抗。
(6)教师在评价学生成绩时根据学生的对抗得分及在课程参与过程中分析问题、调整策略和改进程序的表现,进行成绩判定。
该项目中提取出的节点博弈课题并没有一个标准答案,每个学生的最终得分取决于自己的程序策略和他人的程序策略,如何预测他人策略并以此设计自己的策略成为一个可以无限探索的方向。该课题是前沿技术的一部分并具有较强的趣味性,能够引起学生积极参与课程的极大兴趣,同时该程序结果也可为教师科研项目的继续研究提供一定的实验测试依据。
3 结语
当前计算机专业实践类课程存在课题陈旧、偏离前沿技术、学生积极性不高等诸多问题,影响了最终教学效果。针对该问题,笔者提出一种以科研项目为导向的实践课程教学方法,在计算机专业实践类课程中引入科研项目中的部分内容,加以简化抽取形成教学素材,由教师引导学生参与项目的研究与开发,不仅激发了学生的学习兴趣,提高了实践类课程的教学效果,还使学生对前沿研究及技术有了更深的了解,提高了学生的开放性思维能力及实践动手能力。
教育期刊网 http://www.jyqkw.com
参考文献:
[1] 尹春华, 胡炬, 于瑛英. 项目导向教学法在管理类课程中的应用[J]. 中国电力教育, 2012(16): 73-74.
[2] 田秀霞, 彭源, 张安勤, 等. 基于建构主义理论的信息安全专业C++课程群教学模式改革[J]. 计算机教育, 2013(15): 69-72.
[3] 冀松. 兴趣教学法在高级语言程序设计语言类课程中的应用[J]. 教育探索, 2012(3): 52-53.
[4] 王岚. 程序设计课程教学法探讨[J]. 中国职业技术教育, 2009(11): 65-67.
[5] 王桂平, 冯睿. 程序设计课程实践教学的改革探索[J]. 现代教育技术, 2010(增刊1): 51-53.
[6] 罗伯特阿克塞尔罗德. 合作的进化[M]. 上海: 上海人民出版社, 2007: 5-21.
(编辑:宋文婷)